Como definir o display bash para não mostrar o texto do vim após sair?

23

A minha pergunta é simples, mas acho difícil enquadrar / explicar facilmente.

Eu faço o login em várias caixas Unix com diferentes contas. Eu vejo duas coisas diferentes para user1 e user2 , enquanto edita arquivos de texto no vim

user1

Quando digito vim filename , o vim é aberto e eu edito o arquivo. Quando eu fecho, o texto completo do arquivo se foi, e eu vejo o comando / saída do Teminals que estava presente anteriormente.

user2

Quando digito vim filename , o vim é aberto e eu edito o arquivo. Quando eu a fecho, a parte do arquivo que estava presente no visor enquanto eu estava em vim ainda aparece no visor, e todo o visor anterior do Terminal aparece rolado para cima. Mesmo se o arquivo tiver apenas 1 linha, depois de sair do vim, o display mostrará a primeira linha, com o restante de todo o ~ e o prompt de comando na parte inferior da tela.

Detalhes

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

Eu comparei os arquivos vimrc para ambos os usuários, e estou ciente de todas as configurações e não encontro nenhuma configuração / configuração relacionada a esse comportamento.

Este comportamento está relacionado com a configuração da shell? Como faço para definir as coisas, para que eu obtenha o comportamento mostrado no user1 scenario?

Eu não consigo descrever isso facilmente, também achei difícil acessar o Google, já que não sei qual palavra-chave procurar por esse comportamento. Deixe-me saber, se eu deveria elaborar mais.

    
por mtk 07.01.2013 / 08:43

3 respostas

20

Uma das razões para esse comportamento será a configuração do terminal para cada usuário.

Por exemplo:

  • User1 está usando TERM = xterm , nesse caso, quando você sair do vim, ele limpará o terminal.
  • User2 está usando TERM = vt100 , nesse caso, quando você sair do vim, ele não limpará o terminal.

Verifique qual terminal user1 está usando com echo $TERM e defina o mesmo para user2. para bash:

TERM=xterm; export TERM

    
por 07.01.2013 / 09:19
13

Esse comportamento foi a única coisa que me impediu de usar screen . Ele usa o terminal "screen" e mudá-lo para "xterm" não ajudou.

A opção altscreen on em ~ / .screenrc resolveu-o. Do manual da tela:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is 'off'.
    
por 10.11.2016 / 05:12
0

Eu tentei todas essas opções, mas o resultado não foi o que eu esperava. !clear limparia a tela inteira e não deixaria para trás os comandos bash anteriores.

A solução simples e correta é definir a string do tipo de terminal como xterm e as velocidades do terminal como 38400,38400 em Detalhes do terminal em configurações de massa em Conexão-> Dados.

Salve as configurações e você está pronto.

    
por 21.08.2018 / 09:35