のぴぴのメモ

自分用のLinuxとかの技術メモ

macOS zshのプロンプトにgitブランチをカラー表示してみる

やりたいこと

macOSzshのプロンプトにgitのブランチを表示するようにします。
表示はカラー表示させます。

f:id:nopipi:20210912160236p:plain

今回の環境は以下の通りです。

  • ProductName: Mac OS X
  • ProductVersion: 10.15.7
  • BuildVersion: 19H1323

gitセットアップに関する他の関連記事はこちら。

セットアップ手順

モジュールのダウンロード

cd
mkdir .zsh
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.zsh/git-completion.zsh
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.zsh/git-prompt.sh

git-completion.zshgit-prompt.shの2つのファイルが空でない状態であることを確認します。

ls  -l .zsh
total 56
-rw-r--r--  1 XXXXXX  XXXX   7133  9 12 15:48 git-completion.zsh
-rw-r--r--  1 XXXXXX  XXXX  17781  9 12 15:48 git-prompt.sh

ログインシェルへの追加

ログインプロンプトに表示するための設定を~/.zshrcに追加します。

cat >> ~/.zshrc << EOL

# For git
fpath=(~/.zsh $fpath)
if [ -f ${HOME}/.zsh/git-completion.zsh ]; then
       zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.zsh
fi
if [ -f ${HOME}/.zsh/git-prompt.sh ]; then
       source ${HOME}/.zsh/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
setopt PROMPT_SUBST ; PS1='%F{46}mac%f: %F{051}%c%F{198}\$(__git_ps1)%f\\$ '
EOL
  • 最後の行の\$(__git_ps1)と、\\$の冒頭のバックスラッシュ(\)は、catで入力するヒアドキュメントがシェルとして評価されないようにするためのエスケープで追加したも

テスト

別のterminalを立ち上げ、gitのリポジトリディレクトリでbranchが表示されることを確認します。