
私は、antigen と組み合わせて zsh で terminator を使用しています。私が使用しているテーマ (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 または terminator のいずれかでテーマを再読み込みする方法はありますか?
答え1
端末のサイズが変更されると、シェルはシグウィンチシグナル。BAR
トラップで更新します。zshでは対応するトラップ機能:
TRAPWINCH () {
BAR=$(printf '=%.0s' {1..$COLUMNS})
}
tput
zshは端末の列数を追跡しているので、COLUMNS
変数。
必ずオンにしてくださいprompt_subst
オプション ( 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)}`
}