
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_ti
e t_ks
para o terminal quando uma sessão é iniciada e t_te
quando t_ke
ela termina. As sequências t_ti
e t_te
fazem com que o terminal mude para sua tela alternativa.
No seu ~/.vimrc
arquivo você pode vim
deixar 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_profile
arquivo 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 screen
sessã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 screen
tem 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