zshのユーザーまたはルートに基づいてプロンプトの色を変更する

zshのユーザーまたはルートに基づいてプロンプトの色を変更する

zshでは、デフォルトでは、ユーザー表示またはルート表示を意味する変数(またはすべての変数)%#に1つを追加できます。これに影響を与える方法があるかどうか疑問に思います。または、ユーザーかルートか(ルートは赤、ユーザーは青)に基づいて色を変更します。確実な方法は私のルートでを変更することです。しかし、これを考慮すると、すでに特別なシンボルです。両方に同じ記号を使用する方法がないかどうか疑問に思います。 zshに固有のものです(if thenステートメントのように、私ができる他のハッキングがあると確信しています)。PS1PROMPT%#%#PS1~/.zshrcPS1%#

ベストアンサー1

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

それしなければならない%mルートの場合は、ホスト名()を別の色(赤)に変更してみてください。テストするzshシェルはありませんが、正しく見えます。

理由は次のとおりです。

%(x.true.false)::三重項の最初の項目の評価に基づいて正しいステートメントを実行してください。 '! 'シェルに権限がある場合は真です。実際には%#ショートカットです%(!.#.%)

%{\e[1;31m%} %m %{\e[0m%}::%{\e[X;Ym%}はカラーエスケープシーケンスです。ここで、Xはフォーマット(太字、下線など)、Yはカラーコードです。色を変更したい用語の周りのシーケンスを開いて閉じる必要があります。それ以外の場合、そのポイント以降のすべてのアイテムはランダムな色になります。%m明確にするために、プロンプト用語の周りにスペースを追加しました。

http://www.nparikh.org/unix/prompt.phpzshで利用可能なカラーマップやその他のオプションに関するより多くのオプションと詳細があります。

おすすめ記事