如何在vim中取消映射insert键?

3
vim 中,可以通过 :map <key> <macro> 命令映射 command-mode 键,并通过 :map! <key> <macro> 命令映射 insert-mode 键。映射后,从 command-mode 键和 insert-mode 键中删除映射的命令分别是 unmap <key>unmap! <key>
这对于 command-mode 键很有效,但对于 insert-mode 键,键扩展也会在 ex 命令行提示符上起作用:试图输入该键会导致宏扩展,从而导致 unmap! 命令出现错误参数(E474: Invalid Argument),或者该命令可能尝试将某个不同于预期的键取消映射(E31: No such mapping)。
如何正确地从 vim 上删除 insert-mode 映射的键呢?

4
忘记我们几十年前在普通vi上使用的 map:map!。更喜欢精确的映射命令 imapsmapxmapcmapnmap。甚至更好的是nore版本。使用这些命令,你就不会被你曾经尝试过的不想要的副作用所困扰了。 - Luc Hermitte
这就解释了为什么我在这个问题上找答案时遇到了困难!我正在阅读有关 vim 的书籍,它可能仍然会涉及到 vi,然后再到 vim(也许还有其他的克隆版本)。它们与常规 vi 映射有很大区别吗?我猜想 imapcmap 代表 插入模式 映射和 命令模式 映射? - IanC
它们的区别在于很容易遇到不希望出现的副作用,而且我们绝对不希望它们做同样的事情,这意味着简单的映射是不够的。关于你的猜测,它们是正确的。只需使用 :help :imap 等命令来查看它们确切的作用。顺便说一下,:help :help 就像 vim 的 man man - Luc Hermitte
:cmap 是指“命令行模式映射”,:imap 是指“插入模式映射”,等等。 - romainl
1个回答

3
在映射按键时,可以使用CTRL+V来转义某些特殊字符,例如ENTERESC或某些特定的控制键。
当使用映射的插入模式键时,同样可以在编辑文本和编写命令到ex命令行提示时,在其之前加上CTRL+V进行转义。
例如,如果将+插入键映射到某个宏,并且用户想要取消映射,则必须在书写ex命令时转义该键以避免宏扩展: :unmap! + CTRL+V(显示一个^) + <key> 同样,如果需要在插入模式下编辑文本时插入常规的+,也可以这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接