vim:我可以让多键绑定的最后一个键重复命令吗?

时间:2013-05-17 01:03:28

标签: vim

我希望在vim中调整窗口大小,与我在tmux中的方式类似。

使用我的tmux绑定(bind -r J resize-pane -D 5形式,其中-r用于重复)我可以<C-b>JJJ,这是相同数量的键和效果作为vim的{​​{1}},但更少考虑,因为我可以将分割移动到看起来正确,而不是事先决定一些行/列。

另一个例子:我希望能够按下15<C-w>+,并让它执行与按<C-w>++++--相同的操作。 (虽然我可能想再次将其重新映射为每次移动5行/列而不是1)。

<C-w>+<C-w>+<C-w>+<C-w>+<C-w>-<C-w>-绑定中是否可以使用这种重复/超时模式?

2 个答案:

答案 0 :(得分:6)

这是一个棘手的问题,但我会分享我的处理方法,因为我认为它比<C-w>方法更容易(我使用了很长时间,并且发现很麻烦):

" simplify resizing splits
if has('unix')
    nnoremap ^[j <C-w>-
    nnoremap ^[k <C-w>+
    nnoremap ^[h <C-w><
    nnoremap ^[l <C-w>>
else
    nnoremap <M-j> <C-w>-
    nnoremap <M-k> <C-w>+
    nnoremap <M-h> <C-w><
    nnoremap <M-l> <C-w>>
endif

必须用实际转义替换^[个字符。按Ctrl+v,然后按escape,以插入模式创建它。这是在Linux上使用bash中的meta+x所必需的。现在,在两个操作系统中,我可以按住Althjkl键来调整分割大小,包括按住Alt+h来水平缩小我所在的分割。他们也可以使用计数。

答案 1 :(得分:1)

也许这只是微不足道的,但你可以映射它:

nnoremap <f3> <C-w>-
nnoremap <f4> <C-w>+