2013-04-11 10 views
5

Dopo aver fatto una completa ri-messa a punto del mio ambiente Vim utilizzando varie estensioni standard c'è un comportamento che mi infastidisce molto molto:evitare di tenere Vim buffer aperti in background chiuso

Quando apro un file in una finestra divisa e chiudi di nuovo quella finestra (": wq") Vim sembra mantenere il buffer di file aperto in background. Quando provo ad aprire il file in una diversa scheda shell in una nuova istanza Vim, il file di scambio esiste ancora, cosa che mi impedisce di modificare il file.

Suppongo che ci sia un'impostazione che rende Vim mantenere i buffer aperti ma nascosti quando chiudo lo split, ma non sono riuscito a scoprire quale sia. Quello che realmente desidero è che Vim chiuda veramente i buffer quando chiudo le divisioni, così posso aprire nuovamente i file corrispondenti in una sessione Vim parallela.

Quello che mi aspetto è che il buffer venga chiuso non appena viene chiusa l'ultima finestra che lo mostra tramite ": q".

risposta

7

Verificare il valore dell'opzione hidden utilizzando :set hidden?. Di default, vim ha questo set su nohidden, che dovrebbe produrre il comportamento che stai richiedendo; i buffer vengono scaricati quando vengono abbandonati (il che significa che nessuna finestra li sta visualizzando). È possibile che questa impostazione sia impostata su hidden, che causa il comportamento che stai riscontrando; i buffer diventano nascosti quando vengono abbandonati.

Do :help 'hidden' per ulteriori informazioni.

+0

Questo era esattamente quello che mi mancava. Grazie! :) – tobyS

0

io non sono sicuro di come si sta chiudendo una scissione, ad esempio utilizzando CtrlWCtrlo nell'altra finestra o CtrlWCtrlq, ma io non pensare che questo dovrebbe chiudere anche il buffer. La divisione è solo un metodo di gestione delle finestre, non uno di gestione del buffer.

Se in una divisione, si desidera chiudere un buffer e la relativa finestra, perché non si utilizza :bd? Chiuderà esplicitamente il buffer.

+0

In genere chiudo la divisione utilizzando ": q", che mi aspetto di chiudere la finestra e il buffer. Almeno questo è il comportamento a cui sono abituato. – tobyS

+0

@tobyS: grazie per il chiarimento. Se si controlla ': help: q' si dice che uscirà solo dalla * finestra *, non dice nulla sul buffer. Quindi è il comportamento normale. –

0

Stai cercando il :bw[ipeout].

2

Penso che tu stia confondendo i buffer con Windows. Una buona spiegazione della differenza può essere trovata here.

Suggerisco anche questo read. Ha un esempio di script che chiude i buffer senza chiudere la finestra, che dovrebbe essere l'effetto che hai descritto.

Cheers, spero che questo aiuti.

+0

Ci scusiamo per aver confuso la terminologia. Ho aggiornato la domanda per aver ragione e ho provato a chiarire quale comportamento mi aspetto. Per quanto ho potuto vedere, entrambi i riferimenti non spiegano su questo, vero? – tobyS