Kolory ZSH Completion i OS X

26

Rozważ to minimalne rozszerzenie .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'

W systemie OS X lsużywa kolorów, jeśli CLICOLORjest ustawiony na PRAWDA, a używane kolory to takie, LSCOLORSktórych domyślną wartością jest exfxcxdxbxegedabagacad.

Wykonanie lswoli wydrukuje katalogi w kolorze niebieskim. Ale robiąc to cd + TAB, ZSH zaproponuje uzupełnienia z katalogami w kolorze czerwonym i pogrubionym. Na czym polega problem i jak mogę mieć te same kolory dla ZSH i ls?


źródło

Odpowiedzi:

28

Musisz uważnie przeczytać instrukcję: zshumie obsługiwać LS_COLORS, czyli wariant lskonfiguracji kolorów GNU / Linux , ale używasz OSX / BSD LSCOLORS. Są bardzo różne i wydaje się, zshże nie wie, jak sobie z tym poradzić.

LSCOLORS przykład dla czerwonego wyjścia:

bbbbbbbbbbbbbbbbbbbbbb

LS_COLORS przykład dla czerwonego wyjścia:

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:

Użyj np. Tego narzędzia ( również w Github ), aby stworzyć ładny schemat kolorów lub ponownie utwórz ten, którego używasz, skopiuj dane wyjściowe dla systemu LinuxLS_COLORS , a następnie użyj następujących ustawień, aby ustawić kolory:

# 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}
Daniel Beck
źródło