vim创建不会导致其他imaps执行的imaps

时间:2016-02-02 12:22:02

标签: vim

我正在为一种语言编写一个基本的插件,将一些特殊的“单词”\显示为λ非常简洁。

但我有一个问题。 我现在有: imap <buffer> \ λ

但我也希望: imap <buffer> \\ \ 只是为了写一个\

现在的问题是,当我输入\\时,会被\取代,然后变为λ

如何创建映射,使其不会“触发”每个人?

注意:

当我从花哨的源码转换为正常的源码时,我可以很容易地区分\应该是λ和那些应该是正常的\,因为我知道每个λ最终必须跟(一起成为一个真正的lambda。

1 个答案:

答案 0 :(得分:4)

您应该使用inoremap代替imap,尤其是第二次映射:

inoremap <buffer> \\ \

它完全针对您的问题而设计:它阻止vim在另一个映射中使用先前定义的映射。

实际上,使用几乎总是*noremap版本的映射命令是一个很好的实践,因为它们可以防止这种问题(在大多数情况下不需要)。在编写一个打算供许多人使用的插件时尤其如此。