Vim:插入模式下“\”的奇怪行为

Vim:插入模式下“\”的奇怪行为

我使用 vim 编辑大量 tex 文件,因此我\经常使用这个字符。然而,在\插入模式下插入时,vim 会将光标在同一位置暂停一秒钟,这与任何其他字符不同。

当然,我不需要等待整整一秒钟,我可以继续输入,但文本只会在这一秒之后插入。

我发现我可以通过映射来创建类似的行为,例如:

inoremap ;; <esc>:
inoremap jj <esc>

等等。似乎 vim 正在等待另一个字符跟随,因此它可以评估映射。

尽管取消设置\地图领导者并不能缓解这个问题,但这也正是我所预料的。

另外,我不知道这是否相关,但<esc>在插入模式下使用不会立即起作用(同样是因为 vim 期望之后出现一些内容)。

是否有一个 vim 设置可以让我将粘贴时间设置为 0,但我仍然希望能够使用我的映射;;jj<esc>

我知道,timeout但这没有帮助。如果我这样做,timeoutlen=0所有多键映射都将无法使用。

答案1

您已确定问题所在:\ 被用作 imap 的第一个字符。要找出它被设置在哪里,您可以执行

:verbose imap \

除了在编辑 TeX 文件时消除映射或取消映射之外,我没有其他解决方案。你可以在 Unix 上名为 ~/.vim/after/ftplugin/tex.vim 或 Windows 上名为 ~\vimfiles\after\ftplugin\tex.vim 的文件中放入如下一行:

silent! iunmap \x

您可以x用有问题的映射的相应部分进行替换。

我使用了一些 LaTeX,安装了 Vim-LaTeX-Suite,但没有看到这种行为,所以至少这不是该套件的问题。

答案2

看起来您有一个以“\”开头的插入模式映射,可能是由您最近安装的插件设置的。要查找是否存在该映射以及哪个文件创建了该映射,请运行以下命令:

:verbose imap \

相关内容