Stellen Sie sich einen Fall mit mehreren Teilungen in einem Fenster vor. Mit vim kann der aktuelle Split schnell "maximiert" werden, um das gesamte Fenster über einzunehmen <C-W>
o
.
Gibt es eine Möglichkeit, sich an die zuvor vorhandenen Splits zu "erinnern" und nach der Ausführung in diesen Zustand zurückzukehren <C-W>
o
?
EDIT: Zur Verdeutlichung suche ich nach einer Möglichkeit, dies ohne die Verwendung von Plugins von Drittanbietern zu tun.
Antworten:
Am einfachsten ist dies wahrscheinlich mit Sitzungsdateien, bei denen es sich um VIM-Skripts handelt (die VIM automatisch für Sie erstellen kann), mit denen eine vorherige Bearbeitungsumgebung wiederhergestellt wird.
Sie können eine neue Sitzungsdatei mit erstellen
:mksession <filename>
. Sie können diese Sitzung wiederherstellen, indem Sie das generierte Sitzungsskript ausführen:source <filename>
.Auf diese Weise können Sie die aktuelle Sitzung vor dem Maximieren eines Fensters speichern und wiederherstellen, wenn Sie das Fenster "unmaximieren" möchten.
Auf diese Weise können Sie die entsprechenden Fensterbefehle neu zuordnen, um eine Sitzung im Voraus zu speichern, und eine neue Zuordnung hinzufügen, um den letzten Fensterbefehl durch Wiederherstellen der Sitzung rückgängig zu machen. Beispielsweise:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
und so weiter für alle Fensterbefehle, die Sie unterstützen möchten (siehe:help CTRL-W
, es gibt eine Menge). Die!
verhinderten Fehler im Zusammenhang mit dem Überschreiben eine bestehende Sitzungsdatei.nnoremap <C-w>u :source ~/session.vim<CR>
um den letzten Fensterbefehl rückgängig zu machen.Wenn Sie besonders robust sein möchten, können Sie dies über Funktionen erweitern, um die Sitzungsdateien in einem Stapel zu speichern und sie zu entfernen, um eine vollständige Rückgängigmachungskette zu erhalten, obwohl es an diesem Punkt wahrscheinlich effizienter ist, eine Reihe von Funktionen zu schreiben, um die zu verfolgen Fenster Befehlsverlauf im Speicher ... an diesem Punkt werden Sie wahrscheinlich die Plugins duplizieren, die dies bereits tun.
quelle
Eine andere Möglichkeit besteht darin, das aktuelle Fenster in einem neuen Tab zu öffnen und den Tab dann einfach zu schließen, wenn Sie fertig sind.
Der Befehl
:split
(oder:sp
kurz: Befehl) ohne Argument bewirkt, dass ein neuer Split mit demselben Puffer wie der aktuelle Split geöffnet wird. Der:tab
Befehl kann viele fensterbezogene Befehle ausführen und sie so ändern, dass stattdessen eine Registerkarte verwendet wird. Wenn Sie diese kombinieren:tab sp
, wird eine neue Registerkarte mit dem aktuellen Puffer geöffnet.Anschließend können Sie die neue Registerkarte mit
:q
oder:tabclose
(:tabc
kurz) schließen.quelle
Ich verwende das ZoomWin-Plugin ( https://github.com/itspriddle/ZoomWin ) für genau dieses Szenario. Drücken Sie CtrlW- Oein zweites Mal, um die Fensteranordnung wiederherzustellen.
quelle
Was Sie beschreiben, klingt genauso wie die Funktion "Zoomen". Es gibt bereits eine gute Antwort auf SO , die es sehr gut macht.
EDIT: Explizite Antwort, aus SO kopiert und eingefügt . Ich habe das Snippet unten in meinem .vimrc abgelegt und dann aufgerufen
in meiner vim Eingabeaufforderung.
quelle
Dieser Beitrag ist alt, die akzeptierte Antwort betrifft nicht
terminal buffer
.Die akzeptierte Antwort reicht aus
session
,session
kann jedoch nicht vollständig wiederhergestellt werdenterminal buffer
:Tommcdos Antwort funktioniert immer noch,
<c-w>:tab split
funktioniert gutterminal buffer
. Es verdient eine Karte:quelle