Edited at

zshのプロンプトをいじってみた

More than 1 year has passed since last update.

zshのプロンプトをいじったので自分用備忘録


参照

http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html


できたもの


  • 構成は「空行・情報・プロンプト」

  • カレントディレクトリ、直前コマンドの戻り値、(あれば)バックグラウンドのジョブ数を表示

  • 戻り値が0の時は緑、それ以外では赤で表示

  • ジョブが1より多い時には複数形で


解説

PS1=$'

\e[7m[ %~ : \e[3%(?.2.1)mStatus %?\e[39m%1(j. : Job%2(j.s.) %j.) ]\e[m
%# '



  • $'

    マニュアルによると組み込みコマンドprintで処理するのと同じ(?)になるらしい。よくわからないが'"ではできなかった。


  • \e[7m

    前景色と背景色を逆にする。


  • %~

    カレントディレクトリ。ただしホームディレクトリまでのパスに相当する部分は~で置き換えられる。



  • \e[3%(?.2.1)m

    直前コマンドの戻り値が0ならば\e[32m(前景色を緑にする)に、それ以外なら\e[31m(前景色を赤にする)になる。


  • %?

    直前コマンドの戻り値。


  • \e[39m

    前景色をデフォルトに戻す。


  • %1(j. : Job%2(j.s.) %j.)

    バックグラウンドジョブ数が2以上なら: Jobs+ジョブ数、1なら: Job 1を表示し、それ以下なら何も表示しない。


  • \e[m

    前景・背景色等を全てデフォルトに戻す。


  • %#

    特権ユーザなら#、それ以外なら%