O buffer de rolagem do Vim está fora da tela

2

Se eu não estiver em uma sessão screen , quando sair do Vim, receberei um prompt bash abaixo dos restos da janela do VIM. Um efeito colateral disso é que meu buffer de rolagem é roubado, especialmente se eu tiver paginado por um arquivo longo no VIM. O problema só ocorre se eu não estiver em screen , dentro de uma janela screen que o VIM sai para mostrar o prompt do bash e as linhas anteriores como antes.

Eu tentei adicionar set t_ti= t_te= ao meu .vimrc para corrigir o problema, mas o único efeito que ele teve foi o de quebrar o VIM de tal forma que o problema ocorra dentro de screen e também do lado de fora. Assim, eu removi a linha.

Para uma boa medida, tenho altscreen on em .screenrc .

Isto está no Ubuntu Server 12.04.1 LTS, com o Bash 4.2.24, Tela 4.00 e VIM 7.3 (não vim-tiny), acessado via SSH na versão Cygwin NT-6.1-WOW64 em um laptop Windows 7.

Obrigado.

EDIT: Note que na mesma instalação do Cygwin eu posso usar o SSH em um servidor diferente (CentOS) e o VIM não sobrecarga o buffer de rolagem. Portanto, não suspeito de um problema do Cygwin. A máquina do CentOS não tem tela instalada e eu não precisei adicionar set t_ti= t_te= a .vimrc .

    
por dotancohen 21.11.2012 / 16:36

1 resposta

1

Você não deve separar t_ti e t_te, ou somente quando necessário. Da ajuda do vim:

Para edição normal, o terminal será colocado no modo "raw". As cordas definidos com 't_ti' e 't_ks' serão enviados para o terminal. Normalmente isso coloca o terminal em um estado em que os códigos termcap são válidos e são ativados as teclas de cursor e de função. Quando o Vim sair, o terminal será colocado de volta no modo em que estava antes de o Vim começar. As cadeias definidas com 't_te' e 't_ke' será enviado para o terminal.

Eu acredito que o seu problema é apenas isso:   - você desmarca esses (por favor, apague as linhas que estão  e / ou   - o vim não reconhece (ou conhece os termcaps usados para) o terminal que você parece estar usando

Eu recomendo:

  • elimine a parte "set t_ti = t_te=" do seu vimrc
  • tente diferentes terminais: ex, para testar o vim usando "xterm" como TERM, você pode digitar (a partir do prompt do bash):

TERM=xterm vim

(na mesma linha, como mostrado, e com a atribuição localizada antes do comando)

Quando você atinge uma combinação que ambos exibem corretamente no vim e que o vim conhece (e, portanto, pode definir a seqüência do terminal corretamente), isso deve funcionar. A menos que você anule as sequências de terminal nos arquivos de recursos do vim, ou se houver outra opção, forçando-a a limpar o terminal ao sair.

Explicação para o acima: no bash (e sh, e outros) definindo uma variável imediatamente antes de um comando fará com que este comando tenha esta variável definida para esse valor, e não afetará o valor da variável após o comando sair. ex:

bash-2.05b$ echo $TERM
xterm
bash-2.05b$ TERM=vt100 ls -F
this/ this.tar
bash-2.05b$ echo $TERM
xterm

(TERM = vt100 somente durante a chamada de ls) (bom tentar valores diferentes TERM)

    
por 26.11.2012 / 16:27