永久禁用映射到 Ctrl-a 的 VIM 的数字增量

Disable for good VIM's number increment that is mapped to Ctrl-a

我正在使用本地和远程 tmux 会话。 要将命令发送到本地 tmux,我使用 Ctrl-a,并发送到远程 Ctrl-q。 我试图禁用通常使用 vim 中的 Ctrl-a 执行的数字增量,但它现在使用 Ctrl-q 触发,我找不到禁用它的方法。 顺便说一句,只有当特定的 tmux window 不嵌套远程 tmux 时才会发生这种情况。 另外,我认为远程 tmux 会话中仍然可能存在一些快捷方式组合,它们也会触发增量。

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

我的tmux.conf:

..
unbind C-b
set -g prefix C-a
bind-key -n C-q send-prefix
...

然后在 vim 中,我尝试禁用 Ctrl-a 和 Ctrl-q 且不执行任何操作。

这是我的vimrc:

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

我也尝试过为 Ctrl-aCtrl-q 添加条目,但 Ctrl-q 仍然会增加。 我认为问题是因为 tmux 收到 Ctrl-q 然后将其作为前缀发送,这不知何故没有被我的额外映射捕获。

干杯, 逾越节

为什么不起作用

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

推荐

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

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

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

  3. :so ~/.vimrc 生效。

保修

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

说明

  • 不需要在 Vim 中禁用 Ctrl-q,因为你的 Tmux 永远不会发送 Ctrl-q,
  • 你的帖子tmux.conf是发送前缀,你定义为Ctrl-a,所以Vim只接收Ctrl-a

因此,当您将 Control-a 映射到无操作指令 <Nop> 时,您成功禁用了自动递增

进一步阅读

  • Vim,:help <>

我发现我仍然可以(意外地)在视觉模式下使用 gCtrl 触发不需要的 increment/decrement 行为-a。我通过将此添加到我的 .vimrc 来修补此案例(扩展上面的答案):

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