Ich habe eine Konfigurationsdatei, die ich in vim geöffnet habe, die sich jedoch manchmal auf der Festplatte ändert, ohne dass sich diese Änderungen auf dem Terminal niederschlagen. Kann ich den Inhalt auf dem Bildschirm aktualisieren, ohne die Datei zu schließen und erneut zu öffnen? Wenn das so ist, wie?
362
Antworten:
Sie können den
:edit
Befehl verwenden, ohne einen Dateinamen anzugeben, um die aktuelle Datei neu zu laden. Wenn Sie Änderungen an der Datei vorgenommen haben, können Sie:edit!
das erneute Laden der aktuellen Datei erzwingen (Sie verlieren Ihre Änderungen).Der Befehl
:edit
kann mit abgekürzt werden:e
. Das Force-Edit kann somit per erfolgen:e!
quelle
:e!
.:edit
und:edit!
kannst du auch:e
und benutzen:e!
.u
die:e!
.:bufdo e
Zusätzlich zum manuellen Aktualisieren der Datei mit
:edit
können Sie sie in Ihre einfügen~/.vimrc
Damit aktualisiert Vim automatisch alle Dateien, die nicht von Vim bearbeitet wurden. Siehe auch
:checktime
.quelle
git pull
sich dessen bewusst sind, dass Sie Ihre nicht gespeicherten Änderungen eher ungewollt auf dem Bildschirm verlieren könnten.gvim
externe Befehle verwenden oder ausführen.:checktime
autoread
kann X Sekunden nach dem Anhalten des Cursors automatisch ausgelöst werden (siehe diese Antwort) .TL; DR
Überspringen Sie die
Wrap-up
Überschrift dervimrc
Zeilen, die hinzugefügt werden sollen, um Ihr Leben zu verbessern.Manuell
Lauf
:checktime
Automatisch
Um Änderungen automatisch zu laden, fügen Sie Folgendes hinzu
vimrc
:set autoread
Diese Antwort fügt eine Einschränkung hinzu:
Lesen Sie weiter für Lösungen.
Wird ausgelöst, wenn sich der Cursor nicht mehr bewegt
Hinzufügen zu
vimrc
:Standardmäßig wird CursorHold ausgelöst, nachdem der Cursor 4 Sekunden lang stillsteht , und kann über die Aktualisierungszeit konfiguriert werden .
Trigger bei Pufferwechsel oder Terminalfokus
Fügen Sie Folgendes zu Ihrem
vimrc
Trigger hinzu,autoread
wenn Sie die Puffer innerhalb von vim ändern :Auffälliger Fokus des Terminalfensters innerhalb von Plain Vim
Um
FocusGained
(siehe oben) in plain vim arbeiten zu können, muss in einem Terminal-Emulator (Xterm, tmux usw.) das Plugin installiert werden: vim-tmux-focus-eventsIn tmux-Versionen> 1.9 müssen Sie Folgendes hinzufügen
.tmux.conf
:Einpacken
Benachrichtigungen, wenn
autoread
Trigger möglich sind .Hier sind meine
vimrc
Zeilen, um all das zu implementieren:Danke an ErichBSchulz, der mich mit in die richtige Richtung gelenkt hat
au CursorHold
.quelle