3

私の.bashrc PS1(要約)は

\u\[\e[01;3$(($RANDOM % 8))m\]@\h \w $'

bashの動作方法で@は、各コマンドの後にランダムな色を補間するため、毎回異なる色になります(少なくとも31〜37の範囲)。

ただし、zshで同様のことを行うことはできませんでした。構文ではコマンド置換が許可されておらず、$''連結も機能しません。

$'\e[01;3'$(($RANDOM % 8))
# The \e[01;3 character is printed first, then the random number

引用符の使用も機能し"ません。リテラルを出力するだけです\e...

zshにも次のようなテキストの色が組み込まれていることを知ってい%{$fg[red]%}ます。配列からランダムな色を選択することもできますが、問題は、PS1起動時だけでなく、によってランダムに選択する必要があることです。そうしないと、ランダムに選択されます。 1回だけ。

これを実現するために、zshのPS1で乱数を補間する方法はありますか?

4

1 に答える 1

4

各プロンプトの前に評価されるprecmdフックを使用できます。

randomise_prompt_colour () {
  PS1="%n%B%F{$((RANDOM % 8))}@%m %~ %(!.#.\$) "
}

add-zsh-hook precmd randomise_prompt_colour
于 2013-02-27T20:12:54.920 に答える