zshでプロンプトをカラー表示する

  • 63
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

zshでプロンプトをカラー表示してる人も多いと思う。カラー表示する方法は2種類書き方があって、ちょっと分かりにくいので、その方法についてまとめておく。

方法1

まず1つ目の方法として、プロンプト文字列を%F{色指定}と%fで囲めばその中は指定した色になる。「色指定」の部分には色の名前または数字を書く。使用できる色の名前と数字は以下の通り。

色の名前 数字
black 0
red 1
green 2
yellow 3
blue 4
magenta 5
cyan 6
white 7

%Fと%fの代わりに%Kと%kを使うと、背景色が変わる(bacKgroundのk)。

PROMPT="%F{green}[mollifier]%f %# "

zsh_prompt_1.png

PROMPT="%K{green}[mollifier]%k %# "

zsh_prompt_2.png

方法2

もう1つ、colorsを使用する方法がある。まず準備として、こんな感じでcolors関数を読み込んでおく。

autoload -Uz colors
colors

これ以降は\${fg[色指定]}と\${reset_color}で囲んだ部分がカラー表示になる。

「色指定」の部分には以下の色の名前が指定できる。方法1と違って数字では指定できない

色の名前
black
red
green
yellow
blue
magenta
cyan
white

\${fg[色指定]}の代わりに\${bg[色指定]}と書くと背景色が変わる

PROMPT="${fg[green]}[mollifier]${reset_color} %# "

zsh_prompt_3.png

PROMPT="${bg[green]}[mollifier]${reset_color} %# "

zsh_prompt_5.png

方法1と方法2の違い

方法1と方法2は似てるけど少し違いがある。まず、方法1はcolorsに依存していない。なので、autoload -Uz colorsしなくても方法1は使用できる。

もう一つ違いがあって、方法1はプロンプト表示だけでしか使えないけど、方法2は違っていて、echoとかの単なる文字列表示でも使える。

% echo "${fg[green]}hoge${reset_color}"

zsh_prompt_4.png

プロンプトだけで使う場合は方法1、それ以外の文字列表示にも使うなら方法2、というふうに使い分ければよいとおもう。

参考

Zsh - ArchWiki

この投稿は zsh Advent Calendar 201424日目の記事です。