Estou tentando descobrir o que é um recurso bash (ou vim). Aqui está o cenário. Estou em um terminal do bash, edite algo com o vim e depois volte 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 da 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 do bash empurre esse 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 anterior do bash?
Obrigado Tim
Respostas:
O Vim envia
t_ti
et_ks
para o terminal quando uma sessão é iniciadat_te
et_ke
quando termina. As seqüênciast_ti
et_te
fazem com que o terminal mude para sua tela alternativa.No seu
~/.vimrc
arquivo, você podevim
deixar o documento na tela quando ele sair incluindo esta linha: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
vim
.fonte
Uma causa para esse problema pode estar usando o programa
screen
. Acho que quando estou em umascreen
sessão, o vim não pode retornar o estado do terminal.Não tenho certeza se é específico para tela ou para a combinação tela / vim no Ubuntu 15.10. Mesma causa, como descrito acima, acho que
screen
tem termcap diferente.fonte
altscreen on
ao arquivo ~ / .screenrc resolve o problema da tela.Basta adicionar uma linha ao seu
~/.bash_profile
arquivo para exportar TERM como xterm cada vez que você fizer login. Faça o seguinte;Agora, da próxima vez que você fizer o login, o seu problema será corrigido e, se você não quiser fazer o login novamente, poderá ...
fonte
export $TERM
?export
exporta o nome (por exemploTERM
, neste caso) como uma variável de ambiente em vez de uma variável local. Se você usasseexport $TERM
neste exemplo, o$TERM
var resolveria paraxterm
definir o env var$xterm
, que provavelmente não está definido. Boa pergunta, porém, sempre parece errado para mim também.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, eu tenho o 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 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 é diferente. Além disso, se você estiver conectado 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!
-pbr
fonte
Isso tem a ver com o seu terminal e as configurações do seu equipamento que lidam 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 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, poderá abrir uma nova janela ou guia para obter o mesmo efeito.
fonte