Я прочитал несколько руководств по завершению zsh, но я все еще смущен. В нашей среде разработки у нас есть пользовательская команда Git под названием git new-branch
. Я бы хотел, чтобы zsh автоматически заполнил его для меня после ввода только git ne
и Tab. Как я могу это сделать?Как добавить пользовательскую команду git к завершению zsh?
ответ
завершение мерзавец по умолчанию is extendible:
Допустим, вы получили свои собственные GIT суб-команд (мерзавец будет запускать программу `ГИТ-Foo» при запуске "GIT Foo"), и вы хотите «мерзавец f ", чтобы завершить это имя под именем . Вы можете сделать это суб-команда известного завершения с помощью стиля пользователя команды:
% zstyle ':completion:*:*:git:*' user-commands foo:'description for foo'
`пользовательские команды является стилем списка, так что вы можете добавить любое количество программ там. The: Описание часть не является обязательной, так что вы можете добавить все git- * программу из вашего $ этого пути:
% zstyle ':completion:*:*:git:*' user-commands ${${(M)${(k)commands}:#git-*}/git-/}
То есть, достаточно добавить
zstyle ':completion:*:*:git:*' user-commands new-branch:'custom new branch function'
к вашему zshrc
.
Если вы хотите обрабатывать параметры своей пользовательской команды, то это лучшее решение для использования настраиваемого файла compdef. В приведенном выше файле есть некоторые сведения об этом: просто создайте файл стандартной четкости, определяющий функцию git-<yourcommand>
, по умолчанию git будет использовать его автоматически, когда это необходимо.