1

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

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

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

1 ответ1

2

Да, это можно сделать. Первоначально я получил следующее из одного списка рассылки 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 для получения списка завершений.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .