【问题标题】:Disable for good VIM's number increment that is mapped to Ctrl-a禁用映射到 Ctrl-a 的良好 VIM 的数字增量
【发布时间】:2016-04-13 14:38:18
【问题描述】:

我正在使用本地和远程 tmux 会话。 要将命令发送到本地 tmux,我使用 Ctrl-a 和远程 Ctrl-q。 我试图禁用通常在 vim 中使用 Ctrl-a 执行的数字增量,但它现在使用 Ctrl-q 触发,我找不到禁用它的方法。 顺便说一句,这只发生在特定的 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,然后将其作为前缀发送,这在某种程度上没有被我的额外映射捕获。

干杯, 逾越节

【问题讨论】:

  • &lt;C-a&gt; 为我工作(&lt;Ctrl-A&gt; 没有)。顺便说一句,您可能需要nnoremap 而不是map
  • 我看了答案,然后我注意到你推荐了C而不是Ctrl!出于某种原因,我认为您只将大写 a 更改为小写!
  • 默认启用此增量功能(IMO)太糟糕了。它似乎旨在悄悄地在数据中引入错误......就像当我使用 Vim 快速更改数百个 UUID 列表的格式时,我发现在此过程中我不小心增加了其中的一些数字。啊!

标签: vim tmux


【解决方案1】:

为什么它不起作用

Ctrl 不是 vim 可识别的 &lt;&gt; 表示法来表示键盘的 Control 键。

推荐

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

  1. 在您的~/.vimrc 中,正如@Marth 所说,使用&lt;C-a&gt;

    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 映射到无操作指令 &lt;Nop&gt;

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

进一步阅读

  • Vim, :help &lt;&gt;

【讨论】:

  • 顺便说一句,我真的很喜欢你回答的格式!谢谢!
  • 谢谢!你一开始就发布了一个格式正确、完整的问题,绝对有帮助。
【解决方案2】:

我发现我仍然可以(意外地)使用 gCtrl-a 从可视模式触发不需要的递增/递减行为。我通过将它添加到我的 .vimrc 来修补这个案例(扩展上面的答案):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2011-12-05
    • 2011-06-11
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    相关资源
    最近更新 更多