Spec-Zone.ru › Fish 3.3

complete - редактирование командных автодополнений

Синопсис

complete [( -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 ) ARGUMENTS]
        [( -k | --keep-order )]
        [( -f | --no-files )]
        [( -F | --force-files )]
        [( -r | --require-parameter )]
        [( -x | --exclusive )]
        [( -w | --wraps ) WRAPPED_COMMAND]...
        [( -n | --condition ) CONDITION]
        [( -d | --description ) DESCRIPTION]
complete ( -C [STRING] | --do-complete[=STRING] )

Описание

complete определяет, удаляет или отображает автодополнения для команды.

Для ознакомления с написанием собственных автодополнений, см. Написание собственных автодополнений в руководстве fish.

  • -c COMMAND или --command COMMAND указывает, что COMMAND - это имя команды. Если нет -c или -p, один аргумент без опции будет использован как имя команды.
  • -p COMMAND или --path COMMAND указывает, что COMMAND - абсолютный путь к команде (возможно содержащий подстановочные знаки).
  • -e или --erase удаляет указанное автодополнение.
  • -s SHORT_OPTION или --short-option=SHORT_OPTION добавляет короткую опцию в список автодополнений.
  • -l LONG_OPTION или --long-option=LONG_OPTION добавляет опцию в стиле GNU в список автодополнений.
  • -o LONG_OPTION или --old-option=LONG_OPTION добавляет опцию в старом стиле в список автодополнений (см. подробности ниже).
  • -a ARGUMENTS или --arguments=ARGUMENTS добавляет указанные аргументы опции в список автодополнений.
  • -k или --keep-order сохраняет порядок ARGUMENTS вместо сортировки по алфавиту. Несколько вызовов complete с -k приводят к тому, что аргументы последних отображаются первыми.
  • -f или --no-files указывает, что данное автодополнение не может следовать за именем файла.
  • -F или --force-files указывает, что данное автодополнение может следовать за именем файла, даже если другая соответствующая запись complete указала --no-files.
  • -r или --require-parameter указывает, что данное автодополнение должно иметь аргумент опции, т.е. не может следовать за другой опцией.
  • -x или --exclusive - сокращение для -r и -f.
  • -w WRAPPED_COMMAND или --wraps=WRAPPED_COMMAND заставляет указанную команду наследовать автодополнения от обернутой команды (см. подробности ниже).
  • -n CONDITION или --condition CONDITION указывает, что это автодополнение должно использоваться только в том случае, если УСЛОВИЕ (команда оболочки) возвращает 0. Это позволяет указать автодополнения, которые должны использоваться только в некоторых случаях.
  • -C STRING или --do-complete=STRING заставляет complete попытаться найти все возможные автодополнения для указанной строки. Если нет СТРОКИ, используется текущая командная строка.

Командные автодополнения в fish основаны на понятии опций и аргументов. Опция — это параметр, начинающийся с дефиса, например, -h, -help или --help. Аргументы — это параметры, не начинающиеся с дефиса. Fish распознает три типа опций, такие же, как и в библиотеке GNU getopt. Эти стили:

  • Короткие опции, такие как -a. Короткие опции имеют длину в один символ, предваряются одним дефисом и могут быть сгруппированы (например, -la, что эквивалентно -l -a). Аргументы опций могут быть указаны в следующем параметре (-w 32) или путем добавления значения к опции (-w32).
  • Опции старого стиля, такие как -Wall или -name. Опции старого стиля могут иметь длину более одного символа, предваряются одним дефисом и не могут быть сгруппированы. Аргументы опций указываются в следующем параметре (-ao null).
  • Опции в стиле GNU, такие как --colors. Опции в стиле GNU могут иметь длину более одного символа, предваряются двумя дефисами и не могут быть сгруппированы. Аргументы опций могут быть указаны в следующем параметре (--quoting-style shell) или после = (--quoting-style=shell).

В одном вызове можно указать несколько команд и путей для определения одних и тех же автодополнений для нескольких команд.

Также можно указать несколько переключателей команд и обернутые команды, чтобы определить несколько автодополнений в одном вызове.

Вызов complete несколько раз для одной и той же команды добавляет новые определения поверх любых существующих автодополнений для данной команды.

Когда -a или --arguments указаны вместе с длинными, короткими или старыми стилями опций, указанные аргументы дополняются только как аргументы для любых указанных опций. Если -a или --arguments указаны без каких-либо длинных, коротких или старых стилей опций, указанные аргументы используются при дополнении не являющихся опциями аргументов команды (за исключением случая дополнения аргумента опции, указанного с -r или --require-parameter).

Подстановки команд, найденные в ARGUMENTS, должны возвращать список аргументов, разделенных переводом строки, и каждый аргумент может необязательно иметь символ табуляции, за которым следует описание аргумента. Таким образом заданное описание переопределяет описание, заданное с помощью -d или --description.

Опции -w или --wraps заставляют указанную команду унаследовать автодополнения от другой команды, «оборачивая» другую команду. Оборачивающая команда также может иметь дополнительные автодополнения. Команда может обернуть несколько команд, и оборачивание является транзитивным: если А оборачивает B, а B оборачивает C, то A автоматически унаследует все автодополнения C. Оборачивание можно удалить, используя опции -e или --erase. Оборачивание работает только для автодополнений, указанных с помощью -c или --command, и игнорируется при указании автодополнений с помощью -p или --path.

При удалении автодополнений можно либо удалить все автодополнения для определенной команды, указав complete -c COMMAND -e, либо удалить определенную опцию автодополнения.

Когда complete вызывается без чего-либо, что определяло бы или удаляло бы автодополнения (опции, аргументы, оборачивание, ...), он отображает соответствующие автодополнения вместо этого. Так, complete без аргументов отображает все загруженные автодополнения, а complete -c foo отображает все загруженные автодополнения для foo. Поскольку автодополнения автозагружаются, вам сначала нужно их запустить.

Примеры

Короткая опция -o для команды gcc требует аргумента файла:

complete -c gcc -s o -r

Короткий стиль опции -d для команды grep требует одного из read, skip или recurse:

complete -c grep -s d -x -a "read skip recurse"

Команда su принимает любое имя пользователя в качестве аргумента. Имена пользователей предоставляются в качестве первого поля, разделенного двоеточием, в файле /etc/passwd. Это можно указать как:

complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"

У команды rpm несколько режимов. Если установлен флаг -e или --erase, rpm должна удалить один или несколько пакетов, в этом случае допустимы несколько переключателей, относящихся к удалению пакетов, таких как переключатель nodeps.

Это можно записать как:

complete -c rpm -n "__fish_contains_opt -s e erase" -l nodeps -d "Don't check dependencies"

где __fish_contains_opt — функция, проверяющая буфер командной строки на наличие указанного набора опций.

Для реализации псевдонима используйте опцию -w или --wraps:

complete -c hub -w git

Теперь hub наследует все автодополнения из git. Обратите внимание, что это также можно указать в объявлении функции (function thing -w otherthing).

complete -c git

Показать все автодополнения для git.

© 2021 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.3/cmds/complete.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API