$ HOSTNAMEを設定するbash
では、次のようなものを使用するだけで、プロンプト行の全長を計算できました:PS1_length=$((${#USER}+${#HOSTNAME}+${#PWDNAME}+12+${#PS1_GIT}))
それは役に立ちました。このような塗りつぶし線を作成するとき:
しかし、zsh
は$HOSTNAME
を正しく設定できず、その中で同様の動作をエミュレートする方法を考えることができません。
設定するだけ
HOSTNAME=$(hostname)
あなたの~/.zshrc
または、Calebが指摘したように、可変ホストセットがあるため、Promptをポータブルに保つには、次のようにすることもできます。
HOSTNAME=$Host
zsh
プロンプト展開を使用すると、計算を行わなくてもそのプロンプトを実行できます。
_PS1='%$COLUMNS>╡>%F{cyan}╔╡%F{red}[%n]%F{cyan}:%F{yellow}[%m]%F{cyan}➾%F{green}[%~]%F{default}$PS1_GIT%F{cyan}${(l:COLUMNS::═:):-}%<<
╚═╡%F{default}'
_
説明:
%$COLUMNS>╡>
_:次の_$COLUMNS
_までの部分を_%<<
_(zsh
によって端末の幅に動的に設定される変数)まで右に切り詰めます。%F{color}
_:前景色を設定します%n
_、_%m
_、_%~
_:ユーザー名、マシン名(最初のドットまでのホスト名)、_~
_- named-dirsの現在のディレクトリ。${(l:COLUMNS::═:):-}
:空の文字列(_${:-}
_)を_$COLUMNS
_の長さに_═
_文字で左パディングします。_%m
_は_${Host%%.*}
_に似ています。完全なホスト名(_$Host
_)が必要な場合は、代わりに_%M
_を使用してください。