Come posso rendere i comandi in grassetto in zsh?


18

Ho impostato la mia shell bash in modo che tutti i comandi digitati vengano visualizzati in grassetto e l'output dei comandi sia mostrato in peso normale:

inserisci qui la descrizione dell'immagine

L'ho fatto aggiungendo \e[01malla fine della mia PS1variabile per attivare il grassetto e usando trap DEBUGper disattivarlo:

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

In questo modo, \e[0mviene stampato prima dell'esecuzione di ciascun comando e ottengo un peso del carattere normale nell'output.

Come farei per ottenere lo stesso effetto zsh?

Risposte:



7

Quello che vuoi è la funzione hook preexec :

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

Quindi, prima di eseguire ciascun comando, preexecverrà eseguito per ripristinare il carattere normale.

Quindi, per ottenere lo stesso prompt che mostri nella tua domanda, aggiungi queste righe al tuo ~/.zshrc:

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

Questa è la cosa giusta da usare invece di una trap DEBUG, ma nessuno dei due è il modo giusto per rendere audace la riga di comando.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.