Ein etwas einfacherer Weg

Ein etwas einfacherer Weg

Manchmal stürzt Vim ab und hinterlässt eine Auslagerungsdatei. Das ist großartig. Dann öffne ich die Datei, die ich bearbeitet habe, und Vim fragt mich, ob ich sie wiederherstellen möchte. Danke, ich tue das. Wenn es fertig ist, sagt Vim mir:

You may want to delete the .swp file now.

Ja, das tue ich. Wie mache ich das? Ich dachte, es würde einfach wieder die alte Auslagerungsdatei als Auslagerungsdatei verwenden und sie bereinigen, wenn ich beende, aber das stimmt nicht. Es erstellt eine neue, bereinigt diese und wenn ich die Datei wieder öffne, werde ich erneut aufgefordert, die erste wiederherzustellen.

Bestimmt übersehe ich etwas.

Antwort1

Ein etwas einfacherer Weg

Vom Terminalemulator aus:

$ vim filename

Wählen Sie dann in vimgenesen, und wenn Sie den Swap löschen möchten,schreiben(speichern) und rufen Sie dann diesen Befehl auf:

:e          // no argument needed. It assumes the current buffer.

...und wählelöschendiesmal.

Ein Vorteil dieses Ansatzes besteht darin, dass eine Arbeitsdatei nicht automatisch überschrieben wird, wenn sich die Wiederherstellung als beschädigt herausstellt (obwohl mir das zugegebenermaßen noch nie passiert ist).

Dazu gibt es auch entsprechende Tippszu dieser Frageauf Stack Overflow (wo ich diesen Tipp gefunden habe).

Antwort2

So löschen Sie ALLE Vim-Auslagerungsdateien in einem Verzeichnis:

Wenn Sie sicher sind, dass Sie keine Vim-Swap-Dateien in einem Verzeichnisbaum benötigen und diese entfernen möchten, können Sie den folgenden Befehl im Verzeichnis verwenden, während Vim ausgeführt wirdnichtläuft (nicht einmal in einem anderen Fenster oder einer anderen Anmeldesitzung):

find . -type f -name "*.sw[klmnop]" -delete

Einige Inspirationen und Gedanken kamen vonEntfernen von Junk-SWP-Dateien bei Google Groups. Dadurch werden alle Dateien gelöscht, deren Namen im aktuellen Verzeichnisbaum mit .swk, .swl, .swm, .swn, .swo, oder enden..swp

Dies ist aus mehreren Gründen möglicherweise nicht das, was Sie möchten:

  • Wie gesagt durchsucht es das aktuelle VerzeichnisBaum ; d. h. das aktuelle Verzeichnis und alle Unterverzeichnisse rekursiv. Das geht über das hinaus, was in der Frage verlangt wird, und kann als übertrieben angesehen werden.
  • Wie angegeben werden alle Dateien gelöscht, deren Namen mit .swk, .swl, .swm, .swn, .swo, oder enden .swp, und nicht nur mit .swpGary Johnson sagt,

    Außerdem enden nicht alle Auslagerungsdateien mit .swp. Wenn Vim eine Auslagerungsdatei erstellen muss und eine mit .swp bereits existiert, verwendet Vim die Erweiterung .swo für die neue und danach .swn. Ich denke, es geht einfach rückwärts durch das Alphabet. Verwenden Sie also etwas wie

      \*.sw[nop] 
    

    oder auch

      \*.sw? 
    

    wäre gründlicher.

    Der ursprüngliche Autor vonDasBeitrag sagt,

    „klmnop“ ist vielleicht übertrieben, aber damit stelle ich normalerweise sicher, dass ich sie alle bekomme.

  • Andererseits könnte es auch Unterleistung sein.  Rubel schlägt vor

    find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
    

    das mit allen (kleingeschriebenen) dreistelligen Erweiterungen von .saabis übereinstimmt .swp. Er fügt hinzu: „Seien Sie jedoch vorsichtig, denn obwohl dies eine umfassendere Lösung ist, werden alle SVG-Bilddateien und SWF-Adobe-Flash-Dateien entfernt. Wenn Sie mit diesen Dateien arbeiten, sollten Sie den regulären Ausdruck ändern.“ Es stimmt auch mit .sav, .snd(Tondaten), .sql, .src, .srt(SubRip-Videountertitelformat) und vielen anderen gängigen Erweiterungen überein.

  • Das ist vielleicht übertrieben. Wie gesagt werden alle Dateien gelöscht, deren Namen mit .swk, .swl, .swm, .swn, .swo, oder enden .swp. Aber anscheinend sind Vim-Auslagerungsdateien normalerweise „Punkt“-Dateien. Wenn Sie bearbeiten hello.cpp, könnte die Auslagerungsdatei sein .hello.cpp.swp. Wie gezeigt (aber nicht erklärt) inRubels Antwortist es sicherer, nur Dateien zu löschen, deren Namen mit einem Punkt beginnen, z. B. mit

    find . -type f -name ".*.sw[klmnop]" -delete
    

Antwort3

Geben Sie ein ls -a, das ALLE Dateien im Verzeichnis auflistet

Geben Sie rm .whatever.your.swpein und drücken Sieenter

So einfach ist es.

Jede Datei, die mit .vorne angezeigt wird, ist eine versteckte Datei und wird normalerweise nicht gesehen.

Denken Sie daran, dass Änderungen sofort und dauerhaft sind. Seien Sie also vorsichtig.

Antwort4

Übrigens erledigen einige Plugins das automatisch für Sie:autoswap.vim

aus der Beschreibung:

  1. Ist die Datei bereits in einer anderen Vim-Sitzung in einem anderen Fenster geöffnet?
  2. Wenn ja, wechseln Sie zu dem Fenster, in dem wir diese Datei bearbeiten.
  3. Andernfalls, wenn die Auslagerungsdatei älter ist als die Datei selbst, löschen Sie sie einfach.
  4. Andernfalls öffnen Sie die Datei nur im Lesemodus, damit wir sie uns ansehen und ggf. speichern können.

verwandte Informationen