Comment puis-je changer la couleur de mon invite en zsh (différent du texte normal)?
6 réponses
voici un exemple pour définir une invite rouge:
PS1=$'\e[0;31m$ \e[0m'
La magie est la \e[0;31m
(activer le rouge au premier plan) et \e[0m
(désactiver les attributs de caractères). Celles-ci sont appelées séquences d'échappement. Différentes séquences d'échappement vous donnent des résultats différents, du positionnement absolu du curseur, à la couleur, à la possibilité de changer la barre de titre de votre fenêtre, et ainsi de suite.
pour en savoir plus sur les séquences d'évasion, voir sur wikipedia entrée sur les codes d'échappement ANSI
mettez ceci dans ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Couleurs Supportées:
Rouge, Bleu, Vert, Cyan, Jaune, Magenta, Noir et blanc (de cette réponse ) bien que différents ordinateurs peuvent avoir différentes options valides.
Surround codes de couleur (et de toute autre non-imprimable caractères) avec %{....%}
. C'est pour que l'emballage du texte fonctionne correctement.
en outre, voici comment vous pouvez obtenir cela pour travailler avec le répertoire-trimming de ici .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
Zsh est livré avec les messages colorés builtin. Essayez
autoload -U promptinit && promptinit
et puis prompt -l
liste les invites disponibles, -p fire
prévient l'invite" fire", -s fire
la règle.
lorsque vous êtes prêt à ajouter un prompt ajouter quelque chose comme ceci sous la ligne autoload ci-dessus:
prompt fade red
Je ne pense pas que le autoload -U colors && colors
est plus nécessaire et on peut simplement faire:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
pour obtenir le même résultat que . Voir la zsh documentation pour plus d'informations.
j'ai trouvé que, avec zsh5( la solution par défaut sur Debian Jessie), toutes ces solutions fonctionnent:
-
$'\e[00m
-
$fg[white]
-
$fg{white}
maintenant, ils ont un problème: ils vont déplacer le curseur, résultant en décalé moche lors de tabbing (pour l'auto-complétion). La solution consiste simplement à entourer les séquences d'échappement de %{FOOBAR%}
. M'a fallu un certain temps pour comprendre ce.
Pour les 2ème et 3ème solutions, le chargement du module colors
est obligatoire.
Pour garder la 1ère solution lisible, il suffit de définir des variables pour les couleurs que vous utilisez.
man zshall and search for PROMPT EXPANSION""
après avoir lu les réponses existantes ici, plusieurs d'entre elles sont contradictoires. J'ai essayé les différentes approches sur les systèmes utilisant zsh 4.2 et 5+ et j'ai trouvé que la raison pour laquelle ces réponses sont contradictoires est qu'ils ne disent pas quelle version de ZSH ils sont ciblés. Différentes versions utilisent une syntaxe différente pour cela et certains d'entre eux exigent divers autoloads.
Donc, le meilleur pari est probablement pour gérer zshall et chercher une extension rapide pour trouver toutes les règles pour votre installation particulière de zsh. Notez dans les commentaires, des choses comme "J'utilise Ubuntu 11.04 ou 10.4 ou OSX" ne sont pas très significatives car il n'est pas clair quelle version de ZSH vous utilisez. Ubuntu 11.04 n'implique pas une version plus récente de ZSH que ubuntu 10.04. Il peut y avoir plusieurs raisons pour lesquelles une ancienne version a été installée. Pour une version plus récente de ZSH n'implique pas quelle syntaxe utiliser, sans savoir quelle version de ZSH c'est.