2012-02-13 22 views
5

zsh(各コマンドで入力するテキスト)の入力テキストの色を変更したいと思います。例:[email protected]> ls ~/で標準出力から目立つように、ls ~/を黄色にします。私は、プロンプトの終わりzsh変更プロンプト入力カラー

export PS1=" $BIGreen \[email protected]\h \w \$ $IYellow" 

を用いバッシュでこれを達成することを知って

、色が黄色に設定され、入力テキストI型は、定義された適切な色変数を(黄色)。そして、

trap 'echo -ne "\e[0m"' DEBUG 

これは、myコマンドの出力が表示されたときに色を通常にリセットします。

zshでこれを行うにはどうすればよいですか?現在、私は

(末尾に黄色に設定されています)がありますが、動作しません。 (私はまた、コマンドの後に色を白に戻す方法を知らないだろう)。

PROMPT="%F{green}%[email protected]%m %# %F{yellow}" 
preexec() { echo -ne "\e[0m" } 

私はtrapを使用してみましたが、DEBUGは、次のプロンプトの前に/コマンドの実行後まで起こらないように見えますので、コマンドは黄色で実行終わる:

答えて

3

これを試してみてください。コマンドが実行される前にpreexec()関数が呼び出されるため、そこでデフォルトの色を復元することができます。

+1

これはまさに私が望んでいたものです!ありがとう。この仕組みを説明してもらえますか?また、少なくとも私の設定(私はzshがオートコンプリート中に無色のスラッシュを挿入していると思う)では、オートコンプリート中に色が元に戻ります(例えば '' somepath [tab] ')。 –

+1

元の文字列に誤字がありました( '%F'の代わりに'#F')が、それは問題ではありませんでした。私は、オートコンプリート後に色が変わっているのと同じ問題を抱えていることに気づいただけです。 'prexec()'は、シェルから実行されるすべてのコマンドの前に呼び出されます。元の色を復元するために '%f'タグですべての'%F'色の変更を閉じなければならないことがわかります。私がこれに対してより良い解決策を見つけたら、私は答えを更新します。 –

関連する問題