Hinweis: Sie haben nicht angegeben, welches Betriebssystem Sie verwenden. Das Folgende funktioniert mit einer Unix-Shell, aber wenn Sie Windows ausführen, können Sie einen Bare-Bones-Cygwin oder eine andere Shell herunterladen.
Ich habe das Gleiche wie Sie getan und ausgeführt :e
, um dieselbe Datei erneut zu öffnen und die Option zum Löschen der Wiederherstellungsdatei zu erhalten. Nach einem Absturz oder einem unerwarteten Neustart des Computers bereinige ich alle verbleibenden Vim-Wiederherstellungsdateien, indem ich vim -r
die Auslagerungsdateien ausführe und die Wiederherstellung fortsetzen lasse.
Wenn sich die Dateien nicht geändert haben
Wenn sich die Dateien nicht geändert haben, möchte ich die Wiederherstellungsdatei sofort löschen. Es wäre großartig, wenn Vim dies automatisch tun könnte, aber leider nicht.
Wenn sich Dateien geändert haben
Wenn sich die Dateien geändert haben, führe ich den DiffOrig
Befehl aus, um die Unterschiede zwischen der ursprünglichen und der wiederhergestellten Version zu vergleichen. Wenn ich mit den Änderungen aus der Wiederherstellungsdatei zufrieden bin, speichere ich die Dateien mit dem :x
Befehl. Wenn nicht, verwerfe ich die wiederhergestellten Änderungen, indem ich mit beende :q!
. Wenn die Wiederherstellungsdatei keiner gespeicherten Datei zugeordnet ist, z. B. verwende .swp
ich normalerweise die :w filename
, um den wiederhergestellten Puffer in einer Datei mit einem Dateinamen zu speichern.
DiffOrig-Helfer
Ich habe den Befehl DiffOrig zu meinem hinzugefügt , .vimrc
damit er immer verfügbar ist.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Shell-Skript
Ich führe das folgende Skript in meiner Shell aus, um jede Auslagerungsdatei im aktuellen Verzeichnisbaum zu finden. Jede Auslagerungsdatei wird dann zum Öffnen von Vim im „Wiederherstellungsmodus“ verwendet und nach dem Schließen von Vim gelöscht.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
Die rm -i
Option erfordert eine Bestätigung ( y
), um die Datei zu löschen. Wenn Sie sicherer sind und den Prozess beschleunigen möchten, kann dies weggelassen werden.
:e #
Trick zwar nicht ideal, aber dennoch nützlicher als die aktuelle Antwort unten. :-)