回答:
昔ながらの方法は使用することでした POSTEDIT
POSTEDIT=$'\e[0m'
(また、これはbashではないので、シミュレートするためにDEBUGトラップを使用しないでくださいpreexec
:zshはそれがどこから来たのか)zsh 4.3.11以降、コマンドライン構文強調表示機能を使用できます。プロンプトにのみ注意を促し、設定します
zle_highlight=(default:bold)
あなたが望むのはpreexecフック関数です:
preexec() { printf "\e[0m"; }
次に、各コマンドが実行される前にpreexec
、フォントを通常にリセットするために実行されます。
したがって、質問に表示されるのと同じプロンプトを表示するには、次の行をに追加します~/.zshrc
。
autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }