Aktualisieren Sie alle Dateien im Puffer von der Festplatte in vim

123

Der Befehl zum Aktualisieren einer Datei von der Version auf der Festplatte lautet :e!

Wie kann ich für alle Dateien im Puffer dasselbe tun?

Hintergrund: Ich brauche das, weil ich git mit mehreren Zweigen verwende, wobei ein vim offen ist und einen Puffer enthält. Wenn ich einen Zweig auschecke, möchte ich vim aktualisieren.

odwl
quelle

Antworten:

87

Lesen Sie die Dokumentation für bufdo, es sollte tun, was Sie wollen.

pmf
quelle
33
ok toll also ,: bufdo e! wird das machen. Es wird jedoch jedes Mal eine Eingabeaufforderung (J / N) angezeigt. Wie kann ich es loswerden?
Odwl
21
Verwenden Sie diese Option, set noconfirmbevor Sie den bufdoBefehl verwenden ( set confirmdanach erneut aktivieren).
PMF
22
bufdo elässt seltsamerweise alle Puffer ohne Syntax hervorgehoben
Steven Lu
4
@StevenLu Überprüfen Sie die Antwort von PaulFenney unten.
DBedrenko
12
Warum stimmen die Leute darüber ab? Es ist nicht nur keine Antwort, sondern die Richtung, in die es Sie führt, bedeutet, dass Ihre Syntaxhervorhebung nach dem Neuladen deaktiviert wird.
Dmitry Minkovsky
120

Der :checkt[ime]Befehl ist genau für diesen Zweck konzipiert.

Sie werden aufgefordert, alle geänderten Puffer neu zu laden. Wenn Sie die Eingabeaufforderung überspringen möchten, können Sie dies im :set autoreadVoraus tun (Sie erhalten weiterhin eine Eingabeaufforderung für Puffer mit lokalen nicht gespeicherten Änderungen).

Außerdem wird das von Steven Lu in der akzeptierten Antwort erwähnte Problem der Syntaxhervorhebung vermieden. :bufdoDeaktiviert die Syntaxhervorhebung durch das Design .

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

Paul Fenney
quelle
19

Folgendes habe ich in meine .vimrc eingefügt:

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

nmap <leader>gr call PullAndRefresh()
Ivan
quelle
7

Von :help autoread:

Wenn festgestellt wurde, dass eine Datei außerhalb von Vim geändert wurde und innerhalb von Vim nicht geändert wurde, lesen Sie sie automatisch erneut. Wenn die Datei gelöscht wurde, erfolgt dies nicht.

Wenn Sie, wie ich, nur immer passiv wollen veraltete, aber nicht modifizierte Puffer neu laden sollte dies die Aufgabe erledigen.

Das letzte Detail ist jedoch, wenn vim den veralteten Puffer bemerkt. Das kann mit erzwungen werden checktime. Wenn Sie Fokusereignisse eingerichtet haben , können wir ausgeführt werden, checktimewann immer wir den Fokus wie folgt erhalten:

set autoread
autocmd FocusGained * checktime

Diese Antwort enthält auch einige interessante Details.

phs
quelle