iriya-ufo's blog

Curiosity was simply the first derivative of knowledge.

Zsh で Git のコマンド補完及びブランチ名の表示

git のコマンド補完

まず git のコマンド補完ができるようにします。前提として zsh と git は Homebrew でインストールしておきます。私の環境では zsh も git も古かったのでアップデートしました。

$ brew update   # brew のアップデート
$ brew outdated # 古い Formula の表示
$ brew upgrade  # 古い Formula の一括アップデート
$ brew cleanup  # 古い Formula の削除

久しぶりに brew 使ったら Warning がいっぱいでてしまいました。 /usr/local 配下を chown$ whoami 権限に変更し、後は $ brew doctor でちまちま直していきました。

Homebrew についてはこちら『Homebrew 使い方メモ』に詳しく書いてくださっています。すばらしい!

さてこれで zsh も git も新しくなりました。実はこれだけで git の補完は終わりです!

また zsh のバージョンが 5.0.2 以上 git のバージョンが 1.8.2.3 以上 この状態であるなら /usr/local/share/zsh/site-functions に git 用の補完定義ファイルがあるかと思います。 そして自動で zsh に対して symlink が張られているはずです。ファイルがなければ $ brew link git とすればOKです。

最後に .zshrc に次の一行を追加します。

fpath=(~/.zsh/functions/Completion /usr/local/share/zsh/functions ${fpath})

これで git のコマンド補完はできました。

ブランチ名の表示

調べてみたところ、皆さん色々な方法でやってるみたいですけど、今なら vcs_info を使って設定するのがよさそうです。 インストールなどは必要ないので自分の好きなように .zshrc をカスタマイズしていけばいいですね。 私はこんな感じでシンプルに使ってます。

1
2
3
4
5
6
7
8
# VCS Setting
autoload -Uz vcs_info
precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
RPROMPT="%1(v|%F{green}%1v%f|)"

参考