Mne*_*nth 93 zsh prompt colors
为了更好地识别命令行上输出的开始和结束,我想更改提示的颜色,以便它与程序输出明显不同.当我使用zsh时,任何人都可以给我一个提示吗?
Joe*_*son 230
把它放进去~/.zshrc:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Run Code Online (Sandbox Code Playgroud)
支持的颜色:
红色,蓝色,绿色,青色,黄色,洋红色,黑色和白色(来自此答案),虽然不同的计算机可能有不同的有效选项.
环绕颜色代码(以及任何其他不可打印的字符)red.这是为了使文本包装正常工作.
此外,这里是你如何能得到这个与从目录修剪工作在这里.
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
Run Code Online (Sandbox Code Playgroud)
Mit*_*tro 58
Zsh内置了彩色提示.尝试
autoload -U promptinit && promptinit
Run Code Online (Sandbox Code Playgroud)
然后prompt -l列出可用的提示,-p fire预览"开火"提示,-s fire设置它.
当您准备添加提示时,在上面的自动加载行下面添加如下内容:
prompt fade red
Run Code Online (Sandbox Code Playgroud)
Bry*_*ley 50
以下是如何设置红色提示的示例:
PS1=$'\e[0;31m$ \e[0m'
Run Code Online (Sandbox Code Playgroud)
神奇的是\e[0;31m(打开红色前景)和\e[0m(关闭角色属性).这些被称为转义序列.不同的转义序列为您提供不同的结果,从绝对光标定位到颜色,再到能够更改窗口的标题栏等等.
有关转义序列的更多信息,请参阅ANSI转义码的维基百科条目
Mig*_*use 32
上面 Bryan Oakley 的答案有一个小故障,因为它已经被指出,而 Andrew Marshall 提供的解决方案虽然没有出现故障,但它并没有使所用颜色的太多定制变得明显。
由于 macOS Catalina 要求从现在起将 zsh 设为默认 shell,我认为可能会有更多人想要自定义他们的提示,并且可能会来这里寻求答案。所以,我想我会尝试给出一个更广泛的总结,并触及允许更多定制的其他非常密切相关的概念。
各种颜色的 3 位代码。 首先,在这里我们可以找到各种颜色的 3 位代码:https : //unix.stackexchange.com/a/124409/194343。例如,214 是某种橙色。
前景和背景。 另外一个关键的信息是,对˚F oreground和BAC ķ地面颜色可以定义他们想要什么˚F和ķ分别。来源是关于视觉效果的 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}\$ "
Run Code Online (Sandbox Code Playgroud)
以黑色背景的橙色显示主机名,然后是黑色背景的白色冒号,然后是黑色背景的亮蓝色当前工作目录,然后是黑色背景的白色美元符号。
更多相关信息见下文。
右侧提示信息。例如,添加时间戳。请参阅https://superuser.com/a/1251045/290299。当然,这可以是颜色编码的,例如使用一些浅蓝色/紫色,如下所示:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Run Code Online (Sandbox Code Playgroud)
的颜色ls。阅读 ls 的手册后,例如可以ls使用以下两个命令激活颜色:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Run Code Online (Sandbox Code Playgroud)
最后,作为我没有测试过的最后一句话,因为我对我的配置感到满意,另一种途径可能是有人coreutils从MacPorts安装端口然后使用gdircolors(来源:https : //unix.stackexchange.com/a/174596 /194343)。(我可能会在未来编辑这最后一部分,因为以上所有内容都是相关的部分,它们使日常生活变得更加有趣和更容易应对。)
And*_*all 21
我认为autoload -U colors && colors不再需要了,人们可以这样做:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
Run Code Online (Sandbox Code Playgroud)
达到与FireDude的答案相同的结果.有关详细信息,请参阅ZSH文档.
Her*_*arz 10
试试我最喜欢的:放入
~/.zshrc
Run Code Online (Sandbox Code Playgroud)
这一行:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
Run Code Online (Sandbox Code Playgroud)
不要忘记
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
测试更改
当然,您可以更改颜色/颜色代码:-)
为了不浪费终端中带有特殊字符的信息片段的空间,您可以使用多种颜色来区分信息。
例如。为了得到这个想要的效果:
您可以根据提示执行以下操作:
PROMPT='%F{magenta}${PWD/#$HOME/~} %F{green}${vcs_info_msg_0_} %F{cyan}$%F{reset_color} '
Run Code Online (Sandbox Code Playgroud)
它的工作方式是每次您使用$F{myColor}该颜色设置颜色时,从该点开始都会坚持该颜色。%{reset_color}在最后添加很重要,以便输入文本恢复到原始颜色(或者如果您愿意,您可以将其设置为其他颜色)。
Debian/Ubuntu/Raspberry Pi OS 风格的 bash 提示符:
autoload -U colors && colors
PS1="%B%F{034}%n@%m%f%b:%B%F{019}%~ %#%f%b "
Run Code Online (Sandbox Code Playgroud)
不完全确定是否autoload -U colors && colors有必要,但当我使用$fg[...]而不是时,我确实需要它%F{...}。
在我的例子中;
%F{034}但%F{#00aa00}也可以使用编辑:在 macOS Big Sur、Monterey 和 Ventura 上测试。不确定早期的 zsh 版本,但 Ventura 13.0 是 zsh 5.8.1 (x86_64-apple-darwin22.0)
我发现,使用 zsh5(Debian Jessie 上的默认版本),所有这些解决方案都有效:
$'\e[00m$fg[white]$fg{white}现在,他们有一个问题:他们会移动光标,导致在制表符(用于自动完成)时出现丑陋的贴花。解决方案很简单,就是用 包围转义序列%{FOOBAR%}。我花了一段时间才弄清楚这一点。对于第二和第三解决方案,加载colors模块是强制性的。为了保持第一个解决方案的可读性,只需为您使用的颜色定义变量即可。
要根据最后一个命令\xe2\x80\x99s 退出状态获得带有颜色的提示,您可以使用以下命令:
\n\nPS1=\'%(?.%F{green}.%F{red})%n@%m:%~%# %f\'\nRun Code Online (Sandbox Code Playgroud)\n\n只需将此行添加到您的~/.zshrc.
该文档列出了可能的占位符。
\n