Jak możesz zmienić swoje obecne okna z podziału poziomego na podział pionowy i odwrotnie w Vimie?
Zrobiłem to chwilę temu przez przypadek, ale nie mogę znaleźć klucza ponownie.
Jak możesz zmienić swoje obecne okna z podziału poziomego na podział pionowy i odwrotnie w Vimie?
Zrobiłem to chwilę temu przez przypadek, ale nie mogę znaleźć klucza ponownie.
Odpowiedzi:
Lista mailingowa Vima mówi (ponownie sformatowana dla lepszej czytelności):
Aby zmienić dwa okna podzielone pionowo, aby podzielić poziomo
Ctrl- w t Ctrl-w K
Poziomo do pionowo:
Ctrl- w t Ctrl-w H
Objaśnienia:
Ctrl- w t aktywuje pierwsze (lewe) okno
Ctrl- w K przesuwa bieżące okno na pełną szerokość na samej górze
Ctrl- w H przesuwa bieżące okno do pełnej wysokości po lewej stronie
Zauważ, że t jest małymi literami, a K i H są dużymi literami.
Ponadto, mając tylko dwa okna, wydaje się, że możesz upuścić część Ctrl-, w tponieważ jeśli już jesteś w jednym z dwóch okien, jaki jest sens, aby był aktualny?
:nmap <leader>th <C-w>t<C-w>Hi:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wnastępnie H, J, Klub L(kapitał) przeniesie bieżące okno do daleko left, bottom, toplub right, odpowiednio, jak normalnej nawigacji kursora.
Odpowiedniki małych liter przesuwają fokus zamiast przesuwać okno.
Ctrl- w(nie wiem, czy w twoim przykładzie ^znaczy to Ctrl).
^znaczy Ctrl.
Jeśli masz dwa lub więcej okien otwartych w poziomie lub w pionie i chcesz je wszystkie przełączyć na inną orientację, możesz użyć następujących opcji:
(przełącz na poziomy)
:windo wincmd K
(przełącz na pionowy)
:windo wincmd H
Efektywnie przechodzi do każdego okna indywidualnie i używa ^WKlub ^WH.
Następujące polecenia ex podzielą (ponownie) dowolną liczbę okien:
:vertical ball:ballJeśli istnieją ukryte bufory, wydanie tych poleceń sprawi, że ukryte bufory będą widoczne.
:vert[ical] ballw dokumencie :vert balljest więc w porządku i krótszy.
:ballredukuje 3 okna pionowe do 2 okien poziomych, a jednocześnie :vert ball poprawnie mapuje 3 okna poziome do 3 okien pionowych.
Podział poziomy na pionowy
Ctrl+ Wdla polecenia okna, a następnie Shift+ Hlub Shift+L
Podział pionowy na poziomy
Ctrl+ Wdla polecenia okna, a następnie Shift+ Klub Shift+J
Oba rozwiązania mają zastosowanie, gdy istnieją tylko dwa okna.
Dodaj obie te linie do .vimrc:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}zawsze wykonuje cmdokno podzielone pionowo.
Zainspirowany odpowiedzią Steve'a, napisałem prostą funkcję, która przełącza pomiędzy podziałem pionowym i poziomym dla wszystkich okien w bieżącej zakładce. Możesz powiązać go z mapowaniem jak w ostatnim wierszu poniżej.
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 i if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifMam nadzieję, że to ma sens.
Podążając za wskazówką Marka Rushakoffa powyżej , oto moje mapowanie:
" 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
Edycja: użyj Ctrl- w raby zamienić dwa okna, jeśli nie są w dobrym stanie.