zshのプロンプトにgitのブランチ名を表示する

Pocket

gitのパッケージに含まれる.git-completion.shを使用すればgitのサブコマンドの補完をしてくれる。
#現在は.git-prompt.shになっているかもしれない。

それに加えて、環境変数PS1を設定すればカレントディレクトリが所属するgitリポジトリの現在のブランチ名を表示してくれる機能も利用できるはず。

#    1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
#    2) Add the following line to your .bashrc/.zshrc:
#        source ~/.git-completion.sh
#
#    3) Consider changing your PS1 to also show the current branch:
#         Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#         ZSH:  PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

ところが、Bashではブランチ名がちゃんと表示されるのに、zshでは表示されない。。。

[hitoshi@imac ~$(__git_ps1 " ()")]\$ 

上記のように、本来ならgitの情報に展開されるべき”__git_ps1″がそのまま文字列として表示されていた。

日本語のサイトをググっても同じような症状の記事は見つからず、ようやく英語のページを見つけることができた。

prompt – Get Function Into PS1 (Zsh)? – Super User

どうやらPROMPT_SUBSTを有効にする必要があることが分かった。

.zshrcにPROMPT_SUBSTを有効にする設定を追加すればよい。

setopt PROMPT_SUBST
source ~/.git-completion.sh
PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '

これでようやくプロンプトにgitのブランチ名が表示されるようになった。
ブランチ名はgitで管理しているディレクトリに移動したときだけ表示される。

[hitoshi@imac ~]$ cd server 
[hitoshi@imac server (master)]$ git checkout develop
Switched to branch 'develop'
[hitoshi@imac server (develop)]$

関連記事

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です