禁用映射到Ctrl-a的良好VIM数量增量

时间:2016-04-13 14:38:19

标签: vim tmux

我正在使用本地和远程tmux会话。 要将命令发送到本地tmux,我使用Ctrl-q和远程Ctrl-a。 我试图在vim中禁用通常用Ctrl-q执行的数字增量,但它现在用.. unbind C-b set -g prefix C-a bind-key -n C-q send-prefix ... 触发,我找不到禁用它的方法。 顺便说一下,只有在特定的tmux窗口没有嵌套远程窗口时才会发生这种情况。 此外,我认为远程tmux会话中仍可能存在快捷键组合,这也会触发增量。

那么有没有办法完全禁用该功能? 一个理想的解决方案是用一个什么都不做的函数来覆盖它。 这是一个非常偷偷摸摸的命令,因此我在过去有一些非常糟糕的调试经验!

我的tmux.conf:

...
map <Ctrl-A> <Nop>
map <Ctrl-Q> <Nop>
...

然后在vim中我尝试禁用Ctrl-a和Ctrl-q以及no-ops。

这是我的vimrc:

Ctrl-a

我还尝试为Ctrl-qCtrl-q添加条目,但仍然Ctrl-q执行增量。 我认为这个问题是因为tmux接收 @doc ~S""" \n will appear literally """ 然后将其作为前缀发送,这种方式不会被我的额外映射捕获。

干杯, PASCHALIS

2 个答案:

答案 0 :(得分:13)

为什么它不起作用

Ctrl不是vim识别的<>符号来表示键盘的 Control 键。

建议

禁用 Control - a 触发数字的默认vim自动增量:

  1. ~/.vimrc中,正如@Marth所说,使用<C-a>

    map <C-a> <Nop>
    
  2. 保存:w

  3. :so ~/.vimrc让它生效。

  4. 保修

    • 经测试可在Vim 7.4中使用
    • 您无需在Vim中禁用Ctrl-q

    说明

    • 不需要在Vim中禁用Ctrl-q,因为你的Tmux永远不会发送Ctrl-q,
    • 您发布的tmux.conf正在发送前缀,您将其定义为Ctrl-a,因此Vim仅接收Ctrl-a

    因此,当您将 Control - a 映射到无操作指令<Nop>

    时,您成功禁用了自动增量

    进一步阅读

    • Vim,:help <>

答案 1 :(得分:0)

我发现我仍然可以(偶然地)使用 g Ctrl - a 在视觉模式下触发不必要的增量/减量行为。我通过将其添加到我的.vimrc(扩展了上面的答案)中来修补这种情况:

map <C-a> <Nop>
map g<C-a> <Nop>
map <C-x> <Nop>
map g<C-x> <Nop>