A
resposta do @jtpereyda está certamente na marca. Mas, por algum motivo, não pude deixar passar e cavar um pouco mais fundo.
Expandindo este comentário , se você redimensionar o terminal enquanto estiver no vim (ou qualquer outro aplicativo de tela cheia que tire o controle do tty do shell), o SIGWINCH
resultante é frequentemente não enviado para o shell, portanto quando volta o controle, não sabe que o terminal foi redimensionado.
Quando você redimensiona seu terminal, ele deve chamar um ioctl(..., TIOCSWINSZ, ...)
no master pty que o vim está executando. Isso, por sua vez, resulta em um killpg(SIGWINCH)
no grupo de processos do vim.
O problema é que o vim é executado em seu próprio grupo de processos distinto do shell do qual ele foi executado, portanto, o shell bash não recebe o SIGWINCH
e não ajusta suas linhas / colunas apropriadamente.
Se você quiser uma solução permanente, adicione shopt -s checkwinsize
ao seu .bashrc
. Isso faz com que o bash verifique o tamanho da janela ( ioctl(..., TIOCGWINSZ, ..)
) após retornar de cada comando e atualize suas linhas / colunas.