132
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
132
Help us understand the problem. What are the problem?