Jak ustawić pogrubienie poleceń w Zsh?

18

Skonfigurowałem moją powłokę bash, aby wszystkie wpisywane przeze mnie polecenia były pogrubione, a ich wynik wyświetlany w normalnej wadze:

wprowadź opis zdjęcia tutaj

Zrobiłem to, dodając \e[01mna końcu mojej PS1zmiennej, aby włączyć pogrubienie i używając, trap DEBUGaby ją wyłączyć:

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

W ten sposób \e[0mdrukowane jest przed wykonaniem każdego polecenia , a na wydruku otrzymuję normalną grubość czcionki.

Jak mógłbym uzyskać taki sam efekt zsh?

terdon
źródło

Odpowiedzi:

13

Staroświecki sposób polegał na użyciu POSTEDIT

 POSTEDIT=$'\e[0m'

(a przy okazji, to nie jest bash, nie używaj pułapki DEBUG do symulacji preexec: zsh jest skąd pochodzi ), ale od zsh 4.3.11 możesz użyć funkcji podświetlania składni wiersza poleceń . Pozwól, aby twoja szybka dbała tylko o twoją podpowiedź i ustaw

zle_highlight=(default:bold)
Gilles „SO- przestań być zły”
źródło
7

To, czego chcesz, to funkcja haka Preexec :

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

Następnie przed wykonaniem każdego polecenia preexeczostanie uruchomione, aby zresetować czcionkę do normalnej.

Aby uzyskać ten sam monit, który pojawia się w pytaniu, dodaj następujące wiersze do ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }
Cuonglm
źródło
To jest właściwe, aby użyć zamiast pułapki DEBUG, ale nie jest też dobrym sposobem na pogrubienie wiersza poleceń.
Gilles „SO- przestań być zły”