ZSH 完成颜色和 OS X

28 zsh shell colors macos

考虑这个最小的 .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'
Run Code Online (Sandbox Code Playgroud)

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

执行 als将以蓝色打印目录。但是在执行 时cd + TAB,ZSH 会建议以红色和粗体显示目录的补全。有什么问题,我怎样才能让 ZSH 完成和ls?

Dan*_*eck 31

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

LSCOLORS 红色输出示例:

bbbbbbbbbbbbbbbbbbbbbb
Run Code Online (Sandbox Code Playgroud)

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:
Run Code Online (Sandbox Code Playgroud)

使用例如这个工具也在 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}
Run Code Online (Sandbox Code Playgroud)