Antworten:
vim -r .swp
Dies geht in den Wiederherstellungsmodus und gibt Ihnen weitere Informationen. Ich denke das ist was du willst.
.swX
-Dateien bleiben zurück, wenn eine Sitzung mit einer nicht gespeicherten Datei beendet wird / abstürzt / etwas anderes Schlimmes passiert. Sie sind auch während der Zeit vorhanden, in der ein nicht gespeicherter Puffer in einer Vim-Sitzung geöffnet ist. vim -r
Liest diese temporären Dateien und erstellt den Inhalt neu. Nachdem Sie es wiederhergestellt haben, speichern Sie es einfach wie gewohnt, z :w newfilename
.
Sie benötigen nicht die Originaldatei, um die .swp-Datei wiederherzustellen. Öffnen Sie einfach die Datei, als ob sie existiert. vim sucht nach der Datei mit der Erweiterung .swp und bietet an, sie wiederherzustellen.
z.B:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Drücken Sie einfach R, um es wiederherzustellen und: wq die Datei
Bearbeiten: Beachten Sie, dass die .swp-Datei nur die Änderungen enthält, die an der Datei vorgenommen wurden (siehe Kommentar). Dies bedeutet, dass Sie eine aktuelle Kopie der Datei aus der Sicherung abrufen und dann mit vim die neuesten Änderungen wiederherstellen müssen. Wenn Sie keine Sicherungskopie der Datei haben, haben Sie wirklich Pech.
The original file is no longer needed for recovery.
:preserve
und :set cpoptions=...&
belässt eine SWP- und eine SWO-Datei im Verzeichnis und bietet die Wiederherstellung von beiden an. Mit vim -r <file>
können Sie zwischen .swp und .swo wählen. Weitere Bearbeitungen erzeugen .swn, .swm usw., die anscheinend die Teilsumme der bis zu diesem Zeitpunkt getauschten Änderungen sind. Sie können auf die Version zurückgreifen, die Ihnen gefällt, und sie bearbeiten (~ = Fork) oder speichern (~ = Stash). Schließlich können Sie die Auslagerungsdateien tarieren, ihre Sicherungen dämonisieren usw. Ich könnte mich in Bezug auf die Details bei größeren Dateien irren - ich bin mir nicht sicher, wie sich dies auf die zusätzlichen Auslagerungsdateien auswirkt - siehe unten.
Öffnen Sie die Originaldatei mit vim und wählen Sie die Wiederherstellungsoption.
Nachdem ich die Kommentare von Vegar Westerlund und Heptite gelesen hatte, wollte ich wissen, an welchem Punkt vim die Originaldatei (oder eine Sicherungskopie) benötigt, um von einer SWP-Datei wiederherzustellen. Folgendes hat getan:
Ich habe eine 975-Zeilen-Datei geöffnet, in Zeile 949 bearbeitet (eine .swp
Datei erstellt), den Vorgang abgebrochen und dann das Original gelöscht. $ vim Original_File
fragte, ob ich mich von der .swp erholen wollte »> yes; Nur die ersten 68 Zeilen und die letzten 34 Zeilen (beginnend mit 8 Zeilen oberhalb meiner Bearbeitung) wurden tatsächlich wiederhergestellt.
Ich habe den Test dann mit kleineren Dateien wiederholt: Von 20 bis 200 Zeilen enthielt die .swp-Datei 100% des ursprünglichen Inhalts. Bei 300 Zeilen waren jedoch nur die ersten 68 und die letzten 18 Zeilen (beginnend mit 2 Zeilen über meiner Bearbeitung) in der SWP-Datei enthalten.
Als Fazit ist es gut zu wissen, dass vim immer die "Header" und "Bottom" der Datei in den .swp-Dateien speichert. Vielleicht gibt es eine Einstellung, um zu steuern, wie viele Zeilen eine .swp-Datei enthalten soll?