web-dev-qa-db-de.com

In Vim schnell von vertikaler auf horizontale Aufteilung umschalten

Wie können Sie Ihre aktuellen Fenster in Vim von horizontaler auf vertikale Aufteilung und umgekehrt umschalten?

Ich habe das vorhin aus Versehen getan, aber ich kann den Schlüssel nicht wieder finden.

Vim-Mailingliste sagt (zur besseren Lesbarkeit neu formatiert):

So ändern Sie zwei vertikal geteilte Fenster in horizontal geteilte Fenster

Ctrl-wtCtrl-wK

Horizontal zu vertikal:

Ctrl-wtCtrl-wH

Erklärungen:

Ctrl-wt macht das erste (obere linke) Fenster aktuell

Ctrl-wK Verschiebt das aktuelle Fenster ganz oben auf die volle Breite

Ctrl-wH Verschiebt das aktuelle Fenster ganz nach links in die volle Höhe

Beachten Sie, dass t Kleinbuchstaben und K und H Großbuchstaben sind.

Auch mit nur zwei Fenstern scheint es, als könnten Sie die fallen lassen Ctrl-wt Teil, weil, wenn Sie bereits in einem von nur zwei Fenstern sind, was ist der Sinn, es aktuell zu machen?

842
Mark Rushakoff

Ctrl-w gefolgt von HJK oder L (groß) verschiebt das aktuelle Fenster wie bei einer normalen Cursornavigation in die Ferne left, bottom, top bzw. right.

Mit den Kleinbuchstaben wird der Fokus verschoben, anstatt das Fenster zu verschieben.

297
respectTheCode

Wenn Sie zwei oder mehr Fenster haben, die horizontal oder vertikal geöffnet sind und diese alle in die andere Ausrichtung verschieben möchten, können Sie Folgendes verwenden:

(zur Horizontalen wechseln)

:windo wincmd K

(zur Vertikalen wechseln)

:windo wincmd H

Es geht effektiv zu jedem Fenster einzeln und mit ^WK oder ^WH.

41
Steve

Die folgenden ex-Befehle teilen eine beliebige Anzahl von Fenstern (neu) auf:

  • Um vertikal zu teilen (z. B. vertikale Trennlinien zwischen Fenstern zu erstellen), geben Sie :vertical ball Ein.
  • Geben Sie zum horizontalen Teilen :ball Ein.

Wenn ausgeblendete Puffer vorhanden sind, werden durch das Ausgeben dieser Befehle auch die ausgeblendeten Puffer sichtbar.

30
Mark

Sehen Sie sich in VIM Folgendes an, um verschiedene Alternativen für das zu sehen, was Sie möglicherweise getan haben:

: Hilfe beim Öffnen des Fensters

Zum Beispiel:

Ctrl-Ws
Ctrl-Wo
Ctrl-Wv
Ctrl-Wo
Ctrl-Ws
...

27
Anon

Horizontale bis vertikale Teilung

Ctrl+W für Windows-Befehl, gefolgt von Shift+H oder Shift+L


Vertikale bis horizontale Teilung

Ctrl+W für Windows-Befehl, gefolgt von Shift+K oder Shift+J

Beide Lösungen gelten, wenn nur zwei Fenster vorhanden sind.

6

Inspiriert von der Antwort von Steve habe ich eine einfache Funktion geschrieben, die für alle Fenster in der aktuellen Registerkarte zwischen vertikaler und horizontaler Aufteilung umschaltet. Sie können es wie in der letzten Zeile unten an die Zuordnung binden.

function! ToggleWindowHorizontalVerticalSplit()
  if !exists('t:splitType')
    let t:splitType = 'vertical'
  endif

  if t:splitType == 'vertical' " is vertical switch to horizontal
    windo wincmd K
    let t:splitType = 'horizontal'

  else " is horizontal switch to vertical
    windo wincmd H
    let t:splitType = 'vertical'
  endif
endfunction

nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>
5
Adam Faryna

In Anlehnung an Mark Rushakoffs Tipp oben ist hier mein Mapping:

" vertical to horizontal ( | -> -- )
noremap <c-w>-  <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\|  <c-w>t<c-w>H
noremap <c-w>\  <c-w>t<c-w>H
noremap <c-w>/  <c-w>t<c-w>H

Bearbeiten: verwenden Ctrl-wr zwei Fenster zu tauschen, wenn sie nicht in der richtigen Reihenfolge sind.

5
Jabba