Git ブランチ名を Zsh プロンプトに表示する方法

IT

スポンサーリンク

はじめに

Gitを活用している方々にとって、現在作業中のブランチを常に把握することは重要なタスクの一つです。それが大規模なプロジェクトだと、特にその重要性は高まります。

今回は、macOSでZshシェルを使用している方向けに、余計な外部モジュールを組み込まずにプロンプトにGitブランチ名を表示する方法を紹介します。

.zshrcスクリプト

実際に私が使っている.zshrcスクリプトを示します。

parse_git_branch() {
    BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
    if [ -n "$BRANCH" ]; then
        echo " ($BRANCH)"
    else
        echo ""
    fi
}

precmd() {
    PROMPT="%F{green}%n@%m %F{cyan}%1~%F{yellow}$(parse_git_branch) %F{magenta}$%f "
}

このスクリプトを .zshrc ファイルに追加するだけで、ターミナルのプロンプトに現在のGitブランチ名を表示することができます。

では、このスクリプトがどのように動作するのか、一つずつ見ていきましょう。

parse_git_branch 関数

この関数は、現在のGitブランチ名を検出し、表示する役割を果たします。以下のコマンドを使ってブランチ名を取得します。

BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')

このコマンドは git branch を実行し、出力を sed コマンドにパイプします。sed コマンドは出力の中から現在のブランチ(*マークが付いている行)を探し、そのブランチ名だけを抽出します。

次に、ブランチが存在すればその名前を、存在しなければ空文字列を出力します。

if [ -n "$BRANCH" ]; then
    echo " ($BRANCH)"
else
    echo ""
fi

PROMPT 変数

PROMPT 変数は、プロンプトの見た目を定義します。色やテキストの表示形式をカスタマイズすることが可能です。

ここでは %F{green}%n@%m %F{cyan}%1~%F{yellow}$(parse_git_branch) %F{magenta}$%f を設定しています。

これにより、以下の情報が表示されます:

  • %F{green}%n@%m : ユーザ名とマシン名(緑色)
  • %F{cyan}%1~ : 現在のディレクトリ(シアン色)
  • %F{yellow}$(parse_git_branch) : 現在のgitブランチ名(黄色)
  • %F{magenta}$%f : プロンプト記号 $(マゼンタ色)

なお、ブランチを切り替えたときにプロンプトを更新するために、ZSHの特殊関数である precmd 関数を利用します。precmd 関数は各プロンプトの前に実行されるため、parse_git_branch 関数が再度呼び出され、プロンプト内のブランチが更新されます。

以上が、ZshプロンプトにGitブランチ名を表示する方法です。これにより、作業中のブランチを一目で確認することが可能になります。毎日の作業効率を上げるためにぜひ活用してみてください。


コメント

タイトルとURLをコピーしました