A questão é sobre o comportamento do aplicativo versus o recurso tela alternativa do xterm.
vim é um aplicativo termcap. Ele usa o banco de dados do terminal (possivelmente fornecido por ncurses), mas faz todo o seu próprio gerenciamento de tela (como qualquer outro aplicativo termcap).
Por convenção, os aplicativos termcap e curses enviam sequências de escape na inicialização e ao retornar do modo de tela inteira. Essas seqüências de escape vêm de capacidades de terminal (a origem do nome "termcap").
Os recursos para iniciar e finalizar o modo de endereçamento de cursor em tela inteira são denominados smcup
e rmcup
respectivamente (em terminfo, enquanto ti
e te
para termcap). Por convenção, aqueles podem ter as seqüências de escape para alternar de / para a tela alternativa. Enquanto a tela alternativa está ativa, o xterm não permite a rolagem.
No entanto, a convenção não garante que todas as descrições de terminal para xterm
sejam as mesmas. Alguns empacotadores modificam a descrição porque
- cerca de metade dos usuários gostam do recurso, meio que não gostam dele (cada metade insiste que é a maioria) e
-
nem todos os terminais são configuráveis como xterm.
No xterm, você pode ativar / desativar a mudança para / da tela alternativa. Uma minoria de outros terminais que configuram
TERM=xterm
permitem que você faça isso. Essa falta de configurabilidade agrava a metade dos usuários que não gostam do recurso.
Dependendo de qual pacote tenha modificado as coisas, você pode descobrir que TERM=xterm
faz uma coisa com a tela alternativa, enquanto TERM=xterm-256color
faz a outra. Se você usar infocmp
para procurar, uma descrição não modificada terá esses recursos configurados para informar ao aplicativo como usar a tela alternativa:
rmcup=\E[?1049l, smcup=\E[?1049h,
Leitura adicional:
- Por que a tela não é limpa ao executar o vi? (FAQ xterm)