Comment puis-je changer la couleur de mon prompt à zsh (différent du texte normal)?

StackOverflow https://stackoverflow.com/questions/689765

  •  22-08-2019
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top