LoginSignup
3
2

More than 3 years have passed since last update.

zshのプロンプトを自作した

Last updated at Posted at 2018-09-16

zshのミニマルなプロンプトを自作した。

参照

Zshのプロンプト展開のマニュアル(http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html)
色表示を司るANSIエスケープシーケンスの記事(https://en.wikipedia.org/wiki/ANSI_escape_code)

できたもの

term.png

  • 構成は「空行・情報・プロンプト」
  • カレントディレクトリ、直前コマンドの戻り値、(あれば)バックグラウンドのジョブ数を表示
  • 戻り値が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
    前景・背景色等を全てデフォルトに戻す。
  • %#
    特権ユーザなら#、それ以外なら%
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2