Spec-Zone.ru › Fish 3.5

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

Синопсис

complete ((-c | --command) | (-p | --path)) COMMAND [OPTIONS]
complete (-C | --do-complete) [--escape] STRING

Описание

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

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

Доступны следующие опции:

-c или --command КОМАНДА

Указывает, что КОМАНДА - имя команды. Если нет -c или -p, один не-опциональный аргумент будет использован в качестве команды.

-p или --path КОМАНДА

Указывает, что КОМАНДА - абсолютный путь к команде (возможно содержащий подстановочные знаки).

-e или --erase

Удаляет указанное автодополнение.

-s или --short-option КОРОТКАЯ_ОПЦИЯ

Добавляет короткую опцию в список автодополнений.

-l или --long-option ДЛИННАЯ_ОПЦИЯ

Добавляет опцию в стиле GNU в список автодополнений.

-o или --old-option ДЛИННАЯ_ОПЦИЯ

Добавляет опцию старого стиля в список автодополнений (см. детали ниже).

-a или --arguments АРГУМЕНТЫ

Добавляет указанные аргументы опции в список автодополнений.

-k или --keep-order

Сохраняет порядок АРГУМЕНТОВ вместо сортировки по алфавиту. Несколько вызовов complete с -k приводят к тому, что аргументы последующих вызовов отображаются первыми.

-f или --no-files

Это автодополнение не может быть последо этим за файлом.

-F или --force-files

Это автодополнение может быть последо этим за файлом, даже если другое применимое complete указало --no-files.

-r или --require-parameter

Это автодополнение должно иметь аргумент опции, то есть не может следовать за другой опцией.

-x или --exclusive

Краткое обозначение для -r и -f.

-w или --wraps ОБЕРНУТАЯ_КОМАНДА

Приводит к тому, что указанная команда наследует автодополнения от ОБЕРНУТОЙ_КОМАНДЫ (см. детали ниже).

-n или --condition УСЛОВИЕ

Это автодополнение должно использоваться только тогда, когда УСЛОВИЕ (команда оболочки) возвращает 0. Это позволяет задавать автодополнения, которые должны использоваться только в некоторых случаях. Если указано несколько условий, fish будет проверять их в указанном порядке, пока не будет найдено условие, которое не выполняется, или все условия будут выполнены.

-C или --do-complete СТРОКА

Заставляет complete попытаться найти все возможные автодополнения для заданной строки. Если СТРОКА отсутствует, используется текущая командная строка.

--escape

При использовании с -C, экранирует специальные символы в автодополнениях.

-h или --help

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

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

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

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

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

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

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

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

Описание, заданное с помощью --description, также используется для группировки опций, указанных с -s, -o или -l. Опции с одинаковым (непустым) описанием будут перечислены как один кандидат, и один из них будет выбран. Если описание пустое или не было задано, это пропускается.

Опции -w или --wraps приводят к тому, что указанная команда наследует автодополнения от другой команды, «оборачивая» другую команду. Команда обертывания также может иметь дополнительные автодополнения. Команда может обернуть несколько команд, а обертывание является транзитивным: если A оборачивает 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.

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

Spec-Zone.ru

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