Como substituir o buffer de tela do vim pela atividade anterior do bash após sair?

Como substituir o buffer de tela do vim pela atividade anterior do bash após sair?

Estou tentando descobrir o que é um recurso bash (ou vim). Aqui está o cenário. Estou em um terminal bash, edito algo com o vim e volto para o bash. Em alguns terminais, a tela da sessão do vim desaparece para mostrar a atividade anterior do shell bash (é isso que eu quero?).

Em outros, o buffer de tela da sessão do vim permanece (ocultando a atividade antiga do shell bash). Terei que limpar a tela ou esperar até que minha atividade bash empurre o buffer de sessão do vim para fora da tela.

Como posso controlar esse comportamento para substituir o buffer de sessão do vim pela atividade bash anterior?

Obrigado Tim

Responder1

O Vim envia t_tie t_kspara o terminal quando uma sessão é iniciada e t_tequando t_keela termina. As sequências t_tie t_tefazem com que o terminal mude para sua tela alternativa.

No seu ~/.vimrcarquivo você pode vimdeixar o documento na tela quando ele sair incluindo esta linha:

set t_ti=""

se você tiver uma linha semelhante a essa, removê-la deverá fazer com que o conteúdo anterior do terminal apareça quando você sair vim.

Responder2

Basta adicionar uma linha ao seu ~/.bash_profilearquivo para exportar TERM como xterm sempre que você fizer login. Faça o seguinte;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

Agora, da próxima vez que você fizer login, seu problema será resolvido e, se não quiser fazer login novamente, você pode fazer um de ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

Responder3

Uma causa para esse problema pode ser o uso do programa screen. Acho que quando estou em uma screensessão, o vim não consegue retornar o estado terminal.

Não tenho certeza se é específico para screen ou para o combo screen/vim no Ubuntu 15.10. Mesma causa descrita acima, acho que screentem termcap diferente.

Responder4

Tim. Ambas as respostas acima estão corretas. O Vim muda o terminal para uma "tela alternativa" se a capacidade de fazer isso estiver definida na entrada termcap para $TERM.

Você diz "em alguns terminais (...funciona bem...)" e "em outros (...funciona errado...)"

Você está executando exatamente o mesmo emulador de terminal para todos esses terminais?

Por exemplo, na minha caixa Linux doméstica, tenho gnome-terminal, xterm, Konsole, yakuake e provavelmente mais alguns que esqueci, junto com os "terminais virtuais" associados ao ctrl-alt-F1... ctrl-alt-F6 ou algo assim. A maioria deles pode funcionar com a entrada termcap "padrão" para "xterm" - exceto os terminais virtuais que possuem uma definição de terminal chamada "linux".

Verifique o próprio emulador de terminal e o valor de $TERM nos terminais que funcionam e nos que não funcionam, para ver o que há de diferente. Além disso, se você estiver conectado como um usuário diferente às vezes, isso pode estar no cerne do problema - já que cada usuário tem seu próprio .bashrc, várias configurações podem diferir de usuário para usuário.

Espero que ajude!
-pbr

informação relacionada