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 %# "
PROMPT="%K{green}[mollifier]%k %# "
方法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} %# "
PROMPT="${bg[green]}[mollifier]${reset_color} %# "
方法1と方法2の違い
方法1と方法2は似てるけど少し違いがある。まず、方法1はcolorsに依存していない。なので、autoload -Uz colors
しなくても方法1は使用できる。
もう一つ違いがあって、方法1はプロンプト表示だけでしか使えないけど、方法2は違っていて、echoとかの単なる文字列表示でも使える。
% echo "${fg[green]}hoge${reset_color}"
プロンプトだけで使う場合は方法1、それ以外の文字列表示にも使うなら方法2、というふうに使い分ければよいとおもう。