vcs
Информация о VCS (Version Control Systems) в приглашении zsh
При переходе на git пришла в голову мысль что было бы удобно видеть в приглашении zsh в каком состоянии локальный репозиторий.
Всевозможные rebase, am, merge и подобное сбивает с толку.
Сказано - сделано. Написал собственный велосипед. Потом нашел еще парочку велосипедов в интернете, разобрал на запчасти и прикрутил к своему велосипеду новенькие колеса и смазал педали. Но вскоре, к своему стыду, в мане zsh увидел уже готовый даже не велосипед, а целый танк с экипажем. И собакой в придачу.
Вот он
$ PAGER=less LESS='-p VERSION CONTROL SYSTEMS' man zshallТворчески переосмыслив пример из мана вот что получилось
autoload -Uz vcs_info # включаем только git svn svk cvs. Возможные VCS можно посмотреть командой vcs_info_printsys zstyle ':vcs_info:*' enable git svn svk cvs # домашняя директория из CVS репозитория. Исключаем ее и некоторые директории из домашнего репозитория zstyle ':vcs_info:*' disable-patterns "$HOME(|/.*|/bin)" # Модифицированная версия из man zshcontrib, добавлены флажки staged и unstaged изменений zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}%m%F{5}[ %F{2}%b%F{3}|%F{1}%a%F{5}][ %B%F{yellow}%c%F{red}%u%%b%F{5}]%f ' zstyle ':vcs_info:*' formats '%F{5}(%f%s%F{5})%F{3}%m%F{5}[ %F{2}%b%F{5}][ %B%F{yellow}%c%F{red}%u%%b%F{5}]%f ' zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' get-revision true setopt prompt_subst RPROMPT=$'${vcs_info_msg_0_}%b%F{cyan}%T%f' # в zsh >= 4.3.11 можно add-zsh-hook precmd vcs_info precmd () { vcs_info }
Ну и как всегда: Live demo! Ж:-)

