ter*_*don 20 colors prompt zsh
我已经设置了我的 bash shell,以便我输入的任何命令都以粗体显示,并且命令的输出以正常重量显示:
我通过\e[01m
在PS1
变量的末尾添加以打开粗体并使用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,不要使用调试陷阱来模拟preexec
:zsh 是它的来源)但是从 zsh 4.3.11 开始,您可以使用命令行语法高亮工具。让你的提示只关心你的提示和设置
zle_highlight=(default:bold)
Run Code Online (Sandbox Code Playgroud)
你想要的是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)