Comment puis-je changer la couleur de mon prompt à zsh (différent du texte normal)?
Question
Afin de mieux reconnaître le début et la fin de la sortie sur une ligne de commande, je veux changer la couleur de mon message, de sorte qu'il est visiblement différent de la sortie des programmes. Comme je l'utilise zsh, quelqu'un peut-il me donner un indice?
La solution
Voici un exemple de la façon de définir une invite rouge:
PS1=$'\e[0;31m$ \e[0m'
La magie est le \e[0;31m
(allumer l'avant-plan rouge) et \e[0m
(désactiver les attributs de caractère). Elles sont appelées séquences d'échappement. Différentes séquences d'échappement vous donnent des résultats différents, de positionnement du curseur absolu, à la couleur, pour être en mesure de changer la barre de titre de la fenêtre, et ainsi de suite.
Pour en savoir plus sur les séquences d'échappement, voir l'entrée wikipedia sur les codes d'échappement ANSI
Autres conseils
Mettre cela en ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Couleurs prises en charge:
Rouge, Bleu, Vert, cyan, jaune, magenta, noir et blanc (de cette répondre ), bien que différents ordinateurs peuvent avoir différentes options valides.
codes de couleur surround (et tous les autres caractères non-imprimables) avec %{....%}
. Ceci est pour l'emballage de texte fonctionne correctement.
De plus, voici comment vous pouvez obtenir ce travail avec le répertoire de coupe .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh est livré avec des invites de couleur builtin. Essayez
autoload -U promptinit && promptinit
puis prompt -l
répertorie les invites disponibles, -p fire
PREviews le "feu" invite, -s fire
le met.
Lorsque vous êtes prêt à ajouter une invite ajouter quelque chose comme ça en dessous du seuil de chargement automatique 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 réponse de de FireDude. Voir documentation ZSH pour plus d'informations.
J'ai trouvé que, avec zsh5 (la valeur par défaut sur une Debian Jessie), toutes ces solutions fonctionne:
-
$'\e[00m
-
$fg[white]
-
$fg{white}
Maintenant, ils ont un problème: ils se déplaceront le curseur, ce qui décalcomanie laid quand tabulant (pour l'auto-complétion). La solution est simplement d'entourer les séquences d'échappement avec %{FOOBAR%}
. Il m'a fallu un certain temps pour comprendre cela.
Pour les solutions 2e et 3e module de chargement colors
est obligatoire.
Pour garder la 1ère solution lisible, il suffit de définir des variables pour les couleurs que vous utilisez.
zshall et recherche homme EXPANSION PROMPT
Après avoir lu les réponses existantes ici, plusieurs d'entre eux sont contradictoires. J'ai essayé les différentes approches sur les systèmes exécutant zsh 4.2 et 5+ et a constaté que la raison pour laquelle ces réponses sont contradictoires, est qu'ils ne disent pas quelle version de ZSH ils ciblent. Différentes versions utilisent une syntaxe différente pour cela, et certains d'entre eux nécessitent différentes charge automatiquement.
Alors, le meilleur pari est probablement à l'homme zshall et chercher EXPANSION PROMPT pour découvrir toutes les règles de votre installation de zsh. Remarque dans les commentaires, des choses comme «J'utilise Ubuntu 11.04 ou 10.4 ou OSX » ne sont pas très significatif car il est difficile de savoir quelle version de ZSH que vous utilisez. Ubuntu 11.04 ne signifie pas une version plus récente de ZSH que ubuntu 10.04. Il peut y avoir un certain nombre de raisons pour lesquelles une ancienne version a été installée. Pour cette question une version plus récente de ZSH ne signifie pas que la syntaxe à utiliser sans savoir quelle version de ZSH est.