Zsh 无法识别 ls 颜色

car*_*lli 15 terminal zsh

我刚刚被介绍到 Zsh,到目前为止我真的很喜欢它的可定制性。

我使用以下行在 .zshrc 中设置颜色:

zstyle ':completion:*' list-colors ''
Run Code Online (Sandbox Code Playgroud)

这给了我这些颜色:

但是,当我使用ls(我已将其别名为ls -G)时,我得到以下颜色:

有没有办法让 Zshlist-colorsls?

编辑:

我也尝试将颜色设置为 ls 默认值,man ls但没有成功(颜色仍然与第一张图像相同):

zstyle ':completion:*' list-colors 'exfxcxdxbxegedabagacad'      
Run Code Online (Sandbox Code Playgroud)

小智 12

默认ls参数--color=auto也会对 zsh 中的输出进行着色。因此,不需要使用zstyleor CLICOLOR/ LS_COLORS

只需根据您的需要调整以下别名并将其附加到.zshrc文件中即可。

alias ls="ls --color=auto"
Run Code Online (Sandbox Code Playgroud)


小智 8

就我而言,我也不得不

export CLICOLOR=1
Run Code Online (Sandbox Code Playgroud)

使 ls 为其输出着色,如man ls.

  • 这在 BSD / MacOS 系统上可能是必要的,但对于 GNU ls 实现,“--color”是唯一的考虑因素。 (3认同)

Fra*_*sco 7

使用 GNU ls 配置颜色的正确方法是使用LS_COLORS(参见https://superuser.com/a/530467/175441)。现在假设你已经LS_COLORS设置,你现在应该使用

# Zsh to use the same colors as ls
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}  
Run Code Online (Sandbox Code Playgroud)

顺便说一句,上述工作。list-colors在 Zsh 手册中搜索(即man zshall)。如果您无法使其工作,请尝试运行它(LS_COLORS为方便起见的简称...):

LS_COLORS='no=00;37:fi=00:di=00;33:ln=04;36:pi=40;33:so=01;35:bd=40;33;01:'
export LS_COLORS
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清,要在 ZSH 中设置 ls 颜色,您需要定义 LSCOLORS,它使用“exfxcxdxbxegedabagacad”格式。GNU 使用 LS_COLORS,它使用 'no=00;37:fi=00:di=00;33:ln=04;36:pi=40;33:so=01;35:bd=40;33;01:'格式,自动完成也是如此。如果您希望它们匹配,请使用 http://geoff.greer.fm/lscolors/ 生成两者 (2认同)