考虑这个最小的 .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}