Come posso ricaricare tutti i buffer contemporaneamente?


20

Quando si lavora su un ramo di funzionalità in git, ho spesso bisogno di riporre le mie modifiche per eseguire il commit di una correzione di bug nel ramo principale. Quando ho finito di lavorare sulle modifiche, I git stash pop, che aggiorna i timestamp sui file.

Anche se i file sono identici, la prossima volta che provo a salvare, ottengo:

ATTENZIONE: il file è stato modificato dalla sua lettura !!!

Vuoi davvero scrivergli (sì / no)?

Non voglio ricaricare automaticamente il file ogni volta che cambia su disco, solo quando lo faccio git stash pop.

In questo momento, ricarico manualmente ogni buffer singolarmente ( :e). C'è un modo per farlo in un solo comando?

Risposte:


26

Vedi :help bufdoper quello che vuoi fare. Eseguirà un comando in ciascun buffer nell'elenco buffer. Per esempio:

:bufdo e

Puoi anche cercare :help noconfirmdi disabilitare la finestra di dialogo di conferma prima di emettere il bufdocomando

:set noconfirm

e riattivarlo dopo il bufdocomando.

:set confirm

1
Per forza, provare: :bufdo! e.
Kenorb,

e senza stampare messaggi sullo schermo: silenzioso! bufdo e
Werner,

12

Puoi farlo con il :checktimecomando. Dai documenti :

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

Il comando ti chiederà cosa fare per ogni buffer il cui file ha un timestamp modificato. Per disabilitarlo per i file che non sono stati modificati, è possibile :set autoreadforzare Vim a ricaricarli. vim ti chiederà se il contenuto tra il buffer e il file sul disco è cambiato.

È possibile impostare una mappa come la seguente per facilità d'uso:

nnoremap <F5> :checktime<CR>

Ecco alcune informazioni sui bonus che in realtà non fanno parte della risposta: Per me, su OpenSUSE, gvim (la GUI GTK per vim) lo fa automaticamente quando diventa attivo. Non so davvero perché lo faccia e non ho controllato altri sistemi, ma ho pensato che potesse essere utile come extra. Forse qualcuno può confermare?
Tokoyami,

Questo è davvero utile! Quello che ho fatto da parte mia è stato quello di integrare questo comando come parte delle mie scorciatoie da tastiera. vale a dirennoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith il

1
@tokoyami, la funzione che hai gvimpotrebbe essere correlata FocusGainedall'evento in vim. Puoi trovare alcune informazioni correlate qui - unix.stackexchange.com/a/383044/99801 .
Victor Yarema,
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.