Wo speichert VIM (gvim / macvim) Auslagerungsdateien für nicht gespeicherte / unbenannte Puffer?


52

Wo speichert VIM (gvim / macvim) Auslagerungsdateien für nicht gespeicherte / unbenannte Puffer? (Wenn es das überhaupt tut).

Hintergrund: Während eines halbintensiven Seminars machte ich mir Notizen in einem nicht benannten / nicht gespeicherten MacVim-Puffer, als das MacBook keinen Saft mehr hatte und aus dem Nichts abgeschaltet wurde (es schlief nicht wie gewöhnlich / hielt den Winterschlaf).

Frage: Würde jemand wissen, ob die Möglichkeit besteht, dass die nicht gespeicherte Arbeit in einer Auslagerungsdatei (.swp) oder dergleichen gespeichert wurde, die wiederhergestellt werden könnte?

Systemdetails : Dies geschah insbesondere mit MacVim unter Mac OS X 10.5.8 (mögliche Wiederherstellungshinweise für andere Versionen sind jedoch ebenfalls von Interesse). Ich habe MacVim noch nicht neu gestartet, falls dies einen Bereinigungsprozess auslöst.


1
Klarstellung: Mit ungespeichert meine ich nie gespeichert. Die Datei wurde durch Drücken von Befehlstaste-T (entspricht meiner Meinung nach: tabe) erstellt, dh ein neuer unbenannter Puffer wird in einer neuen Registerkarte geöffnet. (Normalerweise würde ich zu einem späteren Zeitpunkt ': save somefilename' machen.
davur

Spielt keine rolle Siehe die Ergänzungen zu meiner Antwort.
Frabjous

Antworten:


60

Starte vim und versuche:

:recover <filename>

Wenn die Datei nie einen Namen hatte, dann einfach:

:recover

Das ist deine beste Wette. Weitere Informationen zum Austauschen von Dateien und zur Wiederherstellung finden Sie unter:

:help usr_11

Bei den Auslagerungsdateien werden sie normalerweise im selben Verzeichnis wie die zu bearbeitende Datei gespeichert, jedoch mit einem. fügte den Anfang hinzu, um es zu verbergen, und .swp am Ende, aber es ist möglich, sie an eine andere Stelle zu verschieben:

:set directory=~/vimswap

oder ähnliches.

Sehen:

:help swap

Für alle Details.

Eine vim-Auslagerungsdatei ist jedoch nicht mit dem bearbeiteten Puffer identisch. Lesen Sie daher dort nach, was zur Wiederherstellung getan werden kann.


BEARBEITEN : Kommentare zur Beantwortung der Frage:

[…] Es scheint in Ihrem aktuellen Arbeitsverzeichnis, ~ / tmp, / var / tmp und / tmp, nach Auslagerungsdateien zu suchen, und in meinem Fall habe ich immer ein aktuelles Arbeitsverzeichnis und dort wurde es gespeichert. - Dsclementsen 5. Oktober 10 um 1:42 Uhr

Überprüfen Sie auch unbedingt das Befehlszeilenargument vim -r. Dadurch werden alle gefundenen Auslagerungsdateien und ihre Position ausgedruckt. Darüber hinaus enthält es viele zusätzliche Informationen wie Datum / geändert / Benutzername / etc ... - Neg_EV 5. Oktober 10 um 13:49 Uhr


Das wird nicht helfen. Mit ungespeichert meine ich nie gespeichert. Das heißt, ich habe einen neuen Puffer mit: tabe oder (Befehl + T) geöffnet. Wir sprechen also von einem nicht gespeicherten / unbenannten Puffer. Gibt es einen Standardspeicherort für diese Art von nicht gespeicherter Arbeit?
Davur

3
Versuchen Sie es :recoverohne Dateinamen. Ich habe das gerade getestet, um eine unbenannte Datei wiederherzustellen, und es hat funktioniert. Auf jeden Fall kann das Lesen dieser Hilfedateien hilfreich sein, auch wenn dieser bestimmte Befehl nicht hilft.
Frabjous

1
Soweit ich das beurteilen kann, ist es nicht so weit. Ich habe gerade getestet, indem ich vim extern getötet habe, während ich eine neue Datei bearbeitet habe. Aber wenn ich recoverohne Argument lief, ließ es mich sogar von einigen älteren Lernabschnitten wählen. Wie auch immer, die .swp-Datei für einen nicht beschädigten Puffer befindet sich wahrscheinlich in / tmp, aber sie würde woanders abhängen, je nachdem, ob Sie eine haben set directory= <something>.
Frabjous

2
Überprüfen Sie auch unbedingt das Befehlszeilenargument vim -r. Dadurch werden alle gefundenen Auslagerungsdateien und ihre Position ausgedruckt. Darüber hinaus enthält es viele zusätzliche Informationen wie Datum / geändert / Benutzername / etc ...
Neg_EV

1
Ich musste den Befehl verwenden :recover!, um meine nicht gespeicherte Datei wiederherzustellen.

2

Ich arbeite unter Windows 10 und :recoverhabe keine Auslagerungsdatei gefunden. vim -rlistet die Auslagerungsdatei der letzten (ebenfalls nie gespeicherten) Editiersitzung mit dem Namen _.swp auf. Erholung war möglich mit :recover _.


1

Die Antwort lautet: Überall. Der Trick ist, den richtigen zu finden. Einige befinden sich in Ihrem / tmp-Verzeichnis, viele befinden sich jedoch irgendwo in Ihrem Home-Verzeichnis.

Es gibt vielleicht effizientere Möglichkeiten, dies zu tun, aber das Folgende funktionierte für mich, als ich eine unbenannte Datei verlor (auf dem MacBook):

Suchen Sie im Ausgangsverzeichnis nach Sicherungsdateien (dauert einige Sekunden und kann möglicherweise intelligenter gestaltet werden):

find ./ -name ".s*" > findVimBackups.txt

Datei öffnen:

vim findVimBackups.txt

Entfernen Sie Dateinamen, die nicht für die Sicherung nicht benannter Dateien bestimmt sind:

:g!/\/\.s..$/d
:g/svn/d

Jetzt sehe ich eine Liste der Speicherorte unbenannter Sicherungsdateien. In jedem dieser Verzeichnisse führe ich Folgendes aus, bis ich die Datei (en) von heute finde:

ls -ltra <directory>

Ich gehe in das richtige Verzeichnis und öffne vim und tippe: recover und wähle das richtige Backup.


0

Es sieht so aus, als würden sie in Ihrem Arbeitsverzeichnis landen. :pwdDies ist der Ort, an dem Sie vim geöffnet haben, oder Sie haben es möglicherweise mit :cdo.ä. festgelegt.

Auslagerungsdateien für unbenannte Puffer werden anscheinend einfach ohne Dateinamen abgelegt, sodass Sie am Ende die Erweiterung .swp .swn .swo usw. haben verschiedene Suffixe!

Ich vermutete, dass viele unbenannte Puffer mit Änderungen die Ursache waren und das Löschen dieser Puffer dazu führte, dass die Mystery-Dateien verschwanden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.