Wie speichere ich das Fenster-, Split- und Buffer-Layout?

56

Ich habe mehrere Aufgaben, an denen ich arbeite, in einem Repository. Ich möchte "Arbeitsbereiche" für die Arbeit an ihnen erstellen.

In einem "Arbeitsbereich" oder "Pufferlayout" wären alle Dateien, an denen ich arbeiten muss, im gewünschten Layout geöffnet (mit ^w+v, ^w+szum Teilen des Fensters).

Wenn ich dann anfange, an einer anderen Aufgabe zu arbeiten, möchte ich mein aktuelles Layout speichern, zu einem anderen wechseln, aber ich möchte in der Lage sein, zu vorherigen Layouts zurückzukehren.

Was ist der beste Weg, um dies zu erreichen?

Nebril
quelle

Antworten:

48

Sie können vims verwenden :mksessionund jeden "Arbeitsbereich" in eine andere Datei schreiben und dann eine Sitzung erneut mit öffnen. vim -S session_fileWenn Sie jedoch ein Plugin verwenden möchten, ist das Startify-Plugin genau das, was ich für diese Art von Szenario benötige: https : //github.com/mhinz/vim-startify

Es erledigt eine großartige Aufgabe, Sitzungen in vim und mccvim zu verwalten, und es gibt Ihnen auch eine Liste der letzten Dateien, wenn Sie vim öffnen. Es wechselt automatisch in das richtige Arbeitsverzeichnis für Sie. Damit können Sie auch Pin - Dateien in das startify Eröffnungsbildschirm als auch, was wie für einen einfachen Zugang zu den Dingen schön ist Ihre.vimrc

craigp
quelle
23

Sie können das vim-obsession- Plugin von tpope verwenden, um Sitzungen einfach zu verwalten. Es ist wie ein Wrapper für mksessionVims eingebauten , bietet aber auch eine Reihe anderer Feinheiten.

Sie können die aktuelle Sitzung (oder das Pufferlayout) speichern, indem Sie den Befehl eingeben :Obsess. Wenn Sie kein Argument angeben, wird eine Sitzungsdatei geschrieben, die Session.vimstandardmäßig aufgerufen wird.

Verwenden Sie vim -S <session-name>oder, :source <session-name>wenn Sie sich bereits in Vim befinden, um eine Sitzung neu zu laden .

Das Schöne ist, dass Sie nicht jedes Mal, wenn Sie Vim beenden, daran denken müssen, die Sitzung zu speichern. Es wird automatisch vom Plugin verwaltet.

Ein weiteres sehr wichtiges Merkmal von vim-obession ist, dass keine Optionen und Karten gespeichert werden. mksessionerfasst die aktuellen Optionen und Karten, die Sie nicht möchten, wenn Sie nur das Pufferlayout speichern möchten. Auch stört es, wenn ein Plugin aktualisiert wird, etc.

Thameera
quelle
Kann es mehrere Sitzungsdateien verwalten?
Nebril,
1
@Nebril Es kann. Wenn Sie die Sitzung speichern, verwenden Sie das Format :Obsess <session-name>. Verwenden Sie beim Neuladen den gewünschten Sitzungsnamen.
Thameera
Ich stellte fest, dass sich Obsession nicht an vertikale Teilungen erinnerte, wohingegen mksession dies tat. Ich habe heute Abend nur rumgespielt, gibt es etwas, das ich verpasst habe?
Baxx
1
@baxx Obsession merkt sich alle Arten von Splits. Vielleicht haben Sie den Split geschlossen, bevor Sie vim verlassen haben?
Thameera
2
@baxx Dies ist alt, aber ich wollte einen Hinweis hinzufügen, falls dies jemand anderem hilft. Der Grund, warum es so aussieht, als ob die Obsession Spaltungen vergisst, ist wahrscheinlich, dass Sie all Ihre Spaltungen beenden, um vim zu verlassen. Das heißt, der Endzustand ist Ihr letztes Fenster, wenn Sie vim schließen. Das ist, was Obsession speichert. Ich hatte das gleiche Problem mit Tabs und die Antwort lautet: qa um alle offenen Fenster, Splits, Tabs zu verlassen. Wenn jemand eine bessere Option hat, lassen Sie es uns bitte wissen.
TC0072
12

Als Randnotiz möchte ich darauf hinweisen, dass ich ein weiteres Plugin Dhruvasagar / Vim-Prosession als Erweiterung zu Tpope / Vim-Obsession erstellt habe , das es noch weiter verbessert, Vim-Sitzungen standardmäßig in einem zentralen Repository als zu erstellen und zu verwalten pro Konfiguration auf Verzeichnisbasis und lädt sie automatisch, wenn Sie vim ohne Argumente im Verzeichnis starten. Sie können auch bequem zwischen verschiedenen Sitzungen wechseln.

Dhruva Sagar
quelle
Das klingt großartig. Wenn ich Sitzungsdateien in einem Ordner verwalten könnte, der dem Rückgängigmachen und Sichern von Dateien ähnelt, um zu verhindern, dass meine Projekte mit Auslagerungsdateien überladen werden, die mich einfach um den Verstand bringen könnten.
dragon788
1

Sie können das vim- workspace - Plugin ausprobieren. Die Funktionen für die Sitzungsverwaltung sind automatisiert, richten sich nach Ihrem aktuellen Arbeitsverzeichnis und sind recht einfach (müssen nur ToggleWorkspaceeinmal ausgeführt werden).

Jaybay
quelle