MacVim / Vim behält den Inhalt aller Puffer (wie Sublime Text) bei. Swap bewahren?

896
snowbound

TL; DR: Kann Vim seine Auslagerungsdateien speichern und beim Laden jedes Mal die gleichen Auslagerungsdateien und Puffer laden?

Ich bin auf einem Mac (OS: Maverick), auf dem eine Reihe von Anwendungen die Daten in einer Art lokalem / nicht vorhandenem Speicher aufbewahrt, der zwischen Neustarts der Maschine / Anwendungsabstürzen wiederhergestellt wird.

Als ' Speicher ' nehmen Sie Sublime Text als Beispiel. Sobald ich ein neues Tab öffne, werden die Inhalte des Tabs gespeichert, auch wenn ich das Tab nicht explizit als Datei für die dauerhafte Speicherung irgendwo gespeichert habe. Wenn ich also ST schließen und erneut öffnen würde (oder die Maschine abstürzt), würden alle Tabs und Inhalte wiederhergestellt, die ich vor der Schließung hatte.

Diese Art der narrensicheren Aufbewahrung von Inhalten (TM) ist in einer Reihe von Mac-Anwendungen (z. B. iMovie, QuickTime Player, TextEdit usw.) zu sehen und entspricht der Designphilosophie von Mac, den Benutzer immer dort weitermachen zu lassen, wo er aufgehört hat - ohne etwas explizit speichern zu müssen.

In Anbetracht der Tatsache, dass:
1. Vim alle 200 Striche / 4 Sekunden Inaktivität Auslagerungsdateien speichert und aktualisiert. recover
2. Vim verfügt über Startoptionen, mit denen Dateien / Auslagerungen geöffnet werden können

gibt es hier eine ausreichende Basis, um mich zu fragen, ob Vim / MacVim diese Content-Retention-Funktion (TM) nicht bereits unter Hunderten von Konfigurationsoptionen hat?

ps Ich verwende derzeit vim-session, nur für 'projektähnliche Dateigruppierung', aber der Inhalt für nicht gespeicherte Puffer bleibt nicht erhalten

pps hat mit der :preserveOption und cpoptions+=&in .vimrc gespielt. Scheint keine Auswirkung zu haben, Swap-Dateien werden beim Schließen von MacVim immer noch gelöscht und beim Neustart von MacVim wird nichts geöffnet

2
Kannst du einen Link zu deinem `.vimrc` posten? Insbesondere Teile, die sich auf die Sitzungsoptionen beziehen? Aaron D vor 9 Jahren 0
Da Sie mit Sublime Text vergleichen, sollten Sie Sublime zu Ihrem Standardeditor machen. Wenn Sie Aliase in "/ usr / local / bin / subl -nw" für EDITOR, vi, vim, GIT_EDITOR usw. exportieren, können Sie jederzeit das, was Sie an Sublime lieben, zur Verfügung haben. SaxDaddy vor 9 Jahren 0
@ SaxDaddy. Zwei Gründe. 1) Vintage, während einem großartigen ST-Plugin immer noch das Niveau der Vim-Vollständigkeit fehlt (z. B. Makro-Bearbeitung). 2) Kommerzielle Kosten. Ich bearbeite den größten Teil meines Codes in IntelliJ IDEA, was bedeutet, dass ich VIM hauptsächlich für schnelle Bearbeitungen verwende. 70 Dollar für das Privileg von ST zu zahlen, wenn es nicht mein Haupteditor ist, scheint etwas übertrieben zu sein. snowbound vor 9 Jahren 0
@ SaxDaddy zusätzlich. ST3 hat im Vergleich zu Vim einen Tippfehler (auf einem 2011 Macbook Pro, i7, 8 GB, SSD). snowbound vor 9 Jahren 0

1 Antwort auf die Frage

2
Aaron D

Die von Ihnen erwähnte Sitzungsfunktionalität ist genau das, was Sie möchten. Sie müssen jedoch eine Option angeben, damit sowohl Puffer als auch offene Dateien und Positionen gespeichert werden. Sie können dafür verwenden :mksession.

Wird :mksessionjedoch noch manuell gesteuert; Sie können ihn zwar an Hotkeys binden, um schnell speichern / wiederherstellen zu können. Wenn Sie jedoch vergessen, den Befehl auszuführen, verlieren Sie Ihre Sitzung.

Aus diesem Grund empfehle ich das vim-Plugin Session.vim . Dies (zusammen mit ein paar zusätzlichen Optionen in Ihrem .vimrc) ermöglicht das automatische Speichern und Wiederherstellen von Sitzungen. Die vollständige Liste der Optionen befindet sich auf der Seite. Insbesondere möchten Sie ihm mitteilen, dass er die buffersOption sessionoptionsgemäß dieser Seite übergeben soll .

Hey @aaron D, ich habe Session.vim über vim-session installiert (das ist ein Spiegel von Session.vim: https://github.com/xolox/vim-session). Ich bin nicht sicher, ob ich die falschen Optionen verwende. Wollen Sie damit sagen, dass mksession oder Session.vim ** Inhalte ** von nicht gespeicherten Puffern speichern könnte? snowbound vor 9 Jahren 1
Ihr Vorschlag, um sicherzustellen, dass sich "Puffer" in "Sitzungsoptionen" befinden, bewirkt nicht, dass der Inhalt eines "No Name" -Puffers gespeichert und wiederhergestellt wird. Tatsächlich waren "Puffer" bereits in der Liste. Um sicherzugehen, habe ich `set sessionoptions + = puffers` zu meinem` vimrc` hinzugefügt und sowohl `: mksession` /`: source` als auch `: SaveSession` /`: OpenSession` ausprobiert, aber der Pufferinhalt geht trotzdem verloren. Rory O'Kane vor 9 Jahren 1