私は自分のプロンプトを作成するのが好きです。また、それらは単純で、$PS1および$PS2変数にのみ書き込まれることを望みます。私はそれらが別々のファイル、スクリプト全体、またはプログラムになることを望まないので、できるだけ少ない外部プログラムを実行したいと思います。それで、これが私が投稿した理由です。
現在のプロンプトを設定する方法は次のとおりです。
function setPromptTheme()
{
if [ $UID = 0 ]
then _promptColorUID=yellow
else _promptColorUID=blue
fi # Checks if the user is root and colors some parts of the prompt accordingly
if [ -z $SSH_CONNECTION ]
then _promptColorSSH=white
else _promptColorSSH=yellow
fi # Checks if the session is running through SSH and colors some parts of the prompt accordingly
export PS1="%(?.%K{green}%F{black} √ %F{green}%K{black}$(printf '\ue0b0')%f%k.%K{red}%F{black} × %F{red}%K{black}$(printf '\ue0b0')%f%k)%K{black} %F{$_promptColorSSH}%n@%M %F{black}%K{$_promptColorUID}$(printf '\ue0b0')%k%K{$_promptColorUID}%F{black} > %k%F{$_promptColorUID}$(printf '\ue0b0')%f%k "
export RPS1="%F{$_promptColorUID}$(printf '\ue0b2')%K{$_promptColorUID}%F{black}
答え1
ここで使用することができます$'\uxxxx' or $'\Uxxxxxxxx'
($'...'
引用はksh93から取られましたが、\u
/の解釈は実際にはいくつかの変更にもかかわらず他のシェルによって導入され、その後コピーされました)。\U
zsh
だから:
PS1="...."$'\ue0b2'"...."
または:
myChar=$'\ue0b2'
PS1="...$myChar..."
または
typeset -A powerline=(
branch $'\uE0A0'
ln $'\uE0A1'
padlock $'\uE0A2'
'solid right' $'\uE0B0'
right $'\uE0B1'
'solid left' $'\uE0B2'
left $'\uE0B3'
)
たとえば、使用してください$poweline[solid right]
。
\[
そして\]
強く打つ幅0のデータの構文を紹介します。
これに対応するのzsh
ですが%{...%}
、ここでは文字の幅が1列なのでいいえ使いたいです。私のシステムには少なくとも次の文字があります。個人使用領域(ここでは電力線で使用されています)幅は1に設定されています(wcwidth()
文字の幅はzshが使用するものによって異なります)。wcwidth()
これらがゼロを返す場合は、いつでもaを挿入して%G
zshに幅が1であることを知らせることができます。