Я хочу получить завершение табуляции в моих псевдонимах командной строки, например, сказать, что я определил следующий псевдоним:
alias apt-inst='sudo aptitude install'
Есть ли способ получить дополнения, предоставляемые aptitude, когда я нажимаю клавишу Tab? то есть, когда я пишу 'sudo aptitude install gnumer' и нажимаю клавишу Tab, aptitude завершает это до gnumeric, или, если была неопределенность, перечисляет все доступные пакеты, начиная с gnumer. Если я делаю это, используя свой псевдоним, ничего - нет завершения.
bash
alias
autocomplete
Левек
источник
источник
Ответы:
На форумах Ubuntu есть отличная ветка об этом . Ole J предлагает следующую функцию определения завершения псевдонима:
Используйте его, чтобы определить функцию завершения для вашего псевдонима, затем укажите эту функцию как завершитель для псевдонима:
Я предпочитаю использовать псевдонимы для добавления всегда используемых аргументов в существующие программы. Например,
grep
я всегда хочу пропустить устройства и двоичные файлы, поэтому я создаю псевдоним дляgrep
. Для добавления новых команд, таких какgrepbin
, я использую сценарий оболочки в своей~/bin
папке. Если эта папка находится на вашем пути, она будет заполнена автоматически.источник
complete -o default -F ...
вместоcomplete -F ...
правильной работы автозавершения имени файла при передаче аргументов (Bash 4.3.46).Попробуйте полный псевдоним , который решает эту проблему точно.
После установки вы можете использовать одну универсальную функцию для завершения множества псевдонимов, например:
Вы можете захотеть использовать файл complete_alias в каждом экземпляре bash
.bash_profile
или аналогичный.монтаж
применение
container
теперь может быть автозаполнено оригинальным_docker()
обработчиком завершения;источник
Ответ 2018
Вы должны добавить свой псевдоним в программу «завершить». В зависимости от типа автозаполнения, которое вы хотите достичь, вы должны использовать -c или -F.
Для автозаполнения пакета:
Для автозаполнения команды:
Чтобы проверить, правильно ли был добавлен ваш псевдоним:
Наконец, чтобы удалить псевдоним из 'complete':
В твоем случае:
источник
complete -F xxx
не работает на OSX (просто показывает использованиеcomplete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
). У вас есть указатель? Благодарю.Вот код из ответа Шона Дж. Гоффа с некоторыми улучшениями:
shell-check
, например, первым"
из"$@"
фактически завершенных строк определения функции.return 0
так что возвращаемое значение базовой функции может быть передано обратно вызывающей стороне.,
источник
COMP_WORDS
массив. Если мы используемmake-completion-wrapper _apt_get _apt_get_install apt-get install
в качестве примера, послеshift 2
,$@
содержитapt-get install
. Определение функции включает в себяapt-get install
(два буквальных слова) при назначенииCOMP_WORDS
.В качестве дополнения к ответу @Giles следующая вспомогательная функция автоматически называет сгенерированную оболочку,
make-completion-wrapper
чтобы можно было определить завершение в одной строке:источник