Quando o terminal é redimensionado, o shell recebe um SIGWINCH BAR em uma armadilha. Em zsh, você pode definir a função de interceptação correspondente:
TRAPWINCH () {
BAR=$(printf '=%.0s' {1..$COLUMNS})
}
Você não precisa chamar tput
, já que zsh rastreia o número de colunas do terminal no COLUMNS
variable .
Certifique-se de ativar a opção prompt_subst
( setopt prompt_subst
) para que $PROMPT
seja reavaliado sempre que for exibido. Como alternativa, atualize PROMPT
em TRAPWINCH
também.
Em vez de bifurcar para chamar printf
de uma maneira estranha, você pode usar o parâmetro expansão para obter uma string acolchoada. A expansão de parâmetro normalmente funciona a partir do valor de uma variável, mas ${:-STRING}
permite que você trabalhe a partir de uma string, neste caso, uma string vazia. Desta forma, você não precisa de uma armadilha.
setopt prompt_subst
PROMPT='$FG[237]${(l:$COLUMNS::=:):-}%{$reset_color%}