15. 11月 2010 · Write a comment · Categories: Git

zshで右プロンプトにgitの状態を表示させてみたが、zshの最近のバージョン(4.3.10)のvcs_infoは、いちいちgitを呼ばなくてもリポジトリの状態を把握できるらしい。
毎回gitが走ると当然遅いので、vcs_infoに切り替えてみた。


# right prompt
autoload -Uz add-zsh-hook
autoload -Uz vcs_info

zstyle ‘:vcs_info:*’ enable git svn hg bzr
zstyle ‘:vcs_info:*’ formats ‘[%b]’
zstyle ‘:vcs_info:*’ actionformats ‘[%b|%a]’
zstyle ‘:vcs_info:(svn|bzr):*’ branchformat ‘%b:r%r’
zstyle ‘:vcs_info:bzr:*’ use-simple true

autoload -Uz is-at-least
if is-at-least 4.3.10; then
zstyle ‘:vcs_info:git:*’ check-for-changes true
zstyle ‘:vcs_info:git:*’ stagedstr “+”
zstyle ‘:vcs_info:git:*’ unstagedstr “-”
zstyle ‘:vcs_info:git:*’ formats ‘[%b[%c%u]]’
zstyle ‘:vcs_info:git:*’ actionformats ‘[%b|%a[%c%u]]’
fi

function _update_vcs_info_msg() {
psvar=()
LANG=en_US.UTF-8 vcs_info
[[ -n “$vcs_info_msg_0_” ]] && psvar[1]=”$vcs_info_msg_0_”
}
add-zsh-hook precmd _update_vcs_info_msg
RPROMPT=”%1(v|%F{green}%1v%f|) [%20<..<%~]" [/bash] .zshrcはこんな感じ。 mergeやrebaseでconflictすれば[(ブランチ名)|rebase]のようになり、staged changeがあれば+、unstaged changeがあれば-で示してくれる。 前回やったように色を変えたかったが、vcs_infoでは無理のようだ。色を変えるなら速度に目をつぶってgitを呼ぶしかないのかなぁ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>