2013-09-05 7 views
6

Wie kann ich eine vim-Datei aus der Datei undo wiederherstellen, ohne undo zu treffen?Wiederherstellen einer vim-Datei aus der .un ~ Datei ohne den Rückgängig-Befehl

Ich hatte eine vim-Datei, die ich beim Hinzufügen von Text gespeichert habe. Dann habe ich einen Python-Befehl ausgeführt, der den Inhalt der Datei geleert hat, und ich kann einige der Wörter sehen, die die Datei in der Datei .un~ der Datei enthält. Wenn ich versuche, in der Datei rückgängig zu machen, heißt es Already at latest change. Ich kann die Auslagerungsdatei in meinem Auslagerungsdateiverzeichnis nicht finden.

+0

Sie können die swp-Datei nicht finden, weil Sie den vim verlassen haben. Was ist die Ausgabe von 'set bk?' und 'set wb?' – Kent

+0

Beide Befehle produzieren keine Ausgabe. –

+0

Das Fragezeichen '?' Ist ein Teil des Befehls. Ich versuche, Ihre Backup-Einstellung zu erhalten, um zu sehen, ob es möglich ist, die Datei von Ihrer vim-backup-Datei wiederherzustellen. – Kent

Antwort

7

Sie können nicht. Die Rückgängig-Information ist mit Vims letztem Wissen über den Inhalt der Datei verknüpft; Wenn sie nicht mehr übereinstimmen, kann Vim die Änderungen nicht erneut anwenden. Dies ist bei :help undo-persistence dokumentiert:

Vim erkennt, wenn eine Undo-Datei wird nicht mehr mit der Datei synchronisiert wurde für geschrieben (mit einem Hash der Dateiinhalte) und es ignorieren, wenn die Datei wurde geändert, nachdem Die Undo-Datei wurde geschrieben, um Korruption zu verhindern.

Am besten können Sie versuchen, erkennbare Bits in der Undo-Datei, z. mit einem Hex-Editor oder Vim binären Modus.

+0

Ich habe es geschafft, einige der laufenden Strings auf der Undo-Datei zu retten –

4

Es ist nicht genau möglich, da die Undo-Datei nur den Text enthält, der in einer einzigen Änderung geändert wurde. Wenn Sie die Datei irgendwann neu laden, sollte das Undofile den vollständigen Puffer dafür enthalten und von dort aus könnte man theoretisch die Datei wiederherstellen (indem man die Undo-Zustände durchläuft).

Ich habe vor an der vim_use Mailingliste darüber geschrieben here und here (which even contains a patch, that let's you force reading in the undo-file)

Sie könnten versuchen, Vim zu flicken und sehen, wenn Sie zumindest einige Daten wiederherstellen können.

Verwandte Themen