항원과 함께 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)}`
}