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.
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.
Antworten:
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?
:nmap <leader>th <C-w>t<C-w>H
und:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wgefolgt von H, J, Koder L(Kapital) wird das aktuelle Fenster in die weit bewegen left
, bottom
, top
oder right
jeweils wie normalen Cursor - Navigation.
Die Kleinbuchstabenäquivalente verschieben den Fokus, anstatt das Fenster zu verschieben.
Ctrl
- w
(ich weiß nicht, ob es in Ihrem Beispiel ^
Mittel gibt Ctrl
).
^
bedeutet Ctrl
.
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.
Die folgenden ex-Befehle teilen eine beliebige Anzahl von Fenstern (neu):
:vertical ball
:ball
Wenn versteckte Puffer vorhanden sind, werden durch Ausgeben dieser Befehle auch die versteckten Puffer sichtbar.
:vert[ical] ball
im doc :vert ball
ist das also auch ok und kürzer.
:ball
Reduziert 3 vertikale Fenster auf 2 horizontale Fenster, während :vert ball
3 horizontale Fenster 3 vertikalen Fenstern korrekt zugeordnet werden.
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.
Fügen Sie diese beiden Zeilen hinzu zu .vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
führt das immer cmd
in einem vertikal geteilten Fenster aus.
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>
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 endif
hoffe, dass das Sinn macht.
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.