Colors 如何在zsh中更改提示的颜色(与普通文本不同)?

Colors 如何在zsh中更改提示的颜色(与普通文本不同)?,colors,zsh,prompt,Colors,Zsh,Prompt,为了更好地识别命令行上输出的开始和结束,我想更改提示符的颜色,使其与程序输出明显不同。当我使用zsh时,有人能给我一个提示吗?下面是一个如何设置红色提示的示例: PS1=$'\e[0;31m$ \e[0m' 神奇的是\e[0;31m(打开红色前景)和\e[0m(关闭字符属性)。它们被称为转义序列。不同的转义序列会产生不同的结果,从绝对光标定位到颜色,再到能够更改窗口的标题栏,等等 有关转义序列的更多信息,请参见将其放入~/.zshrc: autoload -U colors &&

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

下面是一个如何设置红色提示的示例:

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


有关转义序列的更多信息,请参见将其放入
~/.zshrc

autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
支持的颜色:
红色
蓝色
绿色
青色
黄色
洋红色
黑色
白色
(来自),尽管不同的计算机可能有不同的有效选项

%{..%}
环绕颜色代码(以及任何其他不可打印的字符)。这是为了使文本包装正常工作

此外,下面是如何让它与来自的目录修剪一起工作


Zsh内置了彩色提示。试试看

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

准备添加提示时,请在上面的自动加载行下方添加类似的内容:

prompt fade red

我认为不再需要
自动加载-U colors&&colors
,只需执行以下操作:

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

要获得与相同的结果,请参阅以获取更多信息。

man zshall并搜索提示展开

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


因此,最好的选择可能是管理zshall并搜索即时扩展,以找出您特定安装zsh的所有规则。请注意,在评论中,类似“我使用Ubuntu 11.04或10.4或OSX”的内容不太有意义,因为不清楚您使用的是哪个版本的ZSH。Ubuntu11.04并不意味着ZSH的版本比Ubuntu10.04更新。安装旧版本可能有很多原因。因此,新版本的ZSH并不意味着在不知道是哪个版本的ZSH的情况下使用哪个语法。

I have发现,有了zsh5(Debian Jessie的默认版本),所有这些解决方案都可以工作:

  • $”\e[00m
  • $fg[白色]
  • $fg{white}
现在,他们遇到了一个问题:他们会移动光标,在切换时会产生难看的贴花(用于自动完成)。解决方案就是用
%{FOOBAR%}
包围转义序列。我花了一段时间才弄明白这一点。 对于第二和第三种解决方案,必须加载
颜色
模块。
要保持第一个解决方案的可读性,只需为您使用的颜色定义变量。

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

PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
只需将这一行添加到您的
~/.zshrc


列表中列出了可能的占位符。

上面Bryan Oakley的回答有一个小问题,正如已经指出的,Andrew Marshall提供的解决方案虽然没有这个小问题,但对于所用颜色的过多定制并不明显

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

各种颜色的3位代码。 首先,这里我们可以找到各种颜色的3位代码:。 例如,214是某种橙色

前景和背景。 另一个关键信息是,对于FORE底色和bacK底色,可以分别使用FK定义它们想要的颜色。来源是zsh视觉效果手册:

例如,下面两个命令

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
以橙色和黑色背景显示主机名,然后以白色和黑色背景显示冒号,然后以亮蓝色和黑色背景显示当前工作目录,最后以白色和黑色背景显示美元符号

更多相关信息见下文

在右侧提示信息。例如,添加时间戳。请参阅。当然,这可以使用颜色编码,例如使用一些浅蓝色/紫色,如下所示:

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
ls的颜色阅读ls手册后,例如可以使用以下两个命令激活ls的颜色:

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

最后,作为最后一句话,我没有测试,因为我对我的配置感到满意,另一种途径可能是某人从安装端口
coreutils
,然后使用
gdircolors
(源代码:)。(我以后可能会编辑这最后一部分,因为以上所有内容都是相关的部分,使日常生活更有趣,更容易处理。)

为了补充上述所有答案,另一个方便的技巧是将彩色提示设置放入zsh函数中。在那里,您可以定义局部变量来别名较长的命令,例如,
rc=$reset\u color
或定义您自己的颜色变量。别忘了将其放入
.zshrc
文件并调用该函数您已定义:

# Coloured prompt
autoload -U colors && colors
function myprompt {
  local rc=$reset_color
  export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt
试试我的最爱
# Coloured prompt
autoload -U colors && colors
function myprompt {
  local rc=$reset_color
  export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt
~/.zshrc
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
source ~/.zshrc
PROMPT='%F{magenta}${PWD/#$HOME/~} %F{green}${vcs_info_msg_0_} %F{cyan}$%F{reset_color} '