2016-08-02 2 views
4

Я прочитал несколько руководств по завершению zsh, но я все еще смущен. В нашей среде разработки у нас есть пользовательская команда Git под названием git new-branch. Я бы хотел, чтобы zsh автоматически заполнил его для меня после ввода только git ne и Tab. Как я могу это сделать?Как добавить пользовательскую команду git к завершению zsh?

ответ

6

завершение мерзавец по умолчанию 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 будет использовать его автоматически, когда это необходимо.

Смежные вопросы