Git
Chapters ▾ 2nd Edition

A1.5 Appendix A: その他の環境でのGit - ZshでGitを使う

ZshでGitを使う

Zshには、Git用のタブ補完ライブラリも同梱されています。 `.zshrc`に`autoload -Uz compinit && compinit`という行を追加するだけで、使えるようになります。 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のコマンド、Gitコマンドの引数、リポジトリ内にあるものの名前(参照やリモートなど)に対して働きます。また、ファイル名や、その他Zsh自身がタブ補完の方法を知っている要素に対しても働きます。

また、バージョン管理システムから情報を読み取るためのフレームワークがZshには同梱されています。 ブランチ名をプロンプトの右端に表示するには、 ~/.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 162. カスタマイズされた zsh のプロンプト

vcs_infoについての詳細は、`zshcontrib(1)`マニュアルにあるドキュメントか、オンラインであれば http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information を確認してみてください。

一方、Gitに同梱されている`git-prompt.sh`というスクリプトでも、プロンプトをカスタマイズすることができます。vcs_infoよりも気に入るかもしれませんね。詳しくは http://git-prompt.sh を確認してみてください。 `git-prompt.sh`はBashとZshの両方に対応しています。

Zshは非常にパワフルであり、Zshには自身を改善するためのフレームワークも備わっています。 そのフレームワークの一つに "oh-my-zsh" があります。これは https://github.com/robbyrussell/oh-my-zsh にあります。 oh-my-zshのプラグインシステムには、強力なGit用タブ補完機能が付属しています。また、各種のプロンプトの「テーマ」が付属していて、バージョン管理に関するデータをプロンプトに表示できます。 oh-my-zshのテーマの例 は、このシステムでできることの一例に過ぎません。

oh-my-zshのテーマの例
Figure 163. oh-my-zshのテーマの例