Amazonで買ってよかったもの

記事内に広告を含む場合があります

zshプロンプトをカスタマイズ、色と改行とgit対応で見やすくする【Mac】

MacBookを新調して初めて最初からMac OS Catalinaを使い始めることになりました。

Mac標準のプロンプト(ターミナル)が bash から zsh になってしまい、今まで動いていて便利機能が使えなくなってしまいました。

今までは .bash_profile、.bashrcだったけど、これからは .zprofile、.zshrcを使うようです。

 

基本的には以下のようにリネームするだけでaliasなどは動きましたが、gitの補完ツールなどの便利機能が動作しなくなってしまいました。

  • .bash_profile -> .zprofile
  • .bashrc -> .zshrc

 

特にプロンプトのカスタマイズでブランチ名や今いるフォルダが使えなくなって不便になっちゃいました。

このままだと作業効率が落ちるので、今いるディレクトリやgitのブランチ名と状態を表示するカスタマイズを導入します。

 

ちなみにgit本体はhomebrewでインストールし、バージョンは2.30.1です。

> which git
/usr/local/bin/git


> git --version
git version 2.30.1

 

スポンサーリンク
この記事を書いた人:まちゃ
ガジェット好き 自作PC歴20年超え スマホゲームのエンジニア アニメ・ゲーム好き

git の補完ツールをインストール

gitの補完・便利機能ツールにはおなじみのgit-completion・git-promptを使います。

以前はbash版を使っていましたが、今回はzsh版を使います。

 

まず、ファイルの格納場所を作ります。

mkdir -p ~/.zsh/completion/

 

githubで公開されている「git-completion.zsh」「git-prompt.sh」ファイルをダウンロードします。

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

 

次にダウンロードしたファイルの権限を変更します。

chmod a+x ~/.zsh/completion/git-prompt.sh
chmod a+x ~/.zsh/completion/git-completion.zsh

 

ダウンロードした「git-completion.zsh」をリネームします。

mv ~/.zsh/completion/git-completion.zsh ~/.zsh/completion/_git

 

.zcompdump を一旦削除します。

 rm -f ~/.zcompdump

 

補完機能を自動的に起動するように .zshrc へ追記する。

fpath=(~/.zsh/completion $fpath)

autoload -Uz compinit
compinit -u

 

これで「source ~/.zshrc」または「source ~/.zprofile」で、読み込めば git の補完機能は使えるようになるはずです。

 

 

zshのプロンプト(ターミナル)をカスタマイズ

git の補完機能などをインストールしたら、プロンプト(ターミナル)にブランチ名などを追加するカスタマイズをします。

カスタマイズは、こちらのサイトを参考に試してみました。

この対応で、プロンプトに以下のカスタマイズが追加されます。

  • 左側にユーザー名・マシン名・今いるパス
  • 右側にブランチのステータスとブランチ名
  • 自動改行

 

以下のコードを .zshrcへ追記、gitの補完機能の読み込みもあわせて追記します。

fpath=(~/.zsh/completion $fpath)

autoload -Uz compinit
compinit -u

export CLICOLOR=1


function left-prompt {
  name_t='179m%}'      # user name text clolr
  name_b='000m%}'    # user name background color
  path_t='255m%}'     # path text clolr
  path_b='031m%}'   # path background color
  arrow='087m%}'   # arrow color
  text_color='%{\e[38;5;'    # set text color
  back_color='%{\e[30;48;5;' # set background color
  reset='%{\e[0m%}'   # reset
  sharp="\uE0B0"      # triangle

  user="${back_color}${name_b}${text_color}${name_t}"
  dir="${back_color}${path_b}${text_color}${path_t}"
  echo "${user}%n%#@%m${back_color}${path_b}${text_color}${name_b}${sharp} ${dir}%~${reset}${text_color}${path_b}${sharp}${reset}\n${text_color}${arrow}> ${reset}"
}

PROMPT=`left-prompt`

# コマンドの実行ごとに改行
function precmd() {
  # Print a newline before the prompt, unless it's the
  # first prompt in the process.
  if [ -z "$NEW_LINE_BEFORE_PROMPT" ]; then
      NEW_LINE_BEFORE_PROMPT=1
  elif [ "$NEW_LINE_BEFORE_PROMPT" -eq 1 ]; then
      echo ""
  fi
}


# git ブランチ名を色付きで表示させるメソッド
function rprompt-git-current-branch {
  local branch_name st branch_status

  branch='\ue0a0'
  color='%{\e[38;5;' #  文字色を設定
  green='114m%}'
  red='001m%}'
  yellow='227m%}'
  blue='033m%}'
  reset='%{\e[0m%}'   # reset

  color='%{\e[38;5;' #  文字色を設定
  green='114m%}'

  # ブランチマーク
  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
    # 全て commit されてクリーンな状態
    branch_status="${color}${green}${branch}"
  elif [[ -n `echo "$st" | grep "^Untracked files"` ]]; then
    # git 管理されていないファイルがある状態
    branch_status="${color}${red}${branch}?"
  elif [[ -n `echo "$st" | grep "^Changes not staged for commit"` ]]; then
    # git add されていないファイルがある状態
    branch_status="${color}${red}${branch}+"
  elif [[ -n `echo "$st" | grep "^Changes to be committed"` ]]; then
    # git commit されていないファイルがある状態
    branch_status="${color}${yellow}${branch}!"
  elif [[ -n `echo "$st" | grep "^rebase in progress"` ]]; then
    # コンフリクトが起こった状態
    echo "${color}${red}${branch}!(no branch)${reset}"
    return
  else
    # 上記以外の状態の場合
    branch_status="${color}${blue}${branch}"
  fi

  # ブランチ名を色付きで表示する
  echo "${branch_status}$branch_name${reset}"
}

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

# プロンプトの右側にメソッドの結果を表示させる
RPROMPT='`rprompt-git-current-branch`'


 

 

「.zshrc」に追記したらsourceコマンド「source ~/.zshrc」または「source ~/.zprofile」で読み込みます。

sourceコマンドを実行すると、ユーザー名、パス、ブランチ名などが表示されると思います。

ただ、ターミナルがデフォルトのままだと記号が文字化けしちゃうのでフォントを変更する必要があります。

 

色をカスタマイズしたい場合は変数の色コードを変更します。

使える色コードはこのコマンドをコピペして確認できます。

for c in {000..255}; do echo -n "\e[38;5;${c}m $c" ; [ $(($c%16)) -eq 15 ] && echo;done;echo

 

プロンプトのフォントを変更

三角形やgitブランチ ステータスのアイコンは特殊記号なので、対応しているフォント「DejaVu Sans Mono Powerline」に変更する必要があります。

デフォルトではインストールされていないので、ダウンロードしてインストールします。

 

powerline fontのインストール

 cd ~/
 git clone https://github.com/powerline/fonts
 cd fonts
 ./install.sh

 

念の為フォントのキャッシュをクリアします。

fc-cache -vf

 

ターミナルの設定画面でフォントを「DejaVu Sans Mono Powerline」に変更します。

まずターミナルの設定画面を開いて対象プロファイルの「フォント」の「変更」ボタンをクリックします。

 

フォントの一覧から「DejaVu Sans Mono Powerline」を選択します。

 

プロンプトのカスタマイズを実行済みなら、文字化けしていた記号が表示されていると思います。

 

念の為確認するなら、このコマンドで確認できます。

echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699"

 

 

プロンプトを見やすくするのはおすすめ!

プロンプトで今作業している場所やブランチ名やステータスを常に表示していれば、ミスする確率も減って安心できます。

かんたんなコマンドで確認もできますが、いちいち打ち込むのも面倒ですし、こういったテクニックは時短にもなるし良いものです。

 

購入して本当によかった、おすすめガジェット
購入して本当によかった、おすすめガジェット

おもしろそうなガジェットや生活が便利・快適になりそうなのを見つけると、ついついポチってしまいます。

そんな様々なガジェットの中から、実際に購入して良かったと感じたおすすめのガジェットを紹介します。

\ 今すぐチェック /
Amazonで安く買い物する方法

ガジェットなどをAmazonでお得に買い物するには、Amazonギフト券にあらかじめチャージしてから購入するのがおすすめです。

Amazonギフト券は現金でチャージするたびにポイントが 最大2.5% 貯まります。

現金派クレカを持てなくても、Amazonギフト券を活用するとお得です!

 
\ 最大2.5%のポイントバック /
現金なので安心
クレカ無くてもOK
プログラミング
このページをシェアする
プロガジ.DEV

コメント

  1. 匿名 より:

    素晴らしい記事!
    ありがとうございます!

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