zsh list-colors语法如何工作?

时间:2014-04-18 10:24:49

标签: zsh zshrc

我正在尝试为完成功能设置列表颜色,但我无法理解样式语法。

zstyle ':completion:*:tasks:*' list-colors "=(#b) #([^ ]#)*=$color[white]=$color[yellow]=$color[red]"

我所知道的是#'#'和' ##'是'的正则表达式等价物。'和' +'。每次我尝试修改语法时,匹配似乎都会破坏。有人可以发布一些简单的例子或资源(不幸的是,zsh文档的例子很少)?例如,我如何匹配字符串' - '?

1 个答案:

答案 0 :(得分:18)

以下是一些例子。

开始时很简单,让所有参数标记为绿色:

zstyle ':completion:*:parameters'  list-colors '=*=32'

正如您所看到的,语法是' = pattern = format'。 由于*匹配所有内容,32是ANSI绿色代码,因此所有参数都将为绿色。

现在让我们以粗体红色显示所有命令

zstyle ':completion:*:commands' list-colors '=*=1;31'

但内置命令的颜色稍微复杂一些(来自256调色板)

zstyle ':completion:*:builtins' list-colors '=*=1;38;5;142'

类似于别名

zstyle ':completion:*:aliases' list-colors '=*=2;38;5;128'

现在让我们去模式,并以不同的方式着色完成不同的部分,比如我们想要3种不同颜色的杀戮过程:

zstyle ':completion:*:*:kill:*' list-colors '=(#b) #([0-9]#)*( *[a-z])*=34=31=33'

这里的语法有点复杂,即 &#39 =(#B)(模式1)(模式2)= Format0中=格式1 = FORMAT2' 其中format0用于与任何模式都不匹配的所有内容。 因此,进程ID(第一个模式)将为红色,处理名称(第二个模式)为黄色,其余为蓝色:

enter image description here

最后,让我们尝试使用' - '你要求的字符串:

zstyle ':completion:*:options' list-colors '=^(-- *)=34'

这将以蓝色显示所有命令选项,但该选项的描述将保持正常。

enter image description here

请注意,有些选项以' - '开头,因此我们必须使用' - ' (带空格)仅匹配描述,并用^取消模式以应用选项的颜色。

希望这个帮助

相关问题