vim: ярлык для изменения размера split windows - PullRequest
0 голосов
/ 12 апреля 2020

Когда я разделю windows в Vim, я могу изменить размер windows, используя :resize +1/-1. Я хотел добавить ярлык для него, который работал бы как split windows в terminator . В терминаторе, если у меня есть два windows друг над другом, CTRL Shift Up / Down перемещает разделитель между двумя windows, то есть, если я нахожусь в верхнем окне и нажимаю CTRL Shift Down, верхнее окно увеличивается. С другой стороны, если я в нижнем окне, CTRL Shift Down уменьшает нижнее окно. Таким образом, он действительно перемещает разделитель.

С split windows в vim я попытался переназначить так:

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

Это нормально работает, если я в верхнем окне ( нажатие CTRL UP уменьшает размер окна и CTRL Down увеличивает размер). Но когда я перехожу в нижнее окно, оно ведет себя правильно, но имеет странный эффект (CTRL UP также уменьшает размер окна). Поэтому я не могу симулировать перемещение разделителя.

Можно ли выполнить команду в зависимости от того, в каком окне я нахожусь?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете определить функцию в .vimr c

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>
...