为了更好地识别命令行输出的开始和结束,我想改变提示符的颜色,使其与程序输出明显不同。当我使用zsh时,有人能给我一个提示吗?
当前回答
为了不浪费终端中特殊字符对信息片段的空间,可以使用多种颜色来区分信息。
如。为了达到这个理想的效果:
您可以对提示符执行以下操作:
PROMPT='%F{magenta}${PWD/#$HOME/~} %F{green}${vcs_info_msg_0_} %F{cyan}$%F{reset_color} '
它的工作方式是每次你使用$F{myColor}设置一个颜色时,从那一点开始的颜色将保持不变。在结尾添加%{reset_color}是很重要的,这样输入文本就会回到原来的颜色(或者如果您愿意,可以将其设置为其他颜色)。
其他回答
下面是一个设置红色提示符的例子:
PS1=$'\e[0;31m$ \e[0m'
神奇的是\e[0;31m(打开红色前景)和\e[0m(关闭字符属性)。这些被称为转义序列。不同的转义序列会给出不同的结果,从绝对光标定位到颜色,再到能够更改窗口的标题栏,等等。
有关转义序列的更多信息,请参阅维基百科关于ANSI转义码的条目
把这个放到~/.zshrc:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
支持颜色: 红色,蓝色,绿色,青色,黄色,品红,黑色和白色(从这个答案),尽管不同的计算机可能有不同的有效选项。
用%{....%}包围颜色代码(以及任何其他不可打印的字符)。这是为了让文本换行正确工作。
此外,下面是如何让它与这里的目录修剪一起工作。
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
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)
为了不浪费终端中特殊字符对信息片段的空间,可以使用多种颜色来区分信息。
如。为了达到这个理想的效果:
您可以对提示符执行以下操作:
PROMPT='%F{magenta}${PWD/#$HOME/~} %F{green}${vcs_info_msg_0_} %F{cyan}$%F{reset_color} '
它的工作方式是每次你使用$F{myColor}设置一个颜色时,从那一点开始的颜色将保持不变。在结尾添加%{reset_color}是很重要的,这样输入文本就会回到原来的颜色(或者如果您愿意,可以将其设置为其他颜色)。
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.