为什么vim键映射"map!"""<ESC> ha"导致奇怪的行为?

chu*_*tsu 0 vim

我正在尝试在我的vimrc中创建一组简单的键映射,并在我的vimrc中编写以下内容:

地图!" ""哈

上面的键映射在插入模式下工作,当你键入"vim时,只需键入另一个",然后将光标放在两个引号之间.

然而,最奇怪的事情发生了,似乎vim不能停止产生双重标记并继续,它只会在按下时停止<CTRL-C>.

这是我的错误,还是这个vim bug?

fow*_*fow 7

这不是一个错误.问题是你的地图正在递归.解决方案是使用noremap!,它不允许rhs中的映射:

noremap! " ""ha
Run Code Online (Sandbox Code Playgroud)

我个人倾向于使用这些noremap命令,除非我知道我需要在rhs中扩展地图.