【问题标题】:vim: can I have the last key of a multi-key binding repeat the command?vim:我可以让多键绑定的最后一个键重复命令吗?
【发布时间】:2013-05-17 01:03:27
【问题描述】:

我想在 vim 中调整窗口大小,就像我在 tmux 中所做的那样。

使用我的tmux 绑定(形式为bind -r J resize-pane -D 5,其中-r 用于重复)我可以执行<C-b>JJJ,这与vim 的@987654328 的键数和效果相同@,但想得少得多,因为我可以移动拆分直到它看起来正确,而不是提前决定行/列的数量。

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

vim 绑定中是否可以使用这种重复/超时模式?

【问题讨论】:

    标签: vim


    【解决方案1】:

    这是一个棘手的问题,但我将分享我的处理方法,因为我认为它比 <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 以水平缩小我所在的拆分。它们也适用于计数。

    【讨论】:

    • 它不像tmux 重复绑定那样通用,但仍然是这个用例的完美解决方案。谢谢!
    猜你喜欢
    • 2019-08-15
    • 2013-11-23
    • 1970-01-01
    • 2012-02-14
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2010-09-14
    相关资源
    最近更新 更多