Wo speichert VIM (gvim/macvim) Auslagerungsdateien für nicht gespeicherte/unbenannte Puffer? (Falls dies überhaupt der Fall ist).
Hintergrund: Während eines mittelintensiven Seminars machte ich mir Notizen in einem unbenannten/nicht gespeicherten MacVim-Puffer, als dem MacBook der Saft ausging und es sich aus heiterem Himmel ausschaltete (es ging nicht wie üblich in den Ruhezustand bzw. in den Energiesparmodus).
Frage: Weiß jemand, ob die Möglichkeit besteht, dass die nicht gespeicherte Arbeit in einer Auslagerungsdatei (.swp) oder Ähnlichem gespeichert wurde und wiederhergestellt werden könnte?
Systemdetails: Dies geschah insbesondere bei der Verwendung von MacVim auf einem Mac OS X 10.5.8 (mögliche Wiederherstellungshinweise für andere Versionen sind jedoch auch von Interesse). Ich habe MacVim noch nicht neu gestartet, falls dadurch ein Bereinigungsprozess gestartet würde.
Antwort1
Starten Sie vim und versuchen Sie:
:recover <filename>
Wenn die Datei nie einen Namen hatte, dann einfach:
:recover
Das ist Ihre beste Option. Weitere Informationen zu Auslagerungsdateien und Wiederherstellung finden Sie unter:
:help usr_11
Was die Auslagerungsdateien betrifft, so werden sie normalerweise im selben Verzeichnis wie die zu bearbeitende Datei gespeichert, jedoch mit einem . am Anfang, um sie zu verbergen, und .swp am Ende. Sie können sie aber auch mit etwas wie dem folgenden an eine andere Stelle verschieben:
:set directory=~/vimswap
o.ä.
Sehen:
:help swap
Für alle Einzelheiten.
Eine Vim-Auslagerungsdatei ist allerdings nicht dasselbe wie der bearbeitete Puffer. Lesen Sie sich daher unbedingt dort nach, was zur Wiederherstellung getan werden kann.
BEARBEITEN: Kommentare als Antwort auf die 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 festgelegt und dort wurde es gespeichert.– dsclementsen 5. Okt. 10 um 1:42
Schauen Sie sich auch unbedingt das Befehlszeilenargument vim -r an. Dadurch werden alle gefundenen Auslagerungsdateien und ihr Speicherort ausgedruckt. Darüber hinaus enthält es viele zusätzliche Informationen wie Datum/Änderung/Benutzername/usw.– Neg_EV 5. Okt. 2010 um 13:49
Antwort2
Ich arbeite unter Windows 10 und :recover
konnte keine Auslagerungsdatei finden. vim -r
Die Auslagerungsdatei der letzten Bearbeitungssitzung (ebenfalls nie gespeichert) mit dem Namen _.swp wurde aufgelistet. Die Wiederherstellung war mit möglich :recover _
.
Antwort3
Die Antwort lautet: überall. Der Trick besteht darin, das richtige zu finden. Einige befinden sich in Ihrem /tmp-Verzeichnis, viele jedoch irgendwo in Ihrem Home-Verzeichnis.
Es gibt hierfür vielleicht effizientere Möglichkeiten, aber Folgendes hat bei mir funktioniert, als ich eine unbenannte Datei verloren habe (auf dem MacBook):
im Home-Verzeichnis nach Backup-Dateien suchen (dauert ein paar Sekunden und kann wahrscheinlich intelligenter gestaltet werden):
find ./ -name ".s*" > findVimBackups.txt
Datei öffnen:
vim findVimBackups.txt
Entfernen Sie Dateinamen, die nicht für die Sicherung unbenannter Dateien bestimmt sind:
:g!/\/\.s..$/d
:g/svn/d
Jetzt wird mir eine Liste mit den Speicherorten der unbenannten Backup-Dateien angezeigt. In jedem dieser Verzeichnisse führe ich Folgendes aus, bis ich die Datei(en) von heute finde:
ls -ltra <directory>
Ich wechsle in das richtige Verzeichnis, öffne vim, gebe :recover ein und wähle das richtige Backup aus.
Antwort4
Ich konnte meine Datei auf einer Win 10-Box wie folgt wiederherstellen:
Gehen Sie in das Verzeichnis, in dem Sie Vim zuletzt geöffnet haben. Bei mir war das über die Vim-Verknüpfung in der Taskleiste von Windows 10. Klicken Sie mit der rechten Maustaste auf das Vim-Symbol, klicken Sie erneut mit der rechten Maustaste auf die Vim-Verknüpfung und wählen Sie „Eigenschaften“. Ein Dialogfeld wird angezeigt. Der Wert im Feld „Starten in:“ in diesem Dialogfeld ist der, in dem ich Vim tatsächlich zuletzt geöffnet habe. Bei mir war dieser Wert %HOMEDRIVE%%HOMEPATH%
. Gehen Sie zu einer DOS-Befehlskonsole und rufen Sie die Befehle auf echo %HOMEDRIVE%
, echo %HOMEPATH%
um festzustellen, wo sich das befindet.
Untersuchen Sie die letzten Änderungsdaten aller _.s*-Dateien in diesem Verzeichnis. Suchen Sie die Datei mit dem letzten Änderungsdatum, das mit dem Datum übereinstimmt, an dem Sie die Datei zuletzt geöffnet haben.
Öffnen Sie vim. Geben Sie :recover _filename_
where einDateinameist die Datei, die Sie in der vorherigen Anleitung gefunden haben.