2009-08-13 12 views

Odpowiedz

746

Vim mailing list mówi (re-formatowane dla lepszej czytelności):

Aby zmienić dwa podzielone pionowo okna do horizonally podzielić

Ctrl - wtCtrl - wK

poziomo w pionie:

Ctrl - wtCtrl - WH

Objaśnienia:

Ctrl - wt sprawia, że ​​pierwsze okienko (topLeft) aktualne Ctrl - wK przesuwa bieżące okno do pełnej szerokości na samej górze Ctrl - wH przenosi bieżące okno do pełnej wysokości po lewej stronie:

Należy pamiętać, że t ma małe litery , a K i H są wielkie.

Również tylko dwa okna, wydaje się, że można upuścić Ctrl - wt część bo jeśli jesteś już w jednym z zaledwie dwóch okien, co jest punktem co prąd?

+18

Więc jeśli masz dwa okna podzielona poziomo, a ty jesteś w dolnej części okna, wystarczy użyć^WL. –

+6

.... Moc ... Moje vim-fu podwoiło się dzisiaj, dziękuję. Istnieje mnóstwo interesujących poleceń^w (b, w, itp.) –

+4

jakoś nie działa dla mnie .. =/ – holms

26

W VIM, spojrzeć na następujące czynności, aby zobaczyć różne alternatywy dla tego, co można zrobić:

: otwarcie okna pomocy

Na przykład:

Ctrl - Ws
Ctrl - WO
Ctrl - Wv
Ctrl - WO
Ctrl - Ws
...

237

^w następnie kapitału H, J, K lub L przeniesie bieżące okno na drugim left, bottom, top lub right odpowiednio jak normalnej nawigacji kursora.

Ekwiwalenty pisane małymi literami przenoszą ostrość zamiast przesuwania okna.

+2

to dużo lepiej, ponieważ użytkownicy używają hjkl do przemieszczania się między buforami. –

+15

Przyjęta odpowiedź jest dobra, ale dla mnie ta odpowiedź jest łatwiejsza do zapamiętania. Dzięki! –

+0

Działa również lepiej z nerdtree. – arcseldon

27

Poniższe ex komendy (ponownie) podzielić dowolną liczbę okien:

  • aby podzielić pionowo (np uczynić pionowe przegrody pomiędzy oknami), typ :vertical ball
  • Aby podzielić poziomo, typ :ball

Jeśli istnieją ukryte bufory, wydawanie tych poleceń spowoduje również, że ukryte bufory będą widoczne.

+0

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

+0

': vert [ical] ball' w doc więc': vert ball' jest również ok i krócej. – Titou

+0

'' ball' redukuje 3 pionowe okna do 2 poziomych okien, a ': vert ball' poprawnie mapuje 3 poziome okna na 3 pionowe. – Titou

32

Kiedy masz dwie lub więcej otwarte okna poziomo lub pionowo i chcą, aby przełączyć się do nich wszystko do innej orientacji, można użyć następujący:

(zmien na poziome)

:windo wincmd K 

(przełącznik do pionu)

:windo wincmd H 

To effectiv ely będzie każdego okna indywidualnie, ^WK lub ^WH.

4

Po Mark Rushakoff wskazówka above, tu jest mój 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 

Edit: użycie Ctrl - wr zamienić dwa okna, jeśli nie są one w dobrym stanie.

2

Zainspirowany przez Steve'a, napisałem prostą funkcję, która przełącza między pionowymi i poziomymi podziałami 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> 
Powiązane problemy