抗原と一緒にzshでターミネーターを使用しています。私が使用しているテーマ(af-magicの修正版)は、現在のウィンドウ幅を検索し、入力を区切る=
記号で構成されたバーを印刷します。
# af-magic.zsh-theme
# Repo: https://github.com/andyfleming/oh-my-zsh
# Direct Link: https://github.com/andyfleming/oh-my-zsh/blob/master/themes/af-magic.zsh-theme
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
# primary prompt
BAR=$(printf '=%.0s' {1..$(tput cols)})
PROMPT='$FG[237]$BAR%{$reset_color%}
$FG[032]%~\
$(git_prompt_info) \
$FG[105]%(!.#.»)%{$reset_color%} '
PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
RPS1='${return_code}'
# color vars
eval my_gray='$FG[237]'
eval my_orange='$FG[214]'
# right prompt
if type "virtualenv_prompt_info" > /dev/null
then
RPROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%'
else
RPROMPT='$my_gray%n@%m%{$reset_color%}%'
fi
# git settings
ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:"
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_DIRTY="$my_orange*%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="$FG[075])%{$reset_color%}"
# af-magic.zsh-theme
# Repo: https://github.com/andyfleming/oh-my-zsh
# Direct Link: https://github.com/andyfleming/oh-my-zsh/blob/master/themes/af-magic.zsh-theme
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
# primary prompt
BAR=$(printf '=%.0s' {1..$(tput cols)})
PROMPT='$FG[237]$BAR%{$reset_color%}
$FG[032]%~\
$(git_prompt_info) \
$FG[105]%(!.#.»)%{$reset_color%} '
PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
RPS1='${return_code}'
# color vars
eval my_gray='$FG[237]'
eval my_orange='$FG[214]'
# right prompt
if type "virtualenv_prompt_info" > /dev/null
then
RPROMPT='$(virtualenv_prompt_info)$my_gray%n@%m%{$reset_color%}%'
else
RPROMPT='$my_gray%n@%m%{$reset_color%}%'
fi
# git settings
ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075](branch:"
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_DIRTY="$my_orange*%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="$FG[075])%{$reset_color%}"
これはうまく機能しますが、ウィンドウのサイズを変更するとBAR
更新されないため、短すぎるか長すぎるため、複数行が必要です。例:
|==================================================================|
|~ » |
~になる
|==================================================|
|================ | <- window border
|~ » |
ウィンドウのサイズを変更するときにzshまたはターミネータにテーマを再ロードさせる方法はありますか?
答え1
端末のサイズを変更するとき、シェルはシグナルウインチ信号。だからアップデートがBAR
落とされた。そのエントリはzshで定義できます。トラップ機能:
TRAPWINCH () {
BAR=$(printf '=%.0s' {1..$COLUMNS})
}
tput
zshは端末の列数を追跡するため、呼び出す必要はありません。COLUMNS
変える。
必ずオンにしてくださいprompt_subst
option(setopt prompt_subst
)を使用$PROMPT
して表示されるたびに再計算されます。それともPROMPT
アップデートしてみてください。TRAPWINCH
printf
あなたはそれを使用することができますパラメータ拡張パディング文字列を取得します。パラメータ拡張は通常変数値に基づいて機能しますが、文字列(この場合は空の文字列)で作業できます。これによりトラップはまったく必要ありません。${:-STRING}
setopt prompt_subst
PROMPT='$FG[237]${(l:$COLUMNS::=:):-}%{$reset_color%}
答え2
答え3
$BARを関数に変換する必要があります。
function bar {
echo `printf '=%.0s' {1..$(tput cols)}`
}