Aby zmienić dwa okna podzielone pionowo, aby podzielić poziomo
Ctrl- wtCtrl-wK
Poziomo do pionowo:
Ctrl- wtCtrl-wH
Objaśnienia:
Ctrl- wt aktywuje pierwsze (lewe) okno
Ctrl- wK przesuwa bieżące okno na pełną szerokość na samej górze
Ctrl- wH 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-, wtponieważ jeśli już jesteś w jednym z dwóch okien, jaki jest sens, aby był aktualny?
Więc jeśli masz dwa okna podzielone poziomo i jesteś w dolnym oknie, po prostu użyj ^ WL.
za dużo php
7
.... Moc ... Mój vim-fu podwoił się dzisiaj, dziękuję. Istnieje mnóstwo interesujących poleceń ^ b (b, w itp.)
Alex Hart
Byłoby miło, czy to zadziałało podczas korzystania z wtyczki NERDTree :-)
Eno
3
@Eno działa dobrze dla mnie. Wystarczy zamknąć panel NERDTree przed „obróceniem” podziałów, a następnie ponownie go otworzyć. : NERDTreeToggle (Dla wygody mam przypisany do klawisza funkcyjnego).
Lambart
2
Dodałem kilka mapowań liderów do mojej konfiguracji vima: :nmap <leader>th <C-w>t<C-w>Hi:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski
324
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.
jest o wiele lepszy, ponieważ użytkownicy używają hjkl do przechodzenia między buforami.
Afshin Mehrabani
30
Przyjęta odpowiedź jest dobra, ale dla mnie ta odpowiedź jest łatwiejsza do zapamiętania. Dzięki!
Jon Carter
Działa lepiej również z nerdtree.
arcseldon
Działa dla mnie w systemie macOS z prefiksem Ctrl- w(nie wiem, czy w twoim przykładzie ^znaczy to Ctrl).
Giovanni Benussi,
@ GiovanniBenussi tak, myślę, że ^znaczy Ctrl.
ma11hew28,
47
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.
To powinna być zaakceptowana odpowiedź, ponieważ bieżąca zaakceptowana odpowiedź będzie działać tylko dla dwóch plików. Ta odpowiedź jest bardziej kompletna.
DrStrangepork,
:vert[ical] ballw dokumencie :vert balljest więc w porządku i krótszy.
Titou
:ballredukuje 3 okna pionowe do 2 okien poziomych, a jednocześnie :vert ball poprawnie mapuje 3 okna poziome do 3 okien pionowych.
Titou
27
W VIM zapoznaj się z poniższymi informacjami, aby zobaczyć różne alternatywy dla tego, co mogłeś zrobić:
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>
Działa jeszcze lepiej dla mnie, jeśli zmuszę go do pozostania w takim samym podziale, jak to ma miejsce, 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.
mjhoffmann
5
Podążając za wskazówką Marka Rushakoffa powyżej , oto moje mapowanie:
Odpowiedzi:
Lista mailingowa Vima mówi (ponownie sformatowana dla lepszej czytelności):
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?
źródło
: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
lubright
, odpowiednio, jak normalnej nawigacji kursora.Odpowiedniki małych liter przesuwają fokus zamiast przesuwać okno.
źródło
Ctrl
-w
(nie wiem, czy w twoim przykładzie^
znaczy toCtrl
).^
znaczyCtrl
.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)
(przełącz na pionowy)
Efektywnie przechodzi do każdego okna indywidualnie i używa ^WKlub ^WH.
źródło
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.
źródło
: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.W VIM zapoznaj się z poniższymi informacjami, aby zobaczyć różne alternatywy dla tego, co mogłeś zrobić:
: pomoc w otwarciu okna
Na przykład:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
źródło
Oba rozwiązania mają zastosowanie, gdy istnieją tylko dwa okna.
Domyślnie otwórz pomoc w podziale pionowym
Dodaj obie te linie do
.vimrc
::vert[ical] {cmd}
zawsze wykonujecmd
okno podzielone pionowo.źródło
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.
źródło
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
iif 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:
Edycja: użyj Ctrl- w raby zamienić dwa okna, jeśli nie są w dobrym stanie.
źródło