12

我想更改 zsh 中输入文本的颜色(我为每个命令键入的文本)。示例:在user@host> ls ~/我想要ls ~/ 黄色以从标准输出中脱颖而出。

我知道我可以在bash中使用

export PS1=" $BIGreen \u@\h \w \$ $IYellow" 

在提示结束时,颜色设置为黄色,我输入的输入文本为黄色(定义了相应的颜色变量)。进而

trap 'echo -ne "\e[0m"' DEBUG

当显示我的命令的输出时,它将颜色重置为正常。

我怎样才能在zsh中做到这一点?目前,我有

PROMPT=$'{$fg[green]%}%n@%{$fg[green]%}%m %# %{$fg[yellow]%}'

在 .zshrc 中(最后将颜色设置为黄色),但它不起作用。(我也不知道如何在命令之后将颜色设置回白色)。

4

1 回答 1

11

试试这个:

PROMPT="%F{green}%n@%m %# %F{yellow}"
preexec () { echo -ne "\e[0m" }

我尝试使用trap,但它看起来DEBUG直到命令运行之后/下一个提示之前才会发生,所以命令最终以黄色执行。该preexec()函数在命令执行之前被调用,因此您可以在那里恢复默认颜色。

于 2012-11-29T22:08:22.580 回答