为了更好地识别命令行输出的开始和结束,我想改变提示符的颜色,使其与程序输出明显不同。当我使用zsh时,有人能给我一个提示吗?


当前回答

下面是一个设置红色提示符的例子:

PS1=$'\e[0;31m$ \e[0m'

神奇的是\e[0;31m(打开红色前景)和\e[0m(关闭字符属性)。这些被称为转义序列。不同的转义序列会给出不同的结果,从绝对光标定位到颜色,再到能够更改窗口的标题栏,等等。

有关转义序列的更多信息,请参阅维基百科关于ANSI转义码的条目

其他回答

要根据最后一个命令的退出状态获得颜色提示符,您可以使用以下命令:

PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'

只需将这一行添加到~/.zshrc。

文档列出了可能的占位符。

man zshall和搜索PROMPT EXPANSION

在阅读了这里现有的答案后,其中一些答案是相互矛盾的。我在运行zsh 4.2和5+的系统上尝试了各种方法,发现这些答案相互冲突的原因是它们没有说明它们针对的是哪个zsh版本。不同的版本使用不同的语法,其中一些需要各种自动加载。

So, the best bet is probably to man zshall and search for PROMPT EXPANSION to find out all the rules for your particular installation of zsh. Note in the comments, things like "I use Ubuntu 11.04 or 10.4 or OSX" Are not very meaningful as it's unclear which version of ZSH you are using. Ubuntu 11.04 does not imply a newer version of ZSH than ubuntu 10.04. There may be any number of reasons that an older version was installed. For that matter a newer version of ZSH does not imply which syntax to use without knowing which version of ZSH it is.

Debian/Ubuntu/树莓派操作系统风格bash提示符:

autoload -U colors && colors
PS1="%B%F{034}%n@%m%f%b:%B%F{019}%~ %#%f%b "

不完全确定自动加载-U颜色和&颜色是必要的,但我确实需要它当我使用$fg[…]]而不是%F{…}。 在我的例子中;

%F(% F)开始(停止)前景色-我已经使用了256COLOR值,但你也可以使用十六进制,例如,我已经使用了正常的绿色%F{034},但%F{#00aa00}也适用 %B(% B)开始(停止)加粗 % n $用户名 %m短的机器名 %~登录/工作目录,如果~在主目录 如果是正常用户,则显示%#

编辑:在macOS大苏尔,蒙特雷和文图拉测试。不确定早期的zsh版本,但Ventura 13.0是zsh 5.8.1 (x86_64-apple-darwin22.0)

Zsh自带彩色提示。试一试

autoload -U promptinit && promptinit

然后prompt -l列出可用的提示,-p fire预览“fire”提示,-s fire设置它。

当你准备添加一个提示符时,在上面的自动加载行下面添加如下内容:

prompt fade red

布莱恩·奥克利上面的答案有一个故障,因为它已经指出了,安德鲁·马歇尔提供的解决方案,虽然它没有携带故障,但它并没有使它对使用的颜色进行过多的定制。

由于macOS Catalina要求从现在开始将zsh作为默认shell,我认为更多的人可能想要自定义他们的提示符,并可能会来这里寻求答案。因此,我想我将尝试给出一个更广泛的总结,并触及其他非常密切相关的概念,允许更多的定制。

各种颜色的3位数代码。 首先,在这里我们可以找到各种颜色的3位数代码:https://unix.stackexchange.com/a/124409/194343。 例如,214是某种橙色。

前景和背景。 另一个关键信息是,对于前景和背景色,可以分别用F和K定义它们想要的颜色。来源是zsh视觉效果手册:http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects

例如,下面两个命令

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "

显示带有黑色背景的橙色主机名,后面是带有黑色背景的白色冒号,后面是带有黑色背景的亮蓝色当前工作目录,然后是带有黑色背景的白色美元符号。

更多相关信息见下文。

右侧显示提示信息。例如,添加时间戳。见https://superuser.com/a/1251045/290299。当然,这可以用颜色编码,例如用一些浅蓝色/略带紫色,像这样:

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"

ls的颜色。在阅读ls的手册后,例如可以使用以下两个命令激活ls的颜色:

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

最后,作为最后的评论,我没有测试,因为我对我的配置很满意,另一种方法可能是让某人从MacPorts安装端口coreutils,然后使用gdircolors(来源:https://unix.stackexchange.com/a/174596/194343)。(我可能会在将来编辑最后一部分,因为上面所有的文章都是相关的,让日常生活更有趣,更容易应付。)