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>H
i: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
, top
lub 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
:ball
Jeśli istnieją ukryte bufory, wydanie tych poleceń sprawi, że ukryte bufory będą widoczne.
:vert[ical] ball
w dokumencie :vert ball
jest więc w porządku i krótszy.
:ball
redukuje 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 cmd
okno 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 endif
Mam 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.