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

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

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

在此输入图像描述

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

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

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

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

答案1

老式的方法是使用POSTEDIT

 POSTEDIT=$'\e[0m'

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

zle_highlight=(default:bold)

答案2

你想要的是预执行钩子函数:

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"; }

相关内容