Git
Chapters ▾ 2nd Edition

A1.8 Appendix A: Git в других окружениях - Git в Zsh

Git в Zsh

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) Результат выглядит примерно так:

Кастомизированная строка приветствия в `zsh`.
Рисунок 164. Кастомизированная строка приветствия в zsh.

Дополнительную информацию о 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 — лишь один из многих вариантов применения.

Пример темы oh-my-zsh.
Рисунок 165. Пример темы oh-my-zsh