Git поставляется с поддержкой автодополнения для Zsh.
Чтобы начать им пользоваться, просто добавьте строку autoload -Uz compinit && compinit
в ваш .zshrc
файл.
Интерфейс Zsh более функциональный чем в Bash:
$ git che<tab>
check-attr -- display gitattributes information
check-ref-format -- ensure that a reference name is well formed
checkout -- checkout branch or paths to working tree
checkout-index -- copy files from index to working directory
cherry -- find commits not merged upstream
cherry-pick -- apply changes introduced by some existing commits
Возможные варианты автодополнения не просто перечислены; они снабжены полезными описаниями и вы можете выбрать нужный вариант из предложенных, перемещаясь по ним нажатием клавиши Tab
.
Это работает не только для команд Git, но и для их аргументов, названий объектов внутри репозитория (например, ссылки и удалённые репозитории), а также для имён файлов и прочего.
В состав Zsh входит фреймворк vcs_info
, предназначенный для извлечения информации из систем контроля версий.
Чтобы отобразить имя текущей ветки в правой строке приветствия, добавьте следующие строки в файл ~/.zshrc
:
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
# PROMPT=\$vcs_info_msg_0_'%# '
zstyle ':vcs_info:git:*' formats '%b'
В результате вы будете видеть имя текущей ветки в правой части окна терминала каждый раз, как перейдёте внутрь Git репозитория.
(Для отображения названия ветки слева используйте PROMPT
вместо RPROMPT
)
Результат выглядит примерно так:
Дополнительную информацию о vcs_info
можно найти в документации zshcontrib(1)
или онлайн http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information.
Возможно, вы предпочтёте использовать поставляемый вместе с Git скрипт настройки git-prompt.sh
; детали использования приведены в комментариях к файлу https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh.
Скрипт git-prompt.sh
совместим с обеими оболочками Bash и Zsh.
Zsh настолько конфигурируем, что существуют целые фреймворки, посвящённые его улучшению. Пример такого проекта, называемый «oh-my-zsh», расположен на https://github.com/robbyrussell/oh-my-zsh. Система плагинов этого проекта включает в себя мощнейший набор правил автодополнения для Git, а многие «темы» (служащие для настройки строк приветствия) отображают информацию из различных систем контроля версий. Пример темы oh-my-zsh — лишь один из многих вариантов применения.