チャプター ▾ 第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コマンド、その引数、リポジトリ内のもの(参照やリモートなど)、ファイル名、および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は非常に強力であるため、Zshをより良くするためのフレームワーク全体があります。その1つは「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