Произвольное завершение zsh с использованием сочетания клавиш

Произвольное завершение zsh с использованием сочетания клавиш

Иногда команда не имеет установленного завершения — или синтаксически может принимать целую кучу типов аргументов, делая завершение практически бесполезным. Например, "git checkout" может принимать имя любого отслеживаемого git файлаилиимя любого рефа или другого дерева. Он также может принимать некоторые флаги опций. Это много возможных завершений.

Зная, что я хочу завершить, скажем, название ветви, есть ли способ привязать клавишу для завершения или отображения меню названий ветвей? (И то же самое для любой категории завершения.)

Это кажется возможным и полезным, но я не видел, чтобы это делалось.

решение1

Да, это можно сделать. Первоначально я получил следующее из одного из списков рассылки zsh, но не помню, кто это опубликовал:

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file

Это можно легко адаптировать для использования другой функции завершения вместо _files.

Первая строка определяет новый виджет завершения с именем , complete-fileкоторый ведет себя как встроенный complete-wordвиджет и использует _genericфункцию для генерации списка завершений.

Вторая строка затем настраивает его таким образом, что при использовании этого пользовательского виджета средство завершения будет использовать его только _filesдля получения списка завершений.

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

Связанный контент