2009-08-13 134 views

回答

746

Vim mailing list說(重新格式化爲更好的可讀性):

要更改垂直分割 窗口horizo​​nally分裂

按Ctrl - 瓦特噸Ctrl鍵 - wķ

水平地垂直地:

Ctrl鍵 - 瓦特噸Ctrl鍵 - 瓦特ħ

說明:

Ctrl鍵 - 瓦特噸使第一(左上)窗口當前 Ctrl鍵 - 瓦特ķ移動當前窗口以全寬在最高層 Ctrl鍵 - 瓦特H將當前窗口移動到最左端的全高位

請注意,t是小寫,K和H是大寫字母。

而且,只有兩個窗口,好像你可以刪除按Ctrl - 因爲如果你只在兩個窗口之一是已經,什麼使得它目前的點瓦特噸一部分?

+18

所以,如果你有兩個窗口水平分割,和你在下面的窗口,你只需使用^ WL。 – 2009-08-13 02:17:42

+6

....電源...今天我的vim-fu翻了一倍,謝謝。有很多有趣的^ W命令(b,w等) – 2012-12-07 14:10:22

+4

莫名其妙地不適合我.. =/ – holms 2013-02-28 09:07:24

26

在VIM,看看下面看到你可能會做什麼不同的選擇:

:幫助開放窗口

例如:

按Ctrl - w^s
Ctrl - WØ
按Ctrl - W¯¯v
按Ctrl - W¯¯Ø
按Ctrl - W¯¯小號
...

237

^w其次是資本HJKL將當前窗口移動到遠leftbottomtopright分別像正常光標導航。

小寫等價物移動焦點而不是移動窗口。

+2

這是多少因爲用戶使用hjkl在緩衝區之間移動。 – 2014-08-22 06:07:50

+15

接受的答案是一個很好的答案,但對我而言,這個答案更容易記住。謝謝! – 2015-11-23 22:14:21

+0

也可以使用nerdtree更好地工作。 – arcseldon 2017-11-07 16:04:17

27

以下ex命令將(重新)拆分任何數量的窗口:

  • 要垂直拆分(例如使窗之間的垂直分隔),類型:vertical ball
  • 要水平拆分,類型:ball

如果存在隱藏緩衝區,則發出這些命令也會使隱藏緩衝區可見。

+0

這應該是被接受的答案,因爲目前接受的答案只適用於兩個文件。這個答案更完整。 – DrStrangepork 2015-08-13 17:53:19

+0

':vert [ical] ball'在文檔中如此:'vert ball'也可以,並且更短。 – Titou 2017-05-03 09:18:45

+0

':ball'將3個垂直窗口縮小到2個水平窗口,而':vert ball'正確地將3個水平窗口映射到3個垂直窗口。 – Titou 2017-05-03 09:21:28

32

當你有兩個以上打開窗戶水平或垂直方向,並希望所有切換他們到其他方向,你可以使用以下命令:

(切換到水平)

:windo wincmd K 

(切換到垂直)

:windo wincmd H 

這是有效實現了ely每個窗口單獨使用和使用^WK^WH

4

繼馬克Rushakoff的小費above,這裏是我的映射:

" 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 

編輯:使用按Ctrl - 瓦特[R交換兩個窗口,如果他們不是在良好的秩序。

2

受Steve答覆的啓發,我寫了一個簡單的函數,在當前選項卡中的所有窗口的垂直和水平分割之間切換。你可以像下面最後一行那樣將它綁定到映射。

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>