function __attrib_complete_args -d 'Function to generate args' set -l current_token (commandline -tc) switch $current_token case '+*' echo -e 'r\tSet the Read-only file attribute a\tSet the Archive file attribute s\tSet the System file attribute h\tSet the Hidden file attribute i\tSet the Not Content Indexed file attribute' | awk -F '\t' "{ printf \"$current_token%s\t%s\n\", \$1, \$2 }" case '-*' echo -e 'r\tClear the Read-only file attribute a\tClear the Archive file attribute s\tClear the System file attribute h\tClear the Hidden file attribute i\tClear the Not Content Indexed file attribute' | awk -F '\t' "{ printf \"$current_token%s\t%s\n\", \$1, \$2 }" end end complete -c attrib -f -a '(__attrib_complete_args)' complete -c attrib -f -n '__fish_seen_argument -w s' -a d \ -d 'Apply attrib and any command-line options to directories' complete -c attrib -f -n '__fish_seen_argument -w s' -a l \ -d 'Apply attrib and any command-line options to the Symbolic Link' complete -c attrib -f -a + -d 'Set the file attribute' complete -c attrib -f -a - -d 'Clear the file attribute' complete -c attrib -f -a /s \ -d 'Apply to matching files in the current directory and all of its subdirectories' complete -c attrib -f -a '/?' -d 'Show help'