ZSH 完成颜色和 OS X

ZSH 完成颜色和 OS X

考虑这个最小的 .zshrc :

export CLICOLOR=1;
export LSCOLORS=exfxcxdxbxegedabagacad; # It is the default value on OSX, so this line can be omitted

autoload -Uz compinit
compinit
zstyle ':completion:*' list-colors 'exfxcxdxbxegedabagacad'

在 OS X 上,ls如果设置为 TRUE,则使用颜色CLICOLOR,并且使用的颜色为LSCOLORS默认值 exfxcxdxbxegedabagacad

执行ls会将目录打印为蓝色。但是执行 时cd + TAB,ZSH 会建议使用红色和粗体格式的目录完成。问题是什么?如何才能使 ZSH 完成和 具有相同的颜色ls

答案1

您需要仔细阅读说明:zsh知道如何处理LS_COLORS,这是 GNU/Linux 的ls颜色配置变体,但您使用 OSX/BSD 的LSCOLORS。它们是非常不同,而且似乎zsh不知道如何处理后者。

LSCOLORS红色输出示例:

bbbbbbbbbbbbbbbbbbbbbb

LS_COLORS红色输出示例:

di=31;41:ln=31;41:so=31;41:pi=31;41:ex=31;41:bd=31;41:cd=31;41:su=31;41:sg=31;41:tw=31;41:ow=31;41:

使用例如此工具Github 上也有)创建一个漂亮的配色方案,或者重新创建您使用的配色方案,将其输出复制为LinuxLS_COLORS,然后使用以下内容设置颜色:

# between quotation marks is the tool output for LS_COLORS
export LS_COLORS="di=31;41:ln=31;41:so=31;41:pi=31;41:ex=31;41:bd=31;41:cd=31;41:su=31;41:sg=31;41:tw=31;41:ow=31;41:"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

相关内容