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