Vim:用我自己的表达式包装插件映射

时间:2013-03-13 14:54:57

标签: plugins configuration vim

我有一个插件,其中包含以下映射:

:i <CR>          <CR><Plug>DiscretionaryEnd

我还想为<CR>创建我自己的表达式,这个表达式贯穿于这个原始映射。但是,当我做这样的事情时:

:inoremap <expr> <CR> test ? '<CR><Plug>DiscretionaryEnd' : '<Esc>'

CR 打印\n<Plug>DiscretionaryEnd而不仅仅是\n,然后是对插件的DiscretionaryEnd功能的委派。

:h <Plug>表示它用于内部映射,所以我可能会犯这个错误。但我认为有一种方法可以包装一个插件的行为,而不会潜入它的内部。我该怎么做?

1 个答案:

答案 0 :(得分:2)

虽然通常建议use :noremap,因为它使映射不受重映射和递归的影响,这是规则的一个例外。

在表达式映射中,映射适用于表达式本身,而不是返回的字符流。

:imap <expr> <CR> test ? '<CR><Plug>DiscretionaryEnd' : '<Esc>'