Como definir a exibição do bash para não mostrar o texto do vim após a saída?


28

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

Eu entro em várias caixas Unix com contas diferentes. Eu vejo duas coisas diferentes para user1e user2, ao editar arquivos de texto no vim

user1

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

user2

Quando digito vim filename, o vim é aberto e edito o arquivo. Quando eu o fecho, a parte do arquivo que estava presente no visor enquanto eu vimainda estava aparecendo no visor, e toda a tela anterior do Terminal é rolada para cima. Mesmo que o arquivo tenha apenas 1 linha, depois de sair do vim, o visor mostra a primeira linha, com todo o resto, ~e vejo 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)

Comparei os vimrcarquivos para ambos os usuários e conheço todas as configurações e não encontro nenhuma configuração / configuração relacionada a esse comportamento.

Esse comportamento está relacionado à configuração do shell? Como faço para definir as coisas, para obter o comportamento conforme mostrado no user1cenário?

Não sou capaz de descrever isso com facilidade, o que também dificulta o Google, pois não sei qual palavra-chave procurar esse comportamento. Deixe-me saber, se eu devo elaborar mais.


São user1e user2contas no mesmo ou em máquinas diferentes?
precisa saber é o seguinte

@jasonwryan O login na mesma máquina também mostra o mesmo cenário. @ warl0ck Obrigado por isso.
mtk

1
Se você deseja forçar esse comportamento, mas reter seu tipo de terminal, adicione uma linha ao seu .bashrc ou .profile dizendo o alias vi = "/ usr / bin / vi $ *; clear"
Criggie

Respostas:


24

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

Por exemplo:

  • O usuário1 está usando TERM = xterm ; nesse caso, quando você sai do vim, ele limpa o terminal.
  • O usuário2 está usando TERM = vt100 ; nesse caso, quando você sai do vim, ele não limpa o terminal.

Verifique com o que o usuário1 do terminal está usando echo $TERMe defina o mesmo para o usuário2. para bash:

TERM = xterm; TERM de exportação


+1 Solução exata / perfeita. Obrigado !!! Não pensei que fosse assim tão fácil. Você pode, por favor, explicar o que TERMé isso? ou apontar para algum link de recurso? Eu preciso entender isso. Isso afeta apenas quando nos conectamos via putty?
mtk

Você pode especificar a configuração do terminal na sessão de massa, mas os usuários podem especificar em suas variáveis ​​de ambiente. O TERM definirá o seu tipo de terminal e alguns também terão mais recursos que outros, por exemplo, o xterm suporta cores e atualizará as linhas e colunas automaticamente. Se você usar o vt100, o valor padrão será de 24 linhas por 80 colunas. Ao redimensionar o terminal, você verá que ele adere a 24x80. Verifique este arquivo unix.stackexchange.com/questions/43945/… , ele pode explicar melhor do que eu.
BitsOfNix

É o comportamento do terminal, não o shell. As configurações do emulador de terminal são as mesmas, independentemente da ferramenta usada para conectar. A diferença é explicada em detalhes aqui: unix.stackexchange.com/questions/4126/…
Leonid

@ Leonid, não exatamente, se você usar o putty, poderá definir e ele será atualizado ao conectar se o usuário não definir um TERM. Se o usuário o definiu, você está certo, independentemente da ferramenta que prevalecerá na configuração do ambiente do usuário.
BitsOfNix

Apenas uma observação sobre esta solução: YMMV. Nem sempre é "xterm". Usando dwm (Dynamic Window Manager) com dmenu no FreeBSD 10, eu tive que falsificar o terminal usando "rxvt" para obter o cenário 1. Você também pode pular a configuração de termos adicionando "set term = rxvt" ao seu arquivo ~ / .vimrc .
Ryder

18

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

A altscreen onopção de adição em ~ / .screenrc resolveu o problema. No 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'.

O @Fox OP não menciona nada sobre o TERM que ele está usando, então isso pode ser apenas uma resposta alternativa. De qualquer forma, esta página está no topo, enquanto pesquisava no Google por questões de tela.
BartBiczBoży

2
Isso fez o truque! Palavras-chave: "vim sair deixa o terminal de artefatos visuais"
Jay Taylor

0

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

A solução simples e correta é definir a seqüência de caracteres do tipo terminal xterme a velocidade 38400,38400do terminal em Detalhes do terminal nas configurações de massa em Conexão-> Dados.

Salve as configurações e pronto.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.