下記サイトを参考にしてカスタマイズ。(gitのみしかenableしていない)
Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法 - mollifier delta blog
Enterキーを押すたびに無条件で新たなプロセスを起動されるのが嫌だったので、ディレクトリを変更した時、もしくはgit関連のコマンドを実行した時にだけ、git情報を更新するvcs_infoを呼び出すようになっています。
設定は.zshrcに以下を記述。
#右プロンプト # %F{〜}は色指定、%fでリセット # %nはログインユーザ名、%~はカレントディレクトリ # "%(?..%F{red}-%?-)" は終了コードが0以外なら赤色で表示 # "%1(v|%F{yellow}%1v%F{green} |)" の部分がVCS情報 (psvarの長さが1以上なら黄色で表示) RPROMPT="%(?..%F{red}-%?-)%F{green}[%1(v|%F{yellow}%1v%F{green} |)%n:%~]%f" #gitブランチ名表示 autoload -Uz vcs_info zstyle ':vcs_info:*' enable git zstyle ':vcs_info:git:*' formats '%c%u%b' zstyle ':vcs_info:git:*' actionformats '%c%u%b|%a' #カレントディレクトリ/コマンド記録 local _cmd='' local _lastdir='' preexec() { _cmd="$1" _lastdir="$PWD" } #git情報更新 update_vcs_info() { psvar=() LANG=en_US.UTF-8 vcs_info [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_" } #カレントディレクトリ変更時/git関連コマンド実行時に情報更新 precmd() { _r=$? case "${_cmd}" in git*|stg*) update_vcs_info ;; *) [ "${_lastdir}" != "$PWD" ] && update_vcs_info ;; esac return $_r }