章 ▾ 第2版

A1.7 付録A: その他の環境でのGit - ZshでのGit

ZshでのGit

ZshにはGit用のタブ補完ライブラリも付属しています。これを使うには、.zshrcautoload -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コマンド、その引数、リポジトリ内のもの(refsやremotesなど)の名前、ファイル名、その他Zshがタブ補完できるものすべてに適用されます。

Zshには、vcs_infoと呼ばれるバージョン管理システムから情報を取得するためのフレームワークが付属しています。プロンプトの右側にブランチ名を含めるには、以下の行を~/.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への割り当てをコメント解除するだけです。見た目は次のようになります。

Customized `zsh` prompt
図 185. カスタマイズされたzshプロンプト

vcs_infoの詳細については、zshcontrib(1)マニュアルページ、またはオンラインのhttps://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Informationを参照してください。

vcs_infoの代わりに、Gitに付属しているプロンプトカスタマイズスクリプトであるgit-prompt.shの方が良いかもしれません。詳細はhttps://github.com/git/git/blob/master/contrib/completion/git-prompt.shを参照してください。git-prompt.shはBashとZshの両方に対応しています。

Zshは非常に強力であるため、より使いやすくするためのフレームワークが多数存在します。その一つが「oh-my-zsh」と呼ばれ、https://github.com/ohmyzsh/ohmyzshで見つけることができます。oh-my-zshのプラグインシステムは強力なGitタブ補完機能を備えており、バージョン管理データを表示する様々なプロンプト「テーマ」があります。oh-my-zshテーマの例は、このシステムで何ができるかの一例に過ぎません。

An example of an oh-my-zsh theme
図 186. oh-my-zshテーマの例
scroll-to-top