zshのミニマルなプロンプトを自作した。
参照
Zshのプロンプト展開のマニュアル(http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html)
色表示を司るANSIエスケープシーケンスの記事(https://en.wikipedia.org/wiki/ANSI_escape_code)
できたもの
- 構成は「空行・情報・プロンプト」
- カレントディレクトリ、直前コマンドの戻り値、(あれば)バックグラウンドのジョブ数を表示
- 戻り値が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
前景・背景色等を全てデフォルトに戻す。 -
%#
特権ユーザなら#
、それ以外なら%
。