Vim: Fenster nach links / rechts bewegen?

215

Ist es in Vim möglich, ein Fenster nach links oder rechts zu verschieben? ZB ähnlich <c-w> roder <c-w> x, aber links / rechts statt oben / unten?

Zum Beispiel, wenn ich dieses Layout habe:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Ich möchte daraus Folgendes machen:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Was schwierig / nervig ist <c-w> {H,J,K,L}.

David Wolever
quelle

Antworten:

424

Ctrl w gibt Ihnen den "Windows-Befehlsmodus", der die folgenden Modifikatoren zulässt:

  • Ctrl w+ R- Fenster nach oben / links drehen.

  • Ctrl w+ r- Fenster nach unten / rechts drehen.

Sie können auch den "Windows-Befehlsmodus" mit Navigationstasten verwenden, um die Position eines Fensters zu ändern:

  • Ctrl w+ L- Verschiebe das aktuelle Fenster nach "ganz rechts"

  • Ctrl w+ H- Verschiebe das aktuelle Fenster nach "ganz links"

  • Ctrl w+ J- Verschiebe das aktuelle Fenster nach "ganz unten"

  • Ctrl w+ K- Verschiebe das aktuelle Fenster nach "ganz oben"

Schauen Sie sich :help window-movingfür weitere Informationen

Ricardo Valeriano
quelle
2
<c-w> rdreht sich nur vertikal.
David Wolever
10
@ David Wolever, Sie müssen in diesem Fall die Großbuchstaben verwenden, zum Beispiel: Strg-W + Umschalt-L, zum Beispiel. Ich denke, das kann das sein, wonach Sie suchen.
Ricardo Valeriano
@ David - habe das gerade getestet und <cw> r hat horizontal für mich gearbeitet.
ostler.c
3
@ ostler.c Erstellen Sie eine vertikale Aufteilung und anschließend eine horizontale Aufteilung innerhalb einer der Spalten. Verwenden Sie jetzt <cw> r und es werden nur die beiden Fenster innerhalb der einen vertikalen Teilung durchlaufen.
Chev
1
@ nn0p nein, sie verschieben Fenster. <cw> h bewegt den Cursor zum nächsten Fenster nach links, während <cw> H das aktuelle Fenster (zusammen mit dem Cursor) ganz nach links bewegt.
MarSoft
58

Dieser ist für mich am nützlichsten (und wahrscheinlich die richtige Antwort auf die Frage):

  • Ctrl W+ xODER Ctrl W+ Ctrl x- Dreht das aktuell fokussierte Fenster mit dem nächstgelegenen Fenster nach rechts.
fabiomcosta
quelle
Sehr nützlich, wenn Sie sich in der Mitte der Fenster befinden und mit dem Fenster rechts tauschen möchten. Danke für diesen!
Daniel Andrei Mincă
8

Möchten Sie das Fenster selbst oder nur Ihre Cursorposition verschieben?

Neben rotierende oder mit dem Fahrrad , wie Sie bereits erwähnt, ist es nur möglich , das Fenster selbst auf die bewegen weit oben, unten, links oder rechts, mit jeweils:

^W K
^W J
^W H
^W L

Ich glaube nicht, dass es eine standardmäßige integrierte Methode gibt, um ein Fenster um eine Stelle nach rechts zu verschieben.

Bitterzoet
quelle
1
Ich möchte die Fenster bewegen, nicht den Cursor.
David Wolever
1
Dann ist dies so weit wie möglich mit den vim window Befehlen. Wenn dies für Sie nützlich war, markieren Sie es bitte als Lösung :-)
Bitterzoet
2
Ich würde @Bitterzoets Kommentar ablehnen, wenn ich könnte. Siehe oben Antworten
Nathan
1

Es scheint wirklich so, als ob vim dies mit den Standard-Key-Maps nicht tun kann. In der Dokumentation heißt es, dass die Befehle ^ WK, J, H und L die Aufteilung erstellen und den Puffer an der Position now öffnen. Daher habe ich eine Funktion für dieselbe geschrieben: Den Puffer ausblenden, nach links verschieben, teilen und dann Öffnen Sie den ursprünglichen Puffer:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc
W Klink
quelle
-6
  • ctrl + h Bewegen Sie den Cursor zum nächsten Fenster (rechts).

  • ctrl + l Cursot zum vorherigen Fenster verschieben (links)

Weitere Informationen finden Sie unter: :help window-moving

xautjzd
quelle
3
Nicht richtig. Ctrl+h/lsind keine Standardbindungen für die Fensternavigation (obwohl sie natürlich konfiguriert werden können und von einigen Plugins angeboten werden). Und das beantwortet die ursprüngliche Frage sowieso nicht.
MarSoft