Come impostare il display bash in modo che non mostri il testo VIM dopo l'uscita?


28

La mia domanda è semplice, ma trovo difficile inquadrare / spiegarlo facilmente.

Accedo a diverse caselle Unix con account diversi. Vedo 2 cose diverse per user1e user2, durante la modifica di file di testo in VIM

user1

Quando vim filenamescrivo, vim si apre e modifico il file. Quando lo chiudo, il testo completo del file scompare e vedo il comando / output dei Teminals che era precedentemente presente.

user2

Quando vim filenamescrivo, vim si apre e modifico il file. Quando lo chiudo, la parte del file che era presente sul display mentre ero vimancora appare sul display e tutto il display del Terminale precedente viene spostato verso l'alto. Anche se il file era solo 1 riga, dopo essere uscito da vim, il display mostra la prima riga, con il resto tutto ~e vedo il prompt dei comandi nella parte inferiore dello schermo.

Dettagli

$ 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)

Ho confrontato i vimrcfile per entrambi gli utenti e sono a conoscenza di tutte le impostazioni e non trovo alcuna impostazione / configurazione relativa a questo comportamento.

Questo comportamento è correlato alla configurazione della shell? Come imposto le cose, in modo da ottenere il comportamento come mostrato nello user1scenario?

Non sono in grado di descriverlo facilmente, trovando difficile anche google, in quanto non so quale parola chiave cercare tale comportamento. Fammi sapere, se dovessi approfondire.


Sono user1e user2account sullo stesso o diverse macchine?
Jasonwryan,

@jasonwryan Anche la registrazione sulla stessa macchina mostra lo stesso scenario. @ warl0ck Grazie per quello.
mtk,

1
Se vuoi forzare questo comportamento ma mantenere il tuo tipo di terminale, aggiungi una riga al tuo .bashrc o .profile dicendo alias vi = "/ usr / bin / vi $ *; clear"
Criggie

Risposte:


24

Uno dei motivi di tale comportamento sarà l'impostazione del terminale per ciascun utente.

Per esempio:

  • Utente1 utilizza TERM = xterm , in questo caso quando si esce da VIM si cancella il terminale.
  • Utente2 sta usando TERM = vt100 , in questo caso quando si esce da Vim non cancellerà il terminale.

Controllare quale terminale user1 sta usando echo $TERMe impostare lo stesso per user2. per bash:

TERM = xterm; termine di esportazione


+1 Soluzione esatta / perfetta. Grazie !!! Non pensavo fosse così facile. Puoi per favore approfondire cosa TERMè un ? o puntare a qualche link di risorse? Ho bisogno di capirlo. Questo influisce solo quando ci connettiamo tramite putty?
mtk,

È possibile specificare l'impostazione del terminale nella sessione di stucco, ma gli utenti possono farlo specificare nelle variabili di ambiente. TERM definirà il tipo di terminale e alcuni avranno più funzionalità che altri, ad esempio, xterm supporta i colori e aggiornerà automaticamente le righe e le colonne. Se usi vt100, per impostazione predefinita sarà 24 righe per 80 colonne quando ridimensionerai il tuo terminale vedrai che si attacca a 24x80. Dai un'occhiata a questo unix.stackexchange.com/questions/43945/… , potrebbe spiegare meglio di me.
BitsOfNix

È il comportamento terminale, non la shell. Le impostazioni dell'emulatore di terminale sono le stesse qualunque sia lo strumento che usi per connetterti. La differenza è spiegata in dettaglio qui: unix.stackexchange.com/questions/4126/…
Leonid

@Leonid, non esattamente, se usi putty puoi definirlo e si aggiornerà quando ti connetti se l'utente non definisce TERM. Se l'utente lo ha definito, allora hai ragione, non importa quale strumento prevarrà sull'ambiente dell'utente.
BitsOfNix

Solo una nota su questa soluzione: YMMV. Non è sempre "xterm". Usando dwm (Dynamic Window Manager) con dmenu su FreeBSD 10 ho dovuto falsificare il terminale usando "rxvt" per ottenere lo scenario 1. Puoi anche saltare l'impostazione del termine aggiungendo "set term = rxvt" al tuo file ~ / .vimrc .
Ryder

18

Tale comportamento è stata l'unica cosa che mi ha tenuto lontano dall'uso screen. Usa il terminale "schermo" e cambiarlo in "xterm" non ha aiutato.

L'aggiunta altscreen ondell'opzione in ~ / .screenrc l'ha risolto. Dal manuale dello schermo:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.

@Fox OP non menziona nulla del TERM che sta usando, quindi questa può essere solo una risposta alternativa. Ad ogni modo questa pagina è in cima anche se si cerca su Google il problema dello schermo.
BartBiczBoży,

2
Questo ha fatto il trucco! Parole chiave: "vim quit lascia terminale artefatti visivi"
Jay Taylor

0

Ho provato tutte queste opzioni ma il risultato non è stato quello che mi aspettavo. !clearcancellerebbe l'intero schermo e non lascerebbe indietro i precedenti comandi bash.

La soluzione semplice e corretta consiste nell'impostare la stringa del tipo di xtermterminale e la velocità del 38400,38400terminale in Dettagli del terminale nelle impostazioni dello stucco in Connessione-> Dati.

Salva le impostazioni e sei a posto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.