永久禁用映射到 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-a
和 Ctrl-q
添加条目,但 Ctrl-q
仍然会增加。
我认为问题是因为 tmux 收到 Ctrl-q
然后将其作为前缀发送,这不知何故没有被我的额外映射捕获。
干杯,
逾越节
为什么不起作用
Ctrl
不是 vim 可识别的 <>
符号来表示键盘的 Control 键。
推荐
要禁用 Control-a 触发默认 vim 数字自动递增:
在您的 ~/.vimrc
中,正如@Marth 所说,使用 <C-a>
:
map <C-a> <Nop>
保存:w
: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 <>
我发现我仍然可以(意外地)在视觉模式下使用 g、Ctrl 触发不需要的 increment/decrement 行为-a。我通过将此添加到我的 .vimrc 来修补此案例(扩展上面的答案):
map <C-a> <Nop>
map g<C-a> <Nop>
map <C-x> <Nop>
map g<C-x> <Nop>
我正在使用本地和远程 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-a
和 Ctrl-q
添加条目,但 Ctrl-q
仍然会增加。
我认为问题是因为 tmux 收到 Ctrl-q
然后将其作为前缀发送,这不知何故没有被我的额外映射捕获。
干杯, 逾越节
为什么不起作用
Ctrl
不是 vim 可识别的 <>
符号来表示键盘的 Control 键。
推荐
要禁用 Control-a 触发默认 vim 数字自动递增:
在您的
~/.vimrc
中,正如@Marth 所说,使用<C-a>
:map <C-a> <Nop>
保存
:w
: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 <>
我发现我仍然可以(意外地)在视觉模式下使用 g、Ctrl 触发不需要的 increment/decrement 行为-a。我通过将此添加到我的 .vimrc 来修补此案例(扩展上面的答案):
map <C-a> <Nop>
map g<C-a> <Nop>
map <C-x> <Nop>
map g<C-x> <Nop>