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

11

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

Em outros, o buffer da tela da sessão vim permanece (ocultando a atividade antiga do shell bash). Terei que limpar a tela ou esperar até que minha atividade bash empurre esse buffer de sessão 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

    
por Community 03.10.2010 / 21:12

5 respostas

8

O Vim envia t_ti e t_ks para o terminal quando uma sessão é iniciada e t_te e t_ke quando termina. As seqüências t_ti e t_te fazem com que o terminal mude para sua tela alternativa.

No seu arquivo ~/.vimrc , você pode fazer com que vim deixe o documento na tela ao sair, incluindo esta linha:

set t_ti=""

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

    
por 03.10.2010 / 22:18
4

Uma causa para este problema pode estar usando o programa screen . Eu acho que quando estou em um screen session vim não pode retornar o estado do terminal.

Não tenho certeza se é específico para a tela ou para a combinação de tela / vim no Ubuntu 15.10. A mesma causa descrita acima, eu acho que screen tem termcap diferente.

    
por 15.12.2015 / 23:51
2

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

Você diz "em alguns terminais (... funciona direito ...)" e "em outros (... funciona de forma errada ...)"

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

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

Verifique o emulador de terminal em si e o valor de $ TERM nos terminais que funcionam e nos que não funcionam, para ver o que é diferente. Além disso, se você estiver logado como um usuário diferente, às vezes, isso pode estar no centro 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!
-br

    
por 05.10.2010 / 06:25
2

Basta adicionar uma linha ao seu arquivo ~/.bash_profile para exportar TERM como xterm cada vez 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á corrigido e, se você não quiser fazer login novamente, poderá fazer um dos ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
    
por 16.02.2013 / 09:09
1

Isso tem a ver com o seu terminal e as configurações da sua máquina lidando com as informações do terminal. Uma solução portátil é usar o GNU Screen. Abra uma janela para o Vim e outra para o Bash, separando assim as duas sessões. Se você estiver usando um terminal gráfico como xterm no X11, Gnome Terminal no Gnome ou Terminal.app no OS X, então você pode abrir uma nova janela ou aba para obter o mesmo efeito.

    
por 03.10.2010 / 21:20

Tags