Vim - SWP-Datei nach der Wiederherstellung automatisch löschen ändert die Originaldatei nicht

Vim - SWP-Datei nach der Wiederherstellung automatisch löschen ändert die Originaldatei nicht

Wenn der Vim-Prozess abrupt beendet wird (z. B. durch einen Systemabsturz), hinterlässt er eine SWP-Datei. Wenn man die Originaldatei später in Vim öffnet, hat man die Möglichkeit, sie wiederherzustellen. Meistens ist die wiederhergestellte Datei dieselbe wie die gespeicherte Datei, weil ich die Angewohnheit habe, oft zu speichern. Dann sagt Vim:

Recovery completed. Buffer contents equals file contents. 
You may want to delete the .swp file now.

Nun, natürlich möchte ich die .swp-Datei jetzt löschen!

Wie kann ich Vim dazu bringen, die SWP-Datei in diesem Fall immer automatisch zu löschen?

Es scheint keine integrierte Einstellung hierfür zu geben, daher suche ich nach einem entsprechenden Autocommand-Ereignis.

Eine Möglichkeit, die ich gefunden habe, besteht darin, :e #nach der Meldung, die dazu führt, dass die Swap-Exists-Optionen erneut angezeigt werden, „Löschen“ auszuwählen. Aber eigentlich sollte ich diese zusätzlichen Schritte nicht jedes Mal ausführen müssen.

Antwort1

Hinweis: Sie haben nicht angegeben, welches Betriebssystem Sie verwenden. Das Folgende funktioniert mit einer Unix-Shell, aber wenn Sie Windows verwenden, können Sie eine abgespeckte Cygwin- oder eine andere Shell herunterladen.

Ich habe früher dasselbe gemacht wie Sie: :edieselbe Datei erneut öffnen und die Option zum Löschen der Wiederherstellungsdatei erhalten. Nach einem Absturz oder einem unerwarteten Neustart des Computers säubere ich alle verbleibenden Vim-Wiederherstellungsdateien, indem ich vim -rdie Auslagerungsdateien ausführe und die Wiederherstellung fortführe.

Wenn Dateiennichtgeändert

Wenn sich die Dateien nicht geändert haben, möchte ich die Wiederherstellungsdatei sofort löschen. Es wäre toll, wenn Vim dies automatisch tun könnte, aber leider ist das nicht der Fall.

Wenn sich Dateien geändert haben

Wenn sich die Dateien geändert haben, führe ich den DiffOrigBefehl aus, um die Unterschiede zwischen der ursprünglichen und der wiederhergestellten Version zu vergleichen. Wenn ich mit den Änderungen der Wiederherstellungsdatei zufrieden bin, beende ich das Programm, indem ich die Dateien mit dem :xBefehl speichere. Wenn nicht, verwerfe ich die wiederhergestellten Änderungen, indem ich mit beende :q!. Wenn die Wiederherstellungsdatei keiner gespeicherten Datei zugeordnet ist, z. B. .swp, verwende ich normalerweise den Befehl , :w filenameum den wiederhergestellten Puffer in einer Datei mit einem Dateinamen zu speichern.

DiffOrig-Helfer

Ich habe hinzugefügt:DiffOrigBefehl an meinen .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 alle Swap-Dateien im aktuellen Verzeichnisbaum zu finden. Jede Swap-Datei wird dann verwendet, um Vim in"Wiederherstellungsmodus"und wird dann gelöscht, nachdem Vim geschlossen wurde.

find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;

Die rm -iOption erfordert eine Bestätigung ( y), um die Datei zu löschen. Wenn Sie sich sicherer fühlen und den Vorgang beschleunigen möchten, können Sie diese Option weglassen.

verwandte Informationen