Zsh

如何使命令在 zsh 中顯示為粗體?

  • November 1, 2015

我已經設置了我的 bash shell,以便我輸入的任何命令都以粗體顯示,並且命令的輸出以正常重量顯示:

在此處輸入圖像描述

我通過在變數\e[01m末尾添加PS1以打開粗體並使用trap DEBUG將其關閉來做到這一點:

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

這樣,在\e[0m執行每個命令之前都會列印出來,並且我會在輸出中獲得正常的字型粗細。

我將如何獲得相同的效果zsh

老式的方法是使用POSTEDIT

POSTEDIT=$'\e[0m'

(順便說一句,這不是 bash,不要使用 DEBUG 陷阱來模擬preexeczsh 是它的來源)但是從 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"; }

引用自:https://unix.stackexchange.com/questions/239869