如何使命令在 zsh 中显示为粗体?

ter*_*don 20 colors prompt zsh

我已经设置了我的 bash shell,以便我输入的任何命令都以粗体显示,并且命令的输出以正常重量显示:

在此处输入图片说明

我通过\e[01mPS1变量的末尾添加以打开粗体并使用trap DEBUG将其关闭来做到这一点:

trap 'printf "\e[0m" "$_"' DEBUG
Run Code Online (Sandbox Code Playgroud)

这样,在\e[0m执行每个命令之前打印 ,并且我在输出中获得正常的字体粗细。

我将如何获得相同的效果zsh

Gil*_*il' 16

老式的方法是使用 POSTEDIT

 POSTEDIT=$'\e[0m'
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,这不是 bash,不要使用调试陷阱来模拟preexeczsh 是它的来源)但是从 zsh 4.3.11 开始,您可以使用命令行语法高亮工具。让你的提示只关心你的提示和设置

zle_highlight=(default:bold)
Run Code Online (Sandbox Code Playgroud)


cuo*_*glm 7

你想要的是preexec 钩子函数

preexec() { printf "\e[0m"; }
Run Code Online (Sandbox Code Playgroud)

然后在执行每个命令之前,preexec将运行以将您的字体重置为正常。

因此,要获得您在问题中显示的相同提示,请将这些行添加到您的~/.zshrc

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