Wie kann ich Befehle in zsh fett darstellen?


18

Ich habe meine Bash-Shell so eingerichtet, dass alle von mir eingegebenen Befehle fett dargestellt werden und die Ausgabe der Befehle in normaler Gewichtung angezeigt wird:

Bildbeschreibung hier eingeben

Ich tat dies, indem ich \e[01mam Ende meiner PS1Variablen hinzufügte , um fett zu aktivieren, und trap DEBUGes mit deaktivierte:

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

Auf diese Weise wird das \e[0mgedruckt, bevor jeder Befehl ausgeführt wird, und ich erhalte die normale Schriftstärke in der Ausgabe.

Wie würde ich vorgehen, um den gleichen Effekt zu erzielen zsh?

Antworten:



7

Was Sie wollen, ist die Preexec-Hook-Funktion :

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

Dann, bevor jeder Befehl ausgeführt wurde, preexecwird ausgeführt, um Ihre Schriftart auf den Normalwert zurückzusetzen.

Um die gleiche Eingabeaufforderung zu erhalten, die Sie in Ihrer Frage angezeigt haben, fügen Sie folgende Zeilen zu Ihrer hinzu ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }

Das ist das Richtige anstelle einer DEBUG-Falle, aber auch nicht das Richtige, um die Befehlszeile fett zu machen.
Gilles 'SO- hör auf böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.