Git
Chapters ▾ 2nd Edition

A1.5 Appendix A: Git в други среди - Git в Zsh

Git в Zsh

Zsh също има tab-completion библиотека за Git. За да я ползвате, просто изпълнете 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

Както виждате, възможните варианти не само се показват, но се и описват и можете графично да минавате през тях натискайки клавиша табулация. Това работи за Git команди, за аргументите им и за имена в рамките на хранилище (refs и remotes), а също така и за имена на файлове и за всички други неща, които Zsh знае как автоматично да допълва.

Zsh има също така framework за извличане на информация от version control системи, наречена 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.) Изглежда приблизително така:

Потребителски `zsh` промпт.
Figure 163. Потребителски zsh промпт.

За повече информация за vcs_info, погледнете документацията в zshcontrib(1) man страницата, или онлайн на адрес http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information.

Вместо vcs_info, може да изберете prompt customization скрипта, който е част от Git и се нарича git-prompt.sh; вижте https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh за подробности. git-prompt.sh е съвместим с Bash и Zsh.

Zsh е достатъчно мощен и има цели frameworks предназначени да го направят още по-добър. Една от тях е "oh-my-zsh", налична от https://github.com/robbyrussell/oh-my-zsh. Плъгин системата на oh-my-zsh идва с git tab-completion и има разнообразни промпт "themes", много от които показват version-control информация. Изображението от фигурата Пример за oh-my-zsh тема. е само един вариант на това какво може да се направи с тази система.

Пример за oh-my-zsh тема.
Figure 164. Пример за oh-my-zsh тема.