5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

zshプロンプトの設定[色変更・太文字・branch名]

Posted at

この記事の目的

初期設定のPCにて、ターミナルのプロンプトの設定に少し苦戦したので、現状の設定をここに記しておきます。
私の設定では、プロンプトは以下のように表示され、こだわりポイントは以下3点です。

  1. 二行プロンプトとし、入力するコマンドを常に左端に表示させることで、目の移動を最小限に抑える
  2. gitで管理下のディレクトリでは、branch名とその状態(add済、など)を表示させる
  3. 現在のディレクトリを太文字・ユーザーとホスト名をシアンにすることで見やすくする(自分なりに

プロンプト.png

~/.zshrc

以下がプロンプトの表示設定ファイルであり、source ~/.zshrcで変更を反映させることができます。

$ cat  ~/.zshrc
# ここら下はbranch名を表示させるメソッドの設定-----------------------------
function rprompt-git-current-branch {
  local branch_name st branch_status

  if [ ! -e  ".git" ]; then
    # gitで管理されていないディレクトリは何も返さない
    return
  fi
  branch_name=`git rev-parse --abbrev-ref HEAD 2> /dev/null`
  st=`git status 2> /dev/null`
  if [[ -n `echo "$st" | grep "^nothing to"` ]]; then
    # 全てコミットされてクリーンな状態
    branch_status=""
  elif [[ -n `echo "$st" | grep "^Untracked files"` ]]; then
    # gitに管理されていないファイルがある状態
    branch_status=" !"
  elif [[ -n `echo "$st" | grep "^Changes not staged for commit"` ]]; then
    # git addされていないファイルがある状態
    branch_status=" *"
  elif [[ -n `echo "$st" | grep "^Changes to be committed"` ]]; then
    # git commitされていないファイルがある状態
    branch_status=" +"
  elif [[ -n `echo "$st" | grep "^rebase in progress"` ]]; then
    # コンフリクトが起こった状態
    echo "%F{red} !!"
    return
  else
    # 上記以外の状態の場合は青色で表示させる
    branch_status=""
  fi
  # ブランチ名を色付きで表示する
  echo "($branch_name${branch_status})"
}

# プロンプトが表示されるたび、毎回プロンプトの文字列を評価し、置換する
setopt prompt_subst

# ここら下はプロンプトの表示設定-----------------------------
PROMPT='%F{cyan}[%n@%m]%F{white}: %B%~%b `rprompt-git-current-branch`
$ '

簡単な解説

上記のファイルは2段構成に分かれています。

gitのbranchの状態表示

この.zshrcファイルは、ほとんどgitのbranchの状態を表示させるメソッドrprompt-git-current-branchの設定が大体を占めています。
ほとんど参考記事のコピペですが、私の場合は状態によって色の表示ではなく、末尾のマークを変更しています。

クリーンな状態  [user@host]: ~/www/ccc (999_branch_name)
Untracked filesがある状態  [user@host]: ~/www/ccc (999_branch_name !)
addされていない状態  [user@host]: ~/www/ccc (999_branch_name *)
コミットされていない状態  [user@host]: ~/www/ccc (999_branch_name +)

この設定は上記のファイルのbranch_status=" !"の部分で変更しています。ここで状態毎に色や太字など変化させることが可能です。

PROMPTの設定

プロンプトの表示設定はここだけです

PROMPT='%F{cyan}[%n@%m]%F{white}: %B%~%b `rprompt-git-current-branch`
$ '

まず2段に分けることで、2行プロンプトにしています。
それぞれのコードの意味は、以下に示しますが、基本的に%を先頭に置き、それに続く文字により表示内容が変化します。

%n:ユーザー名
%m:ホスト名
%~:カレンとディレクトリ
%F{color}:色の表示変更、colorの部分に自分の場合はwhiteやsyanを入れています
%f:色の表示変更終了
%B:文字の太文字表示
%b:文字の太文字表示終了

参考記事

gitのbranch名を表示させるメソッド

プロンプトの表示設定

以上です!最後までお読み頂きありがとうございました!

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?