Git
章 ▾ 第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 をより良くすることに特化したフレームワークがいくつか存在します。その一つが "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