Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zsh列表颜色语法是如何工作的?_Zsh_Zshrc - Fatal编程技术网

zsh列表颜色语法是如何工作的?

zsh列表颜色语法是如何工作的?,zsh,zshrc,Zsh,Zshrc,我正试图为完成函数设置列表颜色,但我就是无法理解样式语法 zstyle ':completion:*:tasks:*' list-colors "=(#b) #([^ ]#)*=$color[white]=$color[yellow]=$color[red]" 我只知道“#”和“##”是“.”和“+”的正则表达式等价物。每次我尝试稍微修改语法时,匹配似乎都会中断。有人可以发布一些简单的例子或参考资料吗(不幸的是,zsh文档中的例子很少)?例如,我如何匹配字符串'--'?下面是一些示例 简单的开

我正试图为完成函数设置列表颜色,但我就是无法理解样式语法

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

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

下面是一些示例

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

zstyle ':completion:*:parameters'  list-colors '=*=32'
正如您所看到的,语法是“=pattern=format”。 由于*匹配所有参数,并且32是ANSI绿色代码,因此所有参数都将是绿色的

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

zstyle ':completion:*:commands' list-colors '=*=1;31'
但内置命令的颜色稍微复杂一点(来自256调色板)

与别名类似

zstyle ':completion:*:aliases' list-colors '=*=2;38;5;128'
现在让我们转到模式,并对完成的不同部分使用不同的颜色,假设我们想要3种不同颜色的kill流程:

zstyle ':completion:*:*:kill:*' list-colors '=(#b) #([0-9]#)*( *[a-z])*=34=31=33'
这里的语法稍微复杂一点,即 “=(b)(模式1)(模式2)=format0=format1=format2” 其中format0用于与任何模式都不匹配的所有内容。 因此,进程ID(第一个模式)将显示为红色,进程名称(第二个模式)将显示为黄色,其余将显示为蓝色:

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

zstyle ':completion:*:options' list-colors '=^(-- *)=34'
这将以蓝色显示所有命令选项,但该选项的描述将保持正常

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


希望这有帮助

我对最后一个为描述着色的示例有问题。。。什么是
#b
?查找相关文档时遇到问题。(#b)not#b是一个允许匹配括号表达式的标志。其记录在zsh手册的“22.7.1彩色完工清单”中。
zstyle ':completion:*:options' list-colors '=^(-- *)=34'