可愛いzshの作り方

うちのzshがあまりに可愛いので、ちょっと紹介します。


突然ですが、終了ステータスというものがあります。

int main () {
  return 0;  // ← これだ!!!
}


シェルの特殊変数では、$?がこれにあたります。



あと、zshにはConditional Substitutionというものもあります。構文は次のような感じです。

%(x.true-text.false-text)

プログラミングでよく見る三項演算子ですね。

道具は揃った! さあPROMPTだ!まずはシェルで確認してみよう!

PROMPT="%(?.OK.NG) "  


よしよし。


Conditional Substitutionの"."は, なんでもいいみたい。

PROMPT="%(?#x.y#a.b) "


ほむほむ


という訳で、zshを可愛くしちゃおう!

PROMPT="%(?!(._.)/!(;_;%)?) "


わーやばい、かわいい

泣き顔の閉じる括弧はエスケープしないとねっ!


色をつけよう!

autoload -Uz colors; colors
PROMPT="%(?.%{$bg[green]%}.%{$bg[blue]%})%(?!(._.)/!(;_;%)?)%{${reset_color}%} "


うおおおおおおお!!!


パスを表示しよう!!!

PROMPT="%(?.%{$bg[green]%}.%{$bg[blue]%})%(?!(._.)/!(;_;%)?) %B%~$%b%{${reset_color}%} "


%B...%bってのは太文字ね


コマンドをみすった時の設定をしよう!

setopt correct
SPROMPT="%{$bg[red]%}%{$suggest%}(._.%)? %B %r is correct? [n,y,a,e]:%{${reset_color}%}%b "


ヤバいよぉ可愛いよぉ

まとめ


多分設定はこれだけ。

autoload -Uz colors; colors
PROMPT="%(?.%{$bg[green]%}.%{$bg[blue]%})%(?!(._.)/!(;_;%)?) %B%~$%b%{${reset_color}%} "
PROMPT2="%{$bg[blue]%}%_>%{$reset_color%}%b "
setopt correct
SPROMPT="%{$bg[red]%}%{$suggest%}(._.%)? %B %r is correct? [n,y,a,e]:%{${reset_color}%}%b "

bgがきついなぁって人はfgして、顔文字部分もboldにするなどしたらいいんじゃないかな。


結論

zshかわいい