ZSH Completion colors dan OS X

26

Pertimbangkan minimal .zshrc ini:

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'

Pada OS X, lsgunakan warna jika CLICOLORdiatur ke TRUE dan warna yang digunakan adalah LSCOLORSnilai defaultnya exfxcxdxbxegedabagacad.

Melakukan lswasiat akan mencetak direktori dengan warna biru. Tetapi ketika melakukan cd + TAB, ZSH akan mengusulkan penyelesaian dengan direktori dalam warna merah dan tebal. Apa masalahnya dan bagaimana saya bisa memiliki warna yang sama untuk penyelesaian ZSH dan ls?


sumber

Jawaban:

28

Anda perlu membaca instruksi dengan seksama: zshtahu cara menangani LS_COLORS, yang merupakan varian GNU / Linux dari lskonfigurasi warna, tetapi Anda menggunakan OSX's / BSD's LSCOLORS. Mereka sangat berbeda, dan tampaknya zshtidak tahu cara menangani yang terakhir.

LSCOLORS contoh untuk output merah:

bbbbbbbbbbbbbbbbbbbbbb

LS_COLORS contoh untuk output merah:

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:

Gunakan misalnya alat ini ( juga di Github ) untuk membuat skema warna yang bagus, atau membuat ulang yang Anda gunakan, salin hasilnya untuk LinuxLS_COLORS , lalu gunakan yang berikut ini untuk mengatur warna:

# 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
sumber