zsh - zsh list-colors 语法是如何工作的?

标签 zsh zshrc

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

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:*: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'

这里的语法有点复杂,即
'=(#b)(pattern1)(pattern2)=format0=format1=format2'
其中 format0 用于不匹配任何模式的所有内容。
因此进程 ID(第一个模式)将显示为红色,进程名称(第二个模式)为黄色,其余为蓝色:

enter image description here

最后,让我们尝试使用您要求的“--”字符串进行一些有用的操作:
zstyle ':completion:*:options' list-colors '=^(-- *)=34'

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

enter image description here

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

希望这有帮助

关于zsh - zsh list-colors 语法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152157/

相关文章:

autocomplete - 更改 ZSH 自动完成突出显示?

linux - 在终端中显示大数字

haskell - 由于 Zsh,无法在 OSX 上运行 Haskell

google-app-engine - 将 appengine 与 arch 和 zsh 一起使用无法找到 goapp

zsh - 如何将 unicode 字符添加到 Zsh 提示中?

docker - 可以以某种方式阻止 'docker-compose down'在生产中运行吗?

bash - 如何在zsh中获取执行脚本的父文件夹?

git - 设置 DotBot 和抗原

command-line - 纯提示安装问题

alias - 将 Sublime Text 的别名添加到 zshrc