Jedes Mal, wenn ich aus einer Sitzung in Vim ausschied, weil ich die Verbindung verloren habe, bin ich ziemlich voll mit Dred (und ich benutze Vim trotzdem weiter ... was für ein Masochist ich sein muss), denn wenn ich meine Akten wieder öffne, Akten warten darauf, meine Arbeit zu zerstören. Was sind die Best Practices für die Arbeit mit VIM-Auslagerungsdateien? Wählen Sie einfach die neueste aus? Wenn die Datei wie erwartet funktioniert, löschen Sie einfach die Auslagerungsdateien? Wie werden Sie sie los?
14
Antworten:
Keine Panik!
Wiederherstellen von Dateien ist immer sicher, da vim nie irgendwelche Änderungen schreibt , bis Sie sie selbst schreiben. Das Wiederherstellen von einer Auslagerungsdatei und das anschließende Schließen ohne Speichern ändern also nichts.
Organisieren Sie Ihre Swap-Dateien:
Bitten Sie vim, alle Ihre Auslagerungsdateien am selben Ort abzulegen, damit Sie immer wissen, wo sie sich befinden:
oder wo immer Sie möchten. Die Verwendung
//
am Ende des Dateinamens bewirkt, dass vim absolute Dateipfade für die Auslagerungsdateinamen verwendet, sodass keine Namenskollisionen auftreten. Stellen Sie sicher, dass das Verzeichnis vorhanden ist, oder vim verwendet es nicht (es wird es nicht für Sie erstellt).Hinweis: Dies funktioniert nur bei Umgebungsvariablen. Wenn Sie eine Vimscript-Variable verwenden möchten, müssen Sie etwas
:execute
Magie verwenden:Diff die Unterschiede:
Vim Hilfe schlägt vor , einen sehr nützlichen Befehl in dieser Situation zu verwenden:
:DiffOrig
. Es ist kein vim-Standardbefehl , kopieren Sie also die Implementierung von:h :DiffOrig
in Ihren vimrc. (Es ist auch in,$VIMRUNTIME/defaults.vim
wenn Sie vim8 haben). Jetzt können Sie die Datei wiederherstellen und einfach DiffOrig ausführen, um einen Überblick über die Änderungen gegenüber der unveränderten Version zu erhalten.Wenn Sie den Inhalt mehrerer Auslagerungsdateien vergleichen möchten, stellen Sie Ihre Datei mit jeder anderen Auslagerungsdatei wieder her und schreiben Sie das Ergebnis in temporäre Dateien. Laden Sie nun die Dateien und führen Sie sie
:diffthis
für jede Datei aus, nehmen Sie die gewünschten Änderungen vor, schreiben Sie in die ursprüngliche Datei zurück und löschen Sie die temporären und Auslagerungsdateien.Nützliche Befehle:
:swapname
: Ermittelt den Namen, den vim für die Auslagerungsdatei für den aktuellen Puffer verwendet (:h :swapname
):recover
: Stellt die ausgewählte Datei wieder her, genau wie beim Starten von vim und Drücken von R(:h :recover
).Schauen Sie sich die Hilfe an:
Vim hat einen ganzen Abschnitt des Benutzerhandbuchs auf Erholung:
:usr_11.txt
Referenz Hilfe des Vim auf Auslagerungsdateien:
:h swap-file
,h recovery
Hilfe im Verzeichnis Option (für die Auslagerungsdatei einstellen):
:h 'directory'
Bearbeiten: Geändertes Beispiel für das Einstellen des Verzeichnisses, wie in den Kommentaren von @B Layer ausgeführt
quelle
exec
...set directory^=$HOME/.vim/swap//
funktioniert einwandfrei, solange$HOME
es sich um eine initialisierte Umgebungsvariable handelt. Sehen:h expand-env
. Funktioniert auch mitdictionary
,undodir
undbackupdir
um nur einige zu nennen.Persönlich habe ich Auslagerungs- und Sicherungsdateien deaktiviert, da sie in der Regel überall Auslagerungs- und Sicherungsdateien erstellen und häufig Konflikte verursachen. Das dauerhafte Rückgängigmachen von Vim war viel zuverlässiger und fehlerfreier.
Vim verfügt derzeit über eine permanente Methode zum Rückgängigmachen, eine viel feinkörnigere Methode zum Sichern. Bei jedem Drücken von Escwird der aktuelle Status der Datei erfasst.
Sie können
:undolist
oder Plugins wie Gundo oder Undo-Tree verwenden, um Ihren Undo-Verlauf zu durchsuchen.So verwenden Sie vim:
In der Schale:
In Vim
So deaktivieren Sie Auslagerungsdateien:
:set noswapfile
quelle
'writebackup'
ein weiteres Problem behoben). Das dauerhafte Rückgängigmachen hilft nicht, wenn Ihr Computer abstürzt. Sie können argumentieren, dass Auslagerungsdateien aus anderen Gründen (Stabilität des modernen Betriebssystems, Vorhandensein von UPS) nicht erforderlich sind, haben dies jedoch in dieser Antwort nicht getan. 2. Einstellung aktiviert'undodir'
nicht dauerhaftes Rückgängigmachen! Sie müssen gesetzt'undofile'
für diese