Eu estava preocupado com a rolagem do terminal dentro de screen , além de ter configurado o altscreen on que afeta apenas alguns programas, não tendo nenhum efeito ao alternar entre janelas.
Eu sei que printf '\ec' limpa o terminal melhor que o comando Ctrl+L ou comum clear , então decidi aplicar isso.
O termcap padrão para cl entry é \E[H\E[J , que é o mesmo que ho ( \E[H ) seguido por cd ( \E[J ) você pode obter esses valores se você echo $TERMCAP dentro de um screen session.
Gostaria de saber se a alteração de cl para \Ec causaria o efeito esperado e, sim, aplausos! Mas infelizmente causou um enorme efeito colateral: as teclas de seta pararam de funcionar dentro de vim .
Ainda consigo navegar usando as chaves H , J , K e L , de modo que não vejo motivo para não trabalhar com as teclas de seta.
Eu quero evitar alterar .vimrc , pois isso é causado por screen , e posso executar vim dentro de uma sessão ssh , então eu teria que alterar o .vimrc de todas as máquinas.
Aqui está meu .screenrc :
vbell off
startup_message off
altscreen on
termcapinfo xterm* ti@:te@:cl=\Ec
#termcapinfo xterm* xn:hs@:cd=\E[J:ho=\E[H
Eu tenho tentado algumas variantes, com e sem ti e assim por diante, mas o problema parece ser cl , se o valor for \E[H\E[J , senão não.
Para reproduzir o problema, escreva o arquivo $HOME/.screenrc com o conteúdo acima e inicie uma sessão com por exemplo screen -ADRS profile e, em seguida, tente vim .screenrc , você pode ver que não poderá navegar usando as setas-chave no teclado, apenas HJKL keys.
Screen version 4.03.01 (GNU) 28-Jun-15
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48)
É possível ter o mesmo comportamento que limpar com \Ec e manter o vim funcionando?
Observação1: como @schily afirmou, não é necessariamente um problema de termcap , mas talvez um terminfo , mas de qualquer forma eu estou usando a instrução termcapinfo no meu .screenrc que, de acordo com o manual, aplica o ajuste a regra para termcap e terminfo , não sou especialista em termcap/info , só quero resolver isso.
Observação2: executar vim com :set term=linux faz com que funcione, mas, como afirmei antes, gostaria de evitar a alteração de .vimrc .
Nota 3: isso afeta less também, e provavelmente outros, mais uma imposição sobre ser um problema screen .
Nota 4: Eu enviei um erro: link
Tags vim gnu-screen terminfo termcap