Kann ich Vim so einstellen, dass keine .swp-Datei verwaltet wird, wenn keine nicht gespeicherten Änderungen vorhanden sind?

0

Ich starte Vim in einer screenSitzung. Wenn diese Sitzung beendet wird, werden darin ausgeführte Prozesse abgebrochen, sodass Vim .swpDateien zurücklässt. Dies ist eine gute Sache, wenn die .swpDateien Informationen enthalten, die es mir ermöglichen, nicht gespeicherte Änderungen wiederherzustellen, aber in den meisten Fällen beende ich screenmit allem, was sich in einem sauberen, gespeicherten Zustand befindet ( :wa). Dies macht die .swpDateien ärgerlich, da sie keine nützlichen Informationen enthalten, aber dennoch eine Wiederherstellungsaufforderung beim erneuten Öffnen auslösen.

Kann ich Vim dazu bringen, eine .swpDatei nur zu verwalten , wenn noch nicht gespeicherte Änderungen ausstehen?

jl6
quelle

Antworten:

1

Dateien austauschen

Die kurze Antwort lautet nein . Mit Vim werden die Auslagerungsdateien ständig geöffnet, während der Puffer bearbeitet wird. Die Bearbeitung kann zu langsam sein, um die Auslagerungsdatei zu öffnen und bei jeder Änderung zu schließen (die Auslagerungsdatei wird aktualisiert, nachdem 200 Zeichen eingegeben wurden oder wenn Sie vier Sekunden lang nichts eingegeben haben).

Wenn Sie nicht möchten, dass eine Auslagerungsdatei für einen bestimmten Puffer oder Puffer verwendet wird, können Sie die swapfileOption vorübergehend deaktivieren :

set noswapfile

Um einen neuen Puffer ohne Verwendung einer Auslagerungsdatei zu öffnen, können Sie den :noswapfileModifikator verwenden, z.

:noswapfile edit ~/.bashrc

Sitzungen

In Ihrem Anwendungsfall klingt es so, als könnten Sie von Vim-Sitzungen profitieren. Wenn Sie mit der Bearbeitung fertig sind, führen Sie den Befehl aus, mksessionum Ihre Sitzung in einer Vim-Skriptdatei zu speichern, die Session.vimim aktuellen Verzeichnis aufgerufen wird . Geben Sie dann ein xa, um alle Dateien zu schreiben und zu beenden. Wenn Sie Vim das nächste Mal ausführen, starten Sie es im selben Arbeitsverzeichnis mit

vim -S Session.vim

Wenn Sie Vim bereits gestartet haben, können Sie das Sitzungsskript alternativ auch mit verwenden

:source Session.vim

Sehen Sie help Sessionfür weitere Informationen über diese nützliche Funktion.

Übrigens, in Bezug auf den Bildschirm gehe ich davon aus, dass Sie die Bildschirmsitzung nur schließen (anstatt sie zu trennen), weil der Computer heruntergefahren oder neu gestartet wird.

Anthony Geoghegan
quelle
Vielen Dank. Ich verwende Vim-Sitzungen, und mein Workflow zum Beenden der Sitzung lautet: (1) Wechseln Sie zu der Bildschirmregisterkarte, auf der Vim ausgeführt wird. (2 :xa) Schließen Sie das Terminalfenster, in dem der Bildschirm angezeigt wird Desktop-Entwicklungsmaschine und ich schließe Bildschirm beim Herunterfahren). Ich hatte auf eine Antwort gehofft, mit der ich (1) und (2) überspringen konnte.
jl6
@ jl6 Mein Workflow ähnelt dem Ihren, abgesehen davon, dass ich häufig GVim zum Bearbeiten lokaler Dateien anstelle von Vim in einem Terminal verwende. Ich finde es nicht zu lästig, die Vim-Sitzung vor dem expliziten Schließen zu speichern.
Anthony Geoghegan