PS1中的zsh随机颜色

时间:2012-07-17 18:11:01

标签: zshrc

我的.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随机选择而不仅仅是在启动或随机选择只会进行一次。

有没有什么方法可以在zsh的PS1中插入一个随机数来实现这个目的?

1 个答案:

答案 0 :(得分:3)

您可以使用precmd hook,在每次提示之前对其进行评估:

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

add-zsh-hook precmd randomise_prompt_colour