Sono appena passato a un MacBook Air. Ho installato zsh usando homebrew, ma quando utilizzo parte del codice che avevo (originariamente) nel mio .zshrc
, ricevo un errore che dice che .dircolors was not found
.
Di seguito il codice in questione:
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
dircolors
non viene fornito con Mac OS X? Come devo installarlo?
Aggiornamento:
Se eseguo dircolors direttamente sulla shell ottengo:
bash: dircolors; command not found
Risposta accettata:
Il comando dircolors
è specifico per GNU coreutils, quindi lo troverai su Linux non incorporato e su Cygwin ma non su altri sistemi Unix come OSX. Le impostazioni generate nel tuo .zshrc
non sono portabili su OSX.
Poiché stai utilizzando i colori predefiniti, puoi passare una stringa vuota a list-colors
per ottenere i colori nei completamenti dei file.
Per i colori con gli effettivi ls
comando, impostare il CLICOLOR
variabile di ambiente su OSX e anche impostare LSCOLORS
(vedi manuale per il formato) se vuoi cambiare i colori.
if whence dircolors >/dev/null; then
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
alias ls='ls --color'
else
export CLICOLOR=1
zstyle ':completion:*:default' list-colors ''
fi
Se desideri impostare colori non predefiniti (dircolors
con un argomento file), la mia raccomandazione sarebbe di codificare l'output di dircolors -b ~/.dircolors
nel tuo .zshrc
e usa queste impostazioni sia per zsh che per GNU ls.
LS_COLORS=…
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
if whence dircolors >/dev/null; then
export LS_COLORS
alias ls='ls --color'
else
export CLICOLOR=1
LSCOLORS=…
fi