So wechseln Sie in Vim schnell von vertikaler zu horizontaler Aufteilung

596

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

Ich habe das vor kurzem aus Versehen gemacht, aber ich kann den Schlüssel nicht wiederfinden.

Léo Léopold Hertz 준영
quelle
2
Vielleicht ist das Plugin
dwm.vim ein bisschen

Antworten:

894

In der Vim-Mailingliste heißt es (zur besseren Lesbarkeit neu formatiert):

So ändern Sie zwei vertikal geteilte Fenster in horizontal geteilte

Ctrl- w t Ctrl-w K

Horizontal bis vertikal:

Ctrl- w t Ctrl-w H

Erklärungen:

Ctrl- w t macht das erste (oben links) Fenster aktuell

Ctrl- w K verschiebt das aktuelle Fenster ganz oben auf volle Breite

Ctrl- w H verschiebt das aktuelle Fenster ganz links auf volle Höhe

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

Mit nur zwei Fenstern scheint es auch so, als könnten Sie den Ctrl- w tTeil löschen, denn wenn Sie sich bereits in einem von nur zwei Fenstern befinden, was bringt es, ihn aktuell zu machen?

Mark Rushakoff
quelle
27
Wenn Sie also zwei Fenster horizontal geteilt haben und sich im unteren Fenster befinden, verwenden Sie einfach ^ WL.
zu viel PHP
7
.... Die Kraft ... Mein Vim-Fu hat sich heute verdoppelt, danke. Es gibt eine Menge interessanter ^ w-Befehle (b, w usw.)
Alex Hart
Wäre schön, wenn das mit dem NERDTree Plugin funktioniert :-)
Eno
3
@Eno Funktioniert gut für mich. Schalten Sie Ihr NERDTree-Bedienfeld einfach zu, bevor Sie die Teilungen drehen, und schalten Sie es dann wieder auf. : NERDTreeToggle (Ich habe es der Einfachheit halber einer Funktionstaste zugeordnet).
Lambart
2
Ich habe meiner vim-Konfiguration einige Leader-Mappings hinzugefügt: :nmap <leader>th <C-w>t<C-w>Hund:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski
324

Ctrl- wgefolgt von H, J, Koder L(Kapital) wird das aktuelle Fenster in die weit bewegen left, bottom, topoder rightjeweils wie normalen Cursor - Navigation.

Die Kleinbuchstabenäquivalente verschieben den Fokus, anstatt das Fenster zu verschieben.

respektiere den Code
quelle
5
Es ist viel besser, da Benutzer hjkl verwenden, um zwischen Puffern zu wechseln.
Afshin Mehrabani
30
Die akzeptierte Antwort ist gut, aber für mich ist diese Antwort leichter zu merken. Vielen Dank!
Jon Carter
Funktioniert auch besser mit Nerdtree.
Arcseldon
Es funktioniert für mich unter macOS mit dem Präfix Ctrl- w(ich weiß nicht, ob es in Ihrem Beispiel ^Mittel gibt Ctrl).
Giovanni Benussi
@GiovanniBenussi ja, ich denke ^bedeutet Ctrl.
ma11hew28
47

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

(auf horizontal wechseln)

:windo wincmd K

(auf vertikal umschalten)

:windo wincmd H

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

Steve
quelle
32

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

  • Geben Sie Folgendes ein, um vertikal zu teilen (z. B. vertikale Teiler zwischen Fenstern zu erstellen) :vertical ball
  • Geben Sie zum horizontalen Teilen Folgendes ein :ball

Wenn versteckte Puffer vorhanden sind, werden durch Ausgeben dieser Befehle auch die versteckten Puffer sichtbar.

Kennzeichen
quelle
Dies sollte die akzeptierte Antwort sein, da die aktuell akzeptierte Antwort nur für zwei Dateien funktioniert. Diese Antwort ist vollständiger.
DrStrangepork
:vert[ical] ballim doc :vert ballist das also auch ok und kürzer.
Titou
:ballReduziert 3 vertikale Fenster auf 2 horizontale Fenster, während :vert ball 3 horizontale Fenster 3 vertikalen Fenstern korrekt zugeordnet werden.
Titou
27

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- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...

Anon
quelle
11

Horizontale bis vertikale Aufteilung

Ctrl+ Wfür Fensterbefehl, gefolgt von Shift+ Hoder Shift+L


Vertikale bis horizontale Aufteilung

Ctrl+ Wfür Fensterbefehl, gefolgt von Shift+ Koder Shift+J

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


Öffnen Sie die Hilfe standardmäßig in vertikaler Aufteilung

Fügen Sie diese beiden Zeilen hinzu zu .vimrc:

cabbrev help vert help
cabbrev h vert h

:vert[ical] {cmd}führt das immer cmdin einem vertikal geteilten Fenster aus.

Serge Stroobandt
quelle
6

Inspiriert von der Antwort von Steve habe ich eine einfache Funktion geschrieben, die für alle Fenster in der aktuellen Registerkarte zwischen vertikalen und horizontalen Teilungen umschaltet. Sie können es wie in der letzten Zeile unten an das Mapping 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>
Adam Faryna
quelle
Funktioniert noch besser für mich, wenn ich es zwinge, in der gleichen Spaltung zu bleiben if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif und if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifhoffe, dass das Sinn macht.
mjhoffmann
5

Nach 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 Sie Ctrl- w r, um zwei Fenster auszutauschen, wenn sie nicht in der richtigen Reihenfolge sind.

Jabba
quelle