web-dev-qa-db-ja.com

zshでコマンドを太字にするにはどうすればよいですか?

入力したコマンドが太字で表示され、コマンドの出力が通常の重みで表示されるようにbashシェルを設定しました。

enter image description here

これを行うには、\e[01m変数の末尾にPS1を追加して太字をオンにし、trap DEBUGを使用してオフにします。

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

このように、各コマンドが実行される前に\e[0mが出力され、出力で通常のフォントの太さが得られます。

zshで同じ効果を得るにはどうすればよいですか?

18
terdon

昔ながらの方法は POSTEDIT を使用することでした

 POSTEDIT=$'\e[0m'

(そして、これはbashではないので、preexecをシミュレートするためにDEBUGトラップを使用しないでください: 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"; }
7
cuonglm