Wenn ich mit VIM arbeite, sind immer mehrere Fenster sichtbar. Manchmal möchte ich eine einfache Möglichkeit haben, diese Fenster stellenweise auszutauschen. Gibt es ein Plugin, ein Makro usw., um dies zu vereinfachen? Übrigens benutze ich MiniBufExplorer.
123
Antworten:
Es sind einige nützliche Befehle eingebaut, die Ihnen ein gewisses Maß an Kontrolle geben, aber nicht umfassend sind. Die wichtigsten sind:
Ctrl- W, r(dh halten CTRL, drücken W, loslassen CTRL, drücken r) - das die Fenster dreht (Das erste Fenster wird das zweite, das zweite wird das dritte usw.)
Ctrl- W, x- tausche das aktuelle Fenster gegen das nächste aus
Ctrl- W, Shift- H- Verschiebe dieses Fenster ganz nach links
Ctrl- W, Shift- K- verschieben Sie dieses Fenster nach oben
(und ähnlich für Ctrl- W, Shift- Jund Ctrl- W, Shift- L). Sehen:
für mehr Informationen.
quelle
Ich habe das folgende Code-Snippet in meinem vimrc zum Kopieren und Einfügen meiner Vim-Fenster geschrieben und verwendet.
Dies definiert beispielsweise die folgenden Verknüpfungen:
<c-w>y
: "Yanks the window", dh speichert die Nummer des Puffers im aktuellen Fenster in einer globalen Variablen.<c-w>pp
: "Setzt das Fenster an die Stelle des aktuellen Fensters", dh es liest die zuvor gespeicherte Puffernummer und öffnet diesen Puffer im aktuellen Fenster. Es speichert auch die Nummer des Puffers, der sich früher im aktuellen Fenster befand.Wenn Sie mit "Fenster an bestimmten Stellen austauschen" "Öffnen des Puffers in Fenster A in Fenster B und umgekehrt, ohne die Position der Fenster zu ändern" meinen, können Sie die Fenster mit der folgenden Tastatursequenz austauschen:
<c-w>y
(zerren die Puffernummer)<c-w>pp
(Puffer einfügen)<c-w>pp
(Puffer erneut einfügen)Es funktioniert nur in Vim> = 7.0.
quelle
Etwa zur gleichen Zeit stellte ich eine ähnliche Frage : Ich wollte eine Möglichkeit, Fenster gezielt auszutauschen, ohne ein willkürlich kompliziertes Layout zu ändern. Am Ende habe ich aus einer der vorgeschlagenen Lösungen ein Vim-Plugin erstellt. Es heißt WindowSwap.vim ; Installieren Sie es mit Ihrem bevorzugten vim Plugin Manager und geben Sie ihm einen Wirbel.
Mit WindowSwap.vim würden Sie einfach
<Leader>yw
ein Fenster ziehen.<Leader>pw
Um dieses Fenster einzufügen, tauschen Sie es mit der Position des ersten aus.Die Tastenkombinationen können natürlich nach Ihren Wünschen konfiguriert werden.
quelle
Als
<c-w>r
oder<c-w>x
hat eine Einschränkung, dass Sie Fenster nicht drehen oder austauschen können, wenn vertikale und horizontale Fensteraufteilungen gemischt werden. Und<c-w>H
möglicherweise ändert sich das Fensterlayout über Ihre Erwartungen hinaus, insbesondere wenn Sie viele Fenster haben.Sie können also einige Arbeiten ausführen, um Ihre speziellen Anforderungen an die Fenster- / Pufferumschaltung zu erfüllen. Hier ist ein Beispiel für das Umschalten des aktuellen Fensters mit dem oberen linken Fenster (normalerweise mache ich es vertikal maximiert):
quelle
Meiner Meinung nach hat http://vimcasts.org/episodes/working-with-windows/ die perfekte Antwort auf diese Frage. In Kürze:
ctrl-w w
Zyklus zwischen den geöffneten Fensternctrl-w h
fokussiere das Fenster nach linksctrl-w j
Fokussieren Sie das Fenster nach untenctrl-w k
fokussiere das Fenster nach obenctrl-w l
fokussiere das Fenster nach rechtsctrl-w r
Alle Fenster drehenctrl-w x
aktuelles Fenster mit seinem Nachbarn austauschenctrl-w H
Verschieben Sie das aktuelle Fenster ganz nach linksctrl-w J
Verschieben Sie das aktuelle Fenster nach untenctrl-w K
Verschieben Sie das aktuelle Fenster nach obenctrl-w L
Verschieben Sie das aktuelle Fenster ganz nach rechtsquelle