Aggiorna tutti i file nel buffer dal disco in vim


124

Il comando per aggiornare un file dalla versione su disco è :e!

Come posso fare lo stesso per tutti i file nel buffer?

Background: ne ho bisogno perché sto usando git con più rami con un vim aperto che contiene un buffer. Quando eseguo il checkout di una filiale, desidero aggiornare vim.

Risposte:


87

Leggi la documentazione per bufdo, dovrebbe fare quello che vuoi.


33
ok fantastico quindi,: bufdo e! lo farà. Ma ogni volta viene visualizzato un prompt Load (S / N). Come posso sbarazzarmene?
odwl

21
Utilizzare set noconfirmprima di utilizzare il bufdocomando (in set confirmseguito per rianalizzarlo).
pmf

22
bufdo ecuriosamente lascia tutti i buffer non evidenziati dalla sintassi
Steven Lu

4
@StevenLu Controlla la risposta di PaulFenney di seguito.
DBedrenko

12
Perché le persone votano? Non solo non è una risposta, ma la direzione che ti porta significa che l'evidenziazione della sintassi viene disabilitata dopo il ricaricamento.
Dmitry Minkovsky

120

Il :checkt[ime]comando è progettato proprio per questo scopo.

Ti chiederà di ricaricare tutti i buffer che sono cambiati; se desideri saltare il prompt, puoi farlo in :set autoreadanticipo (riceverai comunque un prompt sui buffer con modifiche locali non salvate).

Evita anche il problema di evidenziazione della sintassi menzionato da Steven Lu nella risposta accettata; :bufdodisattiva l'evidenziazione della sintassi in base alla progettazione .

Trovato tramite: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

Ecco cosa ho finito per inserire nel mio .vimrc:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

Da :help autoread:

Quando viene rilevato che un file è stato modificato al di fuori di Vim e non è stato modificato all'interno di Vim, leggerlo di nuovo automaticamente. Quando il file è stato cancellato, ciò non viene fatto.

Se, come me, vuoi sempre passivamente ricaricare buffer obsoleti ma non modificati, allora sembra che dovrebbe portare a termine il lavoro.

Tuttavia, il dettaglio finale è quando vim nota il buffer non aggiornato. Questo può essere forzato con checktime. Se hai impostato eventi di messa a fuoco , possiamo eseguire checktimeogni volta che otteniamo la messa a fuoco in questo modo:

set autoread
autocmd FocusGained * checktime

Questa risposta ha anche alcuni dettagli interessanti.


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.