Skip to content

Instantly share code, notes, and snippets.

@ridiculousfish
Created December 2, 2018 21:45
Show Gist options
  • Select an option

  • Save ridiculousfish/652f6fb05e03bc76e110c4adc1d9ecc7 to your computer and use it in GitHub Desktop.

Select an option

Save ridiculousfish/652f6fb05e03bc76e110c4adc1d9ecc7 to your computer and use it in GitHub Desktop.
complete(1) fish complete(1)
NNAAMMEE
complete
ccoommpplleettee -- eeddiitt ccoommmmaanndd ssppeecciiffiicc ttaabb--ccoommpplleettiioonnss
SSyynnooppssiiss
ccoommpplleettee ( -c | --command | -p | --path ) COMMAND
[( -c | --command | -p | --path ) COMMAND]...
[( -e | --erase )]
[( -s | --short-option ) SHORT_OPTION]...
[( -l | --long-option | -o | --old-option ) LONG_OPTION]...
[( -a | --arguments ) OPTION_ARGUMENTS]
[( -k | --keep-order )]
[( -f | --no-files )]
[( -r | --require-parameter )]
[( -x | --exclusive )]
[( -w | --wraps ) WRAPPED_COMMAND]...
[( -n | --condition ) CONDITION]
[( -d | --description ) DESCRIPTION]
ccoommpplleettee ( -C[STRING] | --do-complete[=STRING] )
DDeessccrriippttiioonn
For an introduction to specifying completions, see Writing your own
completions in the fish manual.
+o COMMAND is the name of the command for which to add a completion.
+o SHORT_OPTION is a one character option for the command.
+o LONG_OPTION is a multi character option for the command.
+o OPTION_ARGUMENTS is parameter containing a space-separated list of
possible option-arguments, which may contain command substitutions.
+o DESCRIPTION is a description of what the option and/or option
arguments do.
+o -c COMMAND or --command COMMAND specifies that COMMAND is the name of
the command.
+o -p COMMAND or --path COMMAND specifies that COMMAND is the absolute
path of the program (optionally containing wildcards).
+o -e or --erase deletes the specified completion.
+o -s SHORT_OPTION or --short-option=SHORT_OPTION adds a short option to
the completions list.
+o -l LONG_OPTION or --long-option=LONG_OPTION adds a GNU style long
option to the completions list.
+o -o LONG_OPTION or --old-option=LONG_OPTION adds an old style long
option to the completions list (See below for details).
+o -a OPTION_ARGUMENTS or --arguments=OPTION_ARGUMENTS adds the
specified option arguments to the completions list.
+o -k or --keep-order preserves the order of the OPTION_ARGUMENTS
specified via -a or --arguments instead of sorting alphabetically.
+o -f or --no-files specifies that the options specified by this
completion may not be followed by a filename.
+o -r or --require-parameter specifies that the options specified by
this completion always must have an option argument, i.e. may not be
followed by another option.
+o -x or --exclusive implies both -r and -f.
+o -w WRAPPED_COMMAND or --wraps=WRAPPED_COMMAND causes the specified
command to inherit completions from the wrapped command (See below
for details).
+o -n or --condition specifies a shell command that must return 0 if the
completion is to be used. This makes it possible to specify
completions that should only be used in some cases.
+o -CSTRING or --do-complete=STRING makes complete try to find all
possible completions for the specified string.
+o -C or --do-complete with no argument makes complete try to find all
possible completions for the current command line buffer. If the
shell is not in interactive mode, an error is returned.
+o -A and --authoritative no longer do anything and are silently
ignored.
+o -u and --unauthoritative no longer do anything and are silently
ignored.
Command specific tab-completions in fish are based on the notion of
options and arguments. An option is a parameter which begins with a
hyphen, such as '-h', '-help' or '--help'. Arguments are parameters
that do not begin with a hyphen. Fish recognizes three styles of
options, the same styles as the GNU version of the getopt library.
These styles are:
+o Short options, like '-a'. Short options are a single character long,
are preceded by a single hyphen and may be grouped together (like
'-la', which is equivalent to '-l -a'). Option arguments may be
specified in the following parameter ('-w 32') or by appending the
option with the value ('-w32').
+o Old style long options, like '-Wall'. Old style long options can be
more than one character long, are preceded by a single hyphen and may
not be grouped together. Option arguments are specified in the
following parameter ('-ao null').
+o GNU style long options, like '--colors'. GNU style long options can
be more than one character long, are preceded by two hyphens, and may
not be grouped together. Option arguments may be specified in the
following parameter ('--quoting-style shell') or by appending the
option with a '=' and the value ('--quoting-style=shell'). GNU style
long options may be abbreviated so long as the abbreviation is unique
('--h') is equivalent to '--help' if help is the only long option
beginning with an 'h').
The options for specifying command name and command path may be used
multiple times to define the same completions for multiple commands.
The options for specifying command switches and wrapped commands may be
used multiple times to define multiple completions for the command(s)
in a single call.
Invoking complete multiple times for the same command adds the new
definitions on top of any existing completions defined for the command.
When -a or --arguments is specified in conjunction with long, short, or
old style options, the specified arguments are only used as completions
when attempting to complete an argument for any of the specified
options. If -a or --arguments is specified without any long, short, or
old style options, the specified arguments are used when completing any
argument to the command (except when completing an option argument that
was specified with -r or --require-parameter).
Command substitutions found in OPTION_ARGUMENTS are not expected to
return a space-separated list of arguments. Instead they must return a
newline-separated list of arguments, and each argument may optionally
have a tab character followed by the argument description. Any
description provided in this way overrides a description given with -d
or --description.
The -w or --wraps options causes the specified command to inherit
completions from another command. The inheriting command is said to
'wrap' the inherited command. The wrapping command may have its own
completions in addition to inherited ones. A command may wrap multiple
commands, and wrapping is transitive: if A wraps B, and B wraps C, then
A automatically inherits all of C's completions. Wrapping can be
removed using the -e or --erase options. Note that wrapping only works
for completions specified with -c or --command and are ignored when
specifying completions with -p or --path.
When erasing completions, it is possible to either erase all
completions for a specific command by specifying complete -c COMMAND
-e, or by specifying a specific completion option to delete by
specifying either a long, short or old style option.
EExxaammppllee
The short style option -o for the gcc command requires that a file
follows it. This can be done using writing:
ccoommpplleettee -c gcc -s o -r
The short style option -d for the grep command requires that one of the
strings 'read', 'skip' or 'recurse' is used. This can be specified
writing:
ccoommpplleettee -c grep -s d -x -a 'read skip recurse'
The su command takes any username as an argument. Usernames are given
as the first colon-separated field in the file /etc/passwd. This can be
specified as:
ccoommpplleettee -x -c su -d 'Username' -a '(cat /etc/passwd | cut -d : -f 1)'
The rpm command has several different modes. If the -e or --erase flag
has been specified, rpm should delete one or more packages, in which
case several switches related to deleting packages are valid, like the
nodeps switch.
This can be written as:
ccoommpplleettee -c rpm -n '__fish_contains_opt -s e erase' -d nodeps 'Don't check dependencies'
where __fish_contains_opt is a function that checks the command line
buffer for the presence of a specified set of options.
To implement an alias, use the -w or --wraps option:
ccoommpplleettee -c hub -w git
Now hub inherits all of the completions from git. Note this can also be
specified in a function declaration.
Version 2.7.1 Sat Nov 17 2018 complete(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment