首页 > 解决方案 > 有时 Vim 开始忽略 Ctrl 键上的映射

问题描述

最近,当通过 ssh 在 tmux 中使用 Vim 时,有时 Vim 会开始忽略我所有以 Ctrl 开头的映射:例如<C-P>,我已绑定到 CtrlP 插件。相反,Vim 运行内置操作(在这种情况下,在文件中向上移动行)。我不怀疑正确的按键正在到达Vim,因为它使用了正确的内置操作<C-P>(使用从 tmux:send-keys发送ctrl-p也会导致<C-P>vim 中的内置运行,而不是映射)。

我所有不涉及控制键的映射仍然有效。例如,我可以这样做:

nnoremap p :echo "test"<cr>, 和紧迫的p回声test

但紧随其后 nnoremap <c-p> :echo "test"<cr>, 和按下CTRL-P不会回显测试,它将光标向上移动一行。

重新启动 Vim 总能解决问题,但在某些时候,我所做的某件事会导致问题再次出现。我最近主要通过 ssh 在 tmux 中工作,所以我不能 100% 确定其中任何一个是否是问题(尽管我想我记得在 tmux 中的 Vim 中发生过这种情况,而不是通过 ssh),但如上所述,我相信直接从 tmux 使用 send-keys 作为测试可以确保 vim 获取实际的ctrl-p键码。同样,<C-V><C-P>在插入模式下确实插入^P

请注意,虽然我在ctrl-p这里用作示例,但由于它是我在实践中实际使用很多的键,这适用于任何控制键映射。

是否有某种我不知道的 Vim 状态导致这种情况发生?这可能是终端问题吗?我的下一步是什么?

标签: vimsshterminaltmux

解决方案


推荐阅读