2012-08-26 19 views
4

我試圖重新映射常規vim快捷方式Ctrl-W + <和Ctrl-W +>將當前活動窗格調整爲指定方向('<'爲左側,'>'爲正確),但不幸的是,我找不到這樣做的命令,只有一個命令可以將窗格大小增加/減少指定量,這不是我所需要的。VIM垂直調整大小到特定方向

這是目前我有:

nnoremap <C-w>> :vertical res +5<CR> 
nnoremap <C-w>< :vertical res -5<CR> 

但到5列不管這增加了當前窗口的大小,如果我在右窗格或左窗格中,這是不是很直觀很。

是否有一個命令將當前窗口調整爲左側或右側(類似於Tmux做這些事情的方式)?

回答

1

你可以根據它的窗口數設置:

au! WinEnter * call SetWinAdjust() 

fun! SetWinAdjust() 
    if winnr() > 1 
     nnoremap <C-w>> <C-w>< 
     nnoremap <C-w>< <C-w>> 
    else 
     nnoremap <C-w>> <C-w>> 
     nnoremap <C-w>< <C-w>< 
    endif 
endfun 
+0

感謝您的回答,但我不能完全弄清楚,這如何解決我的問題...在同樣的邏輯我可能已經重新映射 'nnoremap >:垂直RES 5 '和 'nnoremap <:垂直RES -5 ' 到相對'-5'和'分別5' ... 但是我需要一些方法動態地做到這一點,因爲當我的當前窗格在左側時,我需要'>'來增加它的尺寸,當我在右側時,我希望'<'來增加它的尺寸(並且如果存在多於2個垂直窗格,則決定其他行爲) –

+0

@MikeyS。對於那個很抱歉。我誤解了這個問題。我提供了一個不同的解決方案。 – Conner

+0

您的解決方案非常棒,但是在3個窗口的情況下,中間窗口調整大小是不直觀的(我期望在中間窗口中使用>時,它會將該窗口向右擴展,這是以更小的窗口爲代價的,但另一個發生)。用'winnr()== winnr('$')代替'winnr()> 1'修復了這個問題。非常感謝! –