Manchmal stürzt Vim ab und hinterlässt eine Swap-Datei. Das ist großartig. Dann öffne ich die Datei, die ich gerade bearbeitete, und Vim fragt mich, ob ich sie wiederherstellen möchte. Ich mache, danke. Wenn es fertig ist, sagt Vim mir,
You may want to delete the .swp file now.
Warum, ja, ich tue es. Wie mache ich das? Ich dachte, es würde einfach anfangen, die alte Auslagerungsdatei wieder als Auslagerungsdatei zu verwenden und sie beim Beenden zu bereinigen, aber das stimmt nicht. Es erstellt eine neue Datei, räumt diese auf und fordert mich beim erneuten Öffnen der Datei erneut auf, die erste wiederherzustellen.
Ich vermisse sicher etwas.
Antworten:
Ein etwas einfacherer Weg:
Vom Terminalemulator aus:
Wählen Sie dann " Wiederherstellen" und wenn Sie den Swap löschen möchten, den Sie schreiben (speichern), tun Sie dies in vim:
... und wählen Sie diese Zeit löschen .
Ich habe gerade davon erfahren, und ich denke, ich werde das von jetzt an tun. Dann überschreibe ich auch nicht versehentlich eine Arbeitsdatei, wenn die Wiederherstellung fehlerhaft verlaufen ist (obwohl ich das noch nie versucht habe).
Zu dieser Frage gibt es auch relevante Tipps zu Stack Overflow (wo ich diesen Tipp gefunden habe).
quelle
delete
Option, es gibt nur: [O] pen (E) dit (R) ecover (Q) uit (A) bort, was soll ich tun?(D)elete
Option sehen, siehe:help swap-exists
; Zitat Zitat ZitatOn Unix this choice is only offered when the process that created the swap file does not appear to be running.
Vielleicht haben Sie einen anderen vim-Prozess, der dazu führt, dass diese Option ausgeblendet wird. Es könnte auch erklären, warum Sie überhaupt eineswp
Datei haben !So bereinigen Sie ALLE vim Swap-Dateien in einem Verzeichnis:
Wenn Sie sicher sind, dass Sie keine vim-Auslagerungsdateien in einem Verzeichnisbaum benötigen und diese entfernen möchten, können Sie den folgenden Befehl im Verzeichnis verwenden, während vim nicht ausgeführt wird (auch nicht in einem anderen Fenster oder bei einem anderen Login) Session):
Einige Anregungen und Gedanken kamen aus dem Entfernen von Junk-SWP-Dateien bei Google Groups. Dadurch werden alle Dateien , deren Namen mit löschen
.swk
,.swl
,.swm
,.swn
,.swo
, oder.swp
im aktuellen Verzeichnisbaum.Dies könnte aus mehreren Gründen nicht das sein, was Sie wollen:
Wie bereits erwähnt, werden alle Dateien , deren Namen am Ende mit löschen
Der ursprüngliche Autor dieses Beitrags sagt:.swk
,.swl
,.swm
,.swn
,.swo
, oder.swp
und nicht nur.swp
. Gary Johnson sagt :Auf der anderen Seite könnte es unterbewertet sein. Rubel schlägt vor
das passt zu allen (Kleinbuchstaben-) Dreibuchstaben-Erweiterungen von
.saa
bis.swp
. Er fügt hinzu: „Seien Sie vorsichtig, obwohl dies eine vollständigere Lösung ist, werden alle .svg-Image-Dateien und .swf-Adobe-Flash-Dateien entfernt. Möglicherweise möchten Sie die Regex ändern , wenn Sie mit diesen Dateien arbeiten.“Es passt auch.sav
,.snd
(Tondaten).sql
,.src
,.srt
(SubRip Video Untertitel - Format), und viele andere gemeinsame Erweiterungen.Es könnte übertrieben sein. Wie bereits erwähnt, werden alle Dateien , deren Namen mit löschen
.swk
,.swl
,.swm
,.swn
,.swo
, oder.swp
. Offensichtlich handelt es sich bei VIM-Auslagerungsdateien jedoch im Allgemeinen um Punktdateien. Wenn Sie bearbeitenhello.cpp
, ist die Auslagerungsdatei möglicherweise.hello.cpp.swp
. Wie in der Antwort von rouble gezeigt (aber nicht erklärt) , ist es sicherer, nur Dateien zu löschen, deren Namen mit einem Punkt beginnen. zB mitquelle
Geben Sie ein, in
ls -a
dem ALLE Dateien im Verzeichnis aufgelistet sindTyp
rm .whatever.your.swp
ist und drücken SieenterSo einfach ist das.
Jede Datei, die mit
.
vorne angezeigt wird, ist eine versteckte Datei und wird normalerweise nicht angezeigt.Denken Sie daran, dass Änderungen unmittelbar und dauerhaft sind. Seien Sie also vorsichtig.
quelle
file.swp
oder nichtfile.swo
. Dann muss ich zurück, wo ich war. Schlagen:e
ist eine viel einfachere Lösung.ls: cannot access +A: No such file or directory
Btw. Einige Plugins erledigen das automatisch für Sie: autoswap.vim
aus der Beschreibung:
quelle
Nein, AFAIK, dir fehlt nichts.
Vim
behält die Auslagerungsdatei weiterhin als Sicherung bei, bis Sie sie explizit löschen.Einfach speichern und beenden und dieselbe Datei erneut öffnen. Sie werden (erneut) aufgefordert mit
Drücken Sie jetzt einfach
d
:)quelle
Vim ist, wie die meisten Unix-Befehle, einfach und explizit, nicht vorausgesetzt und implizit.
Sie erholen sich mit (r). Wenn Ihnen die Wiederherstellung nicht gefällt oder die Wiederherstellung beschädigt ist, können Sie sie verwerfen. Wenn es Ihnen gefällt, können Sie die Datei speichern. Die Wiederherstellungsdatei wird nicht für Sie gelöscht, da dies nicht explizit ist und in 100% der Fälle nicht korrekt ist.
Sie können also (r) entdecken, (w) riten und (q) beenden, dann entweder erneut bearbeiten und (d) elete oder "rm .myfile.js.swp" auswählen und erneut bearbeiten. Dies ist schnell erledigt und aus Sicht von Vim immer zu 100% korrekt.
quelle
Diese Dateien waren auch für mich ärgerlich, aber ich habe die Option in .vimrc gesetzt
set noswapfile
, um zu verhindern, dass vim sie erstellt und stattdessen Dateien im Speicher hält.quelle
Hier ist ein vollständigerer regulärer Ausdruck, um alle vim-Auslagerungsdateien zu bereinigen, die auf Githubs eigener gitignore-Datei für Vim basieren
Beachten Sie jedoch, dass dies zwar eine umfassendere Lösung darstellt, jedoch alle .svg-Image-Dateien und .swf-Adobe-Flash-Dateien entfernt werden. Möglicherweise möchten Sie den regulären Ausdruck ändern, wenn Sie mit diesen Dateien arbeiten.
quelle
Hier ist ein Ausschnitt zum Hinzufügen
.vimrc
. Es löscht alle Auslagerungsdateien, die dem aktuellen Dateipuffer zugeordnet sind, und setzt die Auslagerungserweiterung zurück.Sobald man auf die missliche Lage stößt, kann man ausführen.
:DeleteFileSwaps
Dies ist großartig, wenn man sie mit:windo
oder:tabdo
Befehlen kombiniert .Weitere Details : Eine Datei kann mehr als eine Auslagerungsdatei haben. Der Grund dafür ist, dass die Auslagerungsdatei mit der Erweiterung von
.swp
immer noch vorhanden ist undvim
deswegen weiterhin neue erstellt. Um herauszufinden, ob es welche.swp
gibt::sw
die aktuelle Auslagerungsdatei abzurufen..swp
.Das obige Snippet folgt demselben Vorgang, entfernt jedoch alle Auslagerungsdateien.
Hoffe das hilft.
quelle
Aus dem Handbuch
:h swap
:quelle
.swp
Datei, die:sw
wird wahrscheinlich Befehl geben Sie den Namen der.swo
Datei - das ist nicht , was Sie löschen möchten.Wenn Sie dazu aufgefordert werden, drücken Sie D, um die Auslagerungsdatei der aktuellen Datei zu löschen.
wenn Sie nicht sind, müssen Sie es manuell tun.
Ein alternativer Weg, dies zu tun, ist:
Datei suchen / finden:
und dann lösche diese Datei:
quelle
Sie können verwenden,
Beispiel:
quelle
<ext>
ist hier überflüssig, da ein Dateiname zumindest unter Linux keine oder mehrere Erweiterungen enthält.