Answers:
这是一个如何设置红色提示的示例:
PS1=$'\e[0;31m$ \e[0m'
魔术是\e[0;31m
(打开红色前景)和\e[0m
(关闭角色属性)。这些称为转义序列。不同的转义序列给您不同的结果,从绝对光标定位到颜色,再到能够更改窗口的标题栏,等等。
有关转义序列的更多信息,请参见ANSI转义码上的Wikipedia条目。
放入~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
支持颜色:
red
,blue
,green
,cyan
,yellow
,magenta
,black
,和white
(从这个答案),但不同的计算机上可能有不同的有效选项。
用括住颜色代码(和其他任何不可打印的字符)%{....%}
。这是为了使文字换行能正常工作。
此外,这是从此处开始如何与目录修剪一起使用的方法。
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
装置,该内容将被解释为一个文字转义序列,所以在打印时的顺序将光标移动不会。如果您不使用它,则颜色代码实际上可以移动光标并产生不希望的效果。这Visual Effects
在zshmisc手册页
我认为autoload -U colors && colors
不再需要,并且可以简单地做到这一点:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
达到与FireDude的答案相同的结果。有关更多信息,请参见ZSH文档。
autoload -U colors && colors
autoload
。
autoload on
?
autoload -U colors
,则意味着您的发行版已经在其他zsh初始化文件中拥有它。您仍应将其包含在要与他人共享的脚本中。
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1至256)$FG[018]
(1至256)$fg[magenta]
(洋红色,红色,白色,黄色,黑色,蓝色,青色,绿色)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
变量定义(PS1 / PROMPT)需要添加到 ~/.zshrc
我们也可以在当前提示下重新定义PS1变量,以立即对其进行测试(更改不会保存)。
上面已经指出,布莱恩·奥克利(Bryan Oakley)给出的答案有一个小问题,而安德鲁·马歇尔(Andrew Marshall)提供的解决方案虽然没有小问题,但是对于使用的颜色进行过多的自定义并没有使其显而易见。
随着macOS Catalina从现在开始要求zsh成为默认外壳程序,我认为可能会有更多人希望自定义其提示,并且可能会来这里寻求答案。因此,我想我将尝试给出更广泛的摘要,并涉及允许更多自定义的其他非常紧密相关的概念。
各种颜色的3位数字代码。 首先,在这里我们可以找到各种颜色的3位代码:https : //unix.stackexchange.com/a/124409/194343。例如,214是某种橙色。
前景和背景。 另一个关键信息是对于F前景和bac K底色,可以分别使用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
最后,作为我对配置感到满意的测试,最后一点是,有人可以coreutils
从MacPorts安装端口然后再使用gdircolors
(来源:https://unix.stackexchange.com/a/174596)。 / 194343)。(我可能会在将来编辑最后一部分,因为以上所有内容都是相关的内容,它们使日常生活变得更加有趣,也更加容易应对。)
要获得取决于上一条命令的退出状态的颜色提示,可以使用以下命令:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
只需将此行添加到您的中即可~/.zshrc
。
该文档列出了可能的占位符。
man zshall并搜索提示扩展
在阅读了这里现有的答案之后,其中几个是矛盾的。我已经在运行zsh 4.2和5+的系统上尝试了各种方法,发现这些答案冲突的原因是它们没有说明所针对的ZSH版本。不同的版本为此使用不同的语法,其中一些需要各种自动加载。
因此,最好的选择是手动执行zshall并搜索PROMPT EXPANSION,以查找特定zsh安装的所有规则。请注意,在注释中,“我使用Ubuntu 11.04或10.4或OSX”之类的含义不是很有意义,因为不清楚您使用的是哪个版本的ZSH。Ubuntu 11.04并不意味着比ubuntu 10.04更高的ZSH版本。可能由于多种原因安装了旧版本。因此,在不知道ZSH是哪个版本的情况下,较新版本的ZSH并不意味着要使用哪种语法。
为了补充上述所有答案,另一个方便的技巧是将彩色的提示设置放入zsh函数中。在那里,您可以定义局部变量以别名较长的命令,例如,rc=$reset_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