Comment puis-je faire apparaître les commandes en gras dans zsh?

18

J'ai configuré mon shell bash de sorte que toutes les commandes que je tape apparaissent en gras et la sortie des commandes s'affiche en poids normal:

entrez la description de l'image ici

J'ai fait cela en ajoutant \e[01mà la fin de ma PS1variable pour activer le gras et en l'utilisant trap DEBUGpour le désactiver:

trap 'printf "\e[0m" "$_"' DEBUG

De cette façon, le \e[0mest imprimé avant l'exécution de chaque commande et j'obtiens un poids de police normal dans la sortie.

Comment pourrais-je obtenir le même effet zsh?

terdon
la source

Réponses:

13

La méthode à l'ancienne était d'utiliser POSTEDIT

 POSTEDIT=$'\e[0m'

(et d'ailleurs ce n'est pas bash, n'utilisez pas un piège DEBUG pour simuler preexec: zsh est d'où il vient ) mais depuis zsh 4.3.11 vous pouvez utiliser la fonction de mise en évidence de la syntaxe de la ligne de commande . Laissez votre invite se soucier uniquement de votre invite et définissez

zle_highlight=(default:bold)
Gilles 'SO- arrête d'être méchant'
la source
7

Ce que vous voulez, c'est la fonction de crochet preexec :

preexec() { printf "\e[0m"; }

Ensuite, avant l'exécution de chaque commande, preexecsera exécuté pour réinitialiser votre police à la normale.

Donc, pour obtenir la même invite que vous montrez dans votre question, ajoutez ces lignes à votre ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }
cuonglm
la source
C'est la bonne chose à utiliser au lieu d'un piège DEBUG, mais ce n'est pas non plus la bonne façon de mettre la ligne de commande en gras.
Gilles 'SO- arrête d'être méchant'