Je viens de passer à un Macbook Air. J'ai installé zsh en utilisant homebrew, mais quand j'utilise une partie du code que j'avais (à l'origine) dans mon .zshrc
, j'obtiens une erreur disant que .dircolors was not found
.
Ci-dessous le code en question :
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'
Est dircolors
n'est pas livré avec Mac OS X ? Comment dois-je l'installer ?
Mise à jour :
Si je lance dircolors directement sur le shell, j'obtiens :
bash: dircolors; command not found
Réponse acceptée :
La commande dircolors
est spécifique à GNU coreutils, vous le trouverez donc sur Linux non embarqué et sur Cygwin mais pas sur d'autres systèmes Unix tels que OSX. Les paramètres générés dans votre .zshrc
ne sont pas portables sur OSX.
Puisque vous utilisez les couleurs par défaut, vous pouvez passer une chaîne vide au list-colors
pour obtenir des couleurs dans les complétions de fichiers.
Pour les couleurs avec le ls
réel commande, définissez le CLICOLOR
variable d'environnement sur OSX, et définissez également LSCOLORS
(voir le manuel pour le format) si vous voulez changer les couleurs.
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
Si vous vouliez définir des couleurs non par défaut (dircolors
avec un argument de fichier), ma recommandation serait de coder en dur la sortie de dircolors -b ~/.dircolors
dans votre .zshrc
et utilisez ces paramètres pour zsh et 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