Speichert Vim automatisch?

13

Von :help swap-file:

Aktualisieren der Auslagerungsdatei

Die Auslagerungsdatei wird aktualisiert, nachdem 200 Zeichen eingegeben wurden oder wenn Sie vier Sekunden lang nichts eingegeben haben. Dies passiert nur, wenn der Puffer geändert wurde, nicht, wenn Sie sich nur bewegt haben. Der Grund, warum es nicht immer auf dem neuesten Stand ist, ist, dass dies die normale Arbeit zu sehr verlangsamen würde. Sie können die Anzahl der 200 Zeichen mit der Option 'updatecount' ändern. Sie können die Uhrzeit mit der Option 'updatetime' einstellen. Die Zeit wird in Millisekunden angegeben. Nach dem Schreiben in die Auslagerungsdatei synchronisiert Vim die Datei auf die Festplatte. Dies dauert einige Zeit, insbesondere auf ausgelasteten Unix-Systemen. Wenn Sie dies nicht möchten, können Sie die Option 'swapsync' auf eine leere Zeichenfolge setzen. Das Risiko, Arbeit zu verlieren, wird jedoch größer. Auf einigen Nicht-Unix-Systemen (MS-DOS, Amiga) wird die Auslagerungsdatei überhaupt nicht geschrieben.

Daraus habe ich ein paar Fragen:

  1. Bedeutet dies, dass Vim Ihre Arbeit von Zeit zu Zeit automatisch speichert?

  2. "Nach dem Schreiben in die Auslagerungsdatei synchronisiert Vim die Datei auf die Festplatte." Was bedeutet das? Bezieht sich das auf die Datei, die zuerst in den Speicher und dann auf die Festplatte geschrieben wird, oder ist es etwas anderes?

  3. Angenommen, ich mache Notizen: Ich schreibe schnell und muss den Einfügemodus kaum verlassen. Aber oft wechsle ich zu Normal, nur um meine Arbeit zu retten. Muss ich das tun oder stellt Vim sicher, dass der größte Teil meiner Arbeit gespeichert wird, auch wenn ich den Einfügemodus nicht verlasse?

Gonçalo Ribeiro
quelle

Antworten:

9
  1. Ja, es wird gespeichert, um die Datei auszutauschen.

Sie können einen kurzen Test machen, um ein Gefühl dafür zu bekommen . Gehen Sie zu einem Verzeichnis. Sprich vim notest.txtund schreibe einen Text. Sie müssen die Datei nicht einmal speichern.

Wenn Sie Dateien im Arbeitsverzeichnis auflisten, finden Sie eine Auslagerungsdatei. Kopieren Sie es in ein anderes Verzeichnis (wo Sie zB keine "notes.txt" - Datei haben) vim notest.txt.

Sie erhalten eine Notiz über das Vorhandensein, die Änderung und die Optionen zum Öffnen als schreibgeschützt, Wiederherstellen usw. Wählen Sie "Wiederherstellen" und "Voila"! Eine "Kopie" Ihrer Datei.

  1. Ja, Swap wird gespeichert.

Wenn Vim eine Datei liest, wird sie dem RAM hinzugefügt. Dies gilt sowohl für vorhandene als auch für neue (noch nicht gespeicherte) Dateien. Wenn der Swap gespeichert wird, wird er auf die Festplatte gespült. Die Festplatte. Aus dem RAM.

  1. Ja und nein.

Mit den Standardeinstellungen werden die meisten Ihrer Arbeiten gespeichert. Dies gilt für jeweils 200 eingegebene Zeichen oder für eine Pause von 4 Sekunden. Obwohl ich darauf vertraue, dass die Auslagerungsdatei gespeichert wird, speichere ich meine Arbeit gerne , wenn ich weiß, dass ich auf einem instabilen System bin. Trotzdem ist man sich ziemlich sicher, dass man die Arbeit behält, es sei denn, man hat großes Pech und das Hosting-System gerät kurz nach dem Schreiben eines sehr wichtigen Satzes in Panik .

Kurz gesagt, es ist genug zu sparen, wenn die Vorlesung vorbei ist. Sollte das System aus irgendeinem Grund mitten in einer Klasse anhalten, ist die Arbeit bis dahin im Tausch.

Natürlich: Wenn Sie Pech haben, kann es beim Schreiben der Auslagerungsdatei zu einem Absturz kommen. Infolgedessen könnte die Auslagerungsdatei beschädigt werden. Habe das noch nie erlebt und bin mir nicht sicher, welche Teile der Datei durcheinander sind, aber vielleicht einen Gedanken wert. Da es sich bei der Auslagerungsdatei um eine Binärdatei handelt (da es kein besseres Wort gibt), ist sie anscheinend fragiler als eine reine Textdatei.


Als Randnotiz. Zumindest bei Verwendung des Arbeitsverzeichnisses für den Austausch ist die Auslagerungsdatei ortsunabhängig, wenn es um die Wiederherstellung geht. Als solches können Sie die Auslagerungsdatei an einen neuen Speicherort kopieren und die Datei als neue Datei wiederherstellen . Beachten Sie nur, dass der Dateiname im Swap fest codiert ist. Als solches kann man nicht sagen:

cp .foo.txt.swp .bar.txt.swp

und

vim bar.txt

und erwarte die Auslagerungsdatei von foo.txt.

Wenn Sie sehr interessiert sind, können Sie (auf * nix):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

um den Pfad (mit einigen Macken) der Originaldatei zu erhalten. Wie Sie sehen, wird der vollständige Pfad hinzugefügt, z. B .:

~user/blah/blah/notes.txt

Bei der Auslagerungsüberprüfung wird jedoch nur der Basisname verwendet.

In diesem Zusammenhang können Sie auch die vim -rOption "Auslagerungsdateien in aktuellen und niedrigeren Verzeichnissen" auswählen. Siehe :h crash-recoverymit Unterthemen.

Runium
quelle
0

Für mich ist es in Ordnung, den Puffer zu speichern, wenn sich der Text ändert:

autocmd TextChanged,TextChangedI <buffer> silent write

Ich habe es hier gefunden . Für mich geht das.

simhumileco
quelle