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.

Antworten:


87

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


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


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()

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.