我正在尝试为完成功能设置列表颜色,但我无法理解样式语法。
zstyle ':completion:*:tasks:*' list-colors "=(#b) #([^ ]#)*=$color[white]=$color[yellow]=$color[red]"
我所知道的是#'#'和' ##'是'的正则表达式等价物。'和' +'。每次我尝试修改语法时,匹配似乎都会破坏。有人可以发布一些简单的例子或资源(不幸的是,zsh文档的例子很少)?例如,我如何匹配字符串' - '?
答案 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(第一个模式)将为红色,处理名称(第二个模式)为黄色,其余为蓝色:
最后,让我们尝试使用' - '你要求的字符串:
zstyle ':completion:*:options' list-colors '=^(-- *)=34'
这将以蓝色显示所有命令选项,但该选项的描述将保持正常。
请注意,有些选项以' - '开头,因此我们必须使用' - ' (带空格)仅匹配描述,并用^取消模式以应用选项的颜色。
希望这个帮助