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.


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?


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.


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.


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.


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
...


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.


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>

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.