vim:调整拆分大小的快捷方式 windows

vim: shortcut to resize split windows

当我在 Vim 中拆分 windows 时,我可以使用 :resize +1/-1 调整 windows 的大小。我想为它添加一个快捷方式,就像在 terminator 中拆分 windows 一样。在终结器中,如果我有两个 windows 彼此重叠,CTRL Shift Up / Down 会在两个 windows 之间移动分隔符,也就是说,如果我在顶部window并按CTRL Shift Down,最上面的window增加。另一方面,如果我在底部 window,CTRL Shift Down 会减少底部 window。所以,它真正移动了分隔符。

在 vim 中拆分 windows,我尝试像这样重新映射:

:nnoremap <silent> <c-Up> :resize -1<CR>
:nnoremap <silent> <c-Down> :resize +1<CR>

如果我在顶部 window 这很好用(按 CTRL UP 减小 window 的大小,按 CTRL Down 增加大小)。但是当我移动到底部 window 时,它的行为是正确的,但它有一个奇怪的效果(CTRL UP 也减小了 window 的大小)。所以,我无法模拟移动分隔符。

是否有可能 o 运行 一个命令取决于 window 我所在的位置?

你可以在 .vimrc 中定义一个函数

function! MoveSeparator(PlusMinus)
    let num=tabpagewinnr(tabpagenr())
    let pm=a:PlusMinus
    if  num == "2"
        let pm = pm == '+' ? '-' : '+'
    end
    exec "resize " . pm . "1"
endfunction

nnoremap <silent> <C-UP>   :call MoveSeparator("-")<CR>
nnoremap <silent> <C-DOWN> :call MoveSeparator("+")<CR>

您的代码并没有错,只是需要稍作修改。 现在,您可以 水平垂直 方式调整所有窗格的大小:

:nnoremap <silent> <c-Up> :resize -1<CR>
:nnoremap <silent> <c-Down> :resize +1<CR>
:nnoremap <silent> <c-left> :vertical resize -1<CR>
:nnoremap <silent> <c-right> :vertical resize +1<CR>