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

Pour mieux reconnaître le début et la fin de la sortie sur une ligne de commande, je veux changer la couleur de mon invite, de sorte qu'il est visiblement différente de l'programmes de sortie. Comme j'utilise zsh, quelqu'un peut-il me donner un indice?

72
demandé sur Mnementh 2009-03-27 16:29:30

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

40
répondu Bryan Oakley 2010-10-26 14:11:13

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%}%% "
199
répondu Joe the Person 2018-08-05 22:10:30

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
44
répondu Mitro 2011-06-22 12:27:18

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.

14
répondu Andrew Marshall 2017-05-23 12:17:57

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.

4
répondu user3459474 2016-02-29 10:30:51

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.

0
répondu cs_alumnus 2014-07-17 16:02:58