Apro diversi file in Vim, ad esempio, eseguendo
vim a/*.php
che apre 23 file.
Quindi apporto la mia modifica ed eseguo due volte quanto segue
:q
che chiude tutti i miei buffer.
Come puoi chiudere un solo buffer in Vim?
Apro diversi file in Vim, ad esempio, eseguendo
vim a/*.php
che apre 23 file.
Quindi apporto la mia modifica ed eseguo due volte quanto segue
:q
che chiude tutti i miei buffer.
Come puoi chiudere un solo buffer in Vim?
Risposte:
Un avvertimento: "il w in bw non è sinonimo di scrittura ma di cancellazione!"
Altro dai manuali:
: bd
Scaricare il buffer [N] (impostazione predefinita: buffer corrente) ed eliminarlo dall'elenco dei buffer. Se il buffer è stato modificato, ciò ha esito negativo, a meno che non venga specificato [!], Nel qual caso le modifiche vanno perse. Il file rimane inalterato.
Se sai cosa stai facendo, puoi anche usare: bw
: bw
Come |: bdelete |, ma cancella davvero il buffer.
:bw
se "sai cosa stai facendo", cosa che non faccio, quindi immagino che userò :bd
.
:bd
) si chiude anche la scheda. Quello che probabilmente vuoi è :bd n .. [m]
o :n,mbd
per numeri specifici o un intervallo di numeri da chiudere, cosa che puoi fare senza guardare ai buffer
w
è l'abbreviazione di write
comando secondo il manuale di Vim, inoltre non si fa menzione di alcun "wipeout". La descrizione del comando ( help write
) inizia con "Scrivi l'intero buffer nel file corrente".
w
nel bw
comando significa cancellare non sta parlando del w
comando. Ha messo questo avviso lì in modo che la gente non pensasse che il bw
comando significasse buffer write (che non significa buffer wipeout).
Se ciò non è reso evidente dalle risposte precedenti:
: bd chiuderà il buffer corrente. Se non vuoi afferrare l'elenco dei buffer.
:bd
chiude solo il buffer considerando che (qualunque cosa ciò significhi) considerando :bw
che cancella anche tutte le variabili e REALMENTE lo elimina dal ls
buffer.
Controlla il tuo ID buffer usando: buffer
vedrai un elenco di buffer lì come
1 a.php
2 b.php
3 c.php
se vuoi rimuovere b.php dal buffer
:2bw
se si desidera rimuovere / chiudere tutto dai buffer
:1,3bw
Invece di sfogliare l'output del comando: ls ed eliminare (unload, wipe ..) un buffer specificandone il numero, trovo che l'uso dei nomi dei file sia spesso più efficace.
Ad esempio, dopo aver aperto un paio di file .txt per aggiornare i miei ricordi di qualche punto preciso ... copia e incolla alcune righe di testo da utilizzare come modello di sorta ... ecc. Digiterei quanto segue:
:bd txt <Tab>
Notare che la stringa corrispondente non deve essere all'inizio del nome del file.
Quanto sopra mostra l'elenco dei nomi dei file che corrispondono a 'txt' nella parte inferiore dello schermo e mantiene il comando: bd inizialmente digitato intatto, pronto per essere completato.
Ecco un esempio:
doc1.txt doc2.txt
:bd txt
Potrei eseguire il backspace sul bit 'txt' e digitare il nome del file che desidero eliminare, ma dove questo diventa davvero conveniente è che non devo: se premo il tasto Tab una seconda volta, Vim completa automaticamente il mio comando con la prima partita:
:bd doc1.txt
Se voglio liberarmi di questo particolare buffer, devo solo premere Invio.
E se il buffer che voglio eliminare sembra essere la seconda (terza ... ecc.) Corrispondenza, devo solo continuare a premere il tasto Tab per far scorrere il mio comando: bd nell'elenco delle corrispondenze.
Naturalmente, questo metodo può essere utilizzato anche per passare a un determinato buffer tramite comandi come: b ..: sb .. ecc.
Questo approccio è particolarmente utile quando è impostata l'opzione 'nascosta' Vim, perché l'elenco dei buffer può rapidamente diventare abbastanza grande, coprendo diverse schermate e rendendo difficile individuare il buffer particolare che sto cercando.
Per sfruttare al meglio questa funzionalità, è probabilmente consigliabile leggere il seguente file della guida di Vim e modificare di conseguenza il comportamento del completamento della riga di comando di Tab in modo che si adatti al meglio al flusso di lavoro:
:help wildmode
Il comportamento che ho descritto sopra deriva dalla seguente impostazione, che ho scelto per motivi di coerenza al fine di emulare il completamento bash:
:set wildmode=list:longest,full
A differenza dell'utilizzo dei numeri di buffer, il merito di questo approccio è che di solito ricordo almeno parte di un determinato nome di file che mi ha permesso di indirizzare direttamente il buffer anziché dover prima cercare il suo numero tramite il comando: ls.
[EDIT: questo è stato un suggerimento stupido da quando non conoscevo abbastanza bene Vim. Si prega di non utilizzare le schede anziché i buffer; le schede sono i "layout di finestra" di Vim]
Forse passare all'utilizzo delle schede?
vim -p a/*.php
apre gli stessi file nelle schede
gt
e gT
cambia scheda avanti e indietro
:q
chiude solo la scheda corrente
:qa
chiude tutto ed esce
:tabo
chiude tutto tranne la scheda corrente
vim-nox
pacchetto di Ubuntu ha il supporto di Ruby.
Coloro che utilizzano un plug-in di buffer o di navigazione ad albero, come Buffergator o NERDTree, dovranno attivare o disattivare queste suddivisioni prima di distruggere il buffer corrente, altrimenti invierai le suddivisioni in wonkyville
Io uso:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Dove " NERDTreeToggle
" in quell'elenco equivale a digitare :NERDTreeToggle
. È possibile modificare questa funzione per integrarla con la propria configurazione.
:bdelete
o :bwipeout
. Vedere la mia risposta .
Se vuoi chiudere un buffer senza distruggere il layout della tua finestra (layout attuale basato su split), puoi usare un plugin come bbye . Sulla base di questo, puoi semplicemente usare
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
O semplicemente creare una mappatura nella tua .vimrc
per un accesso più facile come
:nnoremap <Leader>q :Bdelete<CR>
Dalla documentazione del plug-in :
- Chiudere e rimuovere il buffer.
- Mostra un altro file in quella finestra.
- Mostra un file vuoto se non hai altri file aperti.
- Non lasciare inutili buffer [nessun file] se si decide di modificare un altro file in quella finestra.
- Funziona anche se un file è aperto in più finestre.
- Lavora bene con vari esploratori di buffer e schede.
Dalla documentazione del plug-in :
Vim ha due comandi per chiudere un buffer:
:bdelete
e:bwipeout
. Il primo rimuove il file dall'elenco dei buffer, cancella le sue opzioni, variabili e mappature. Tuttavia, rimane nella jumplist, quindiCtrl-o
ti riporta indietro e riapre il file. Se non è quello che vuoi, usa:bwipeout
o l'equivalente di Bbye:Bwipeout
dove avresti usato:bdelete
.
vim -o a/*.php
(o-O
usare finestre verticali) ed evitare la navigazione del buffer - questo è un ottimo metodo per solo pochi file, ma con 23 file avranno solo poche righe / colonne ogni.