我有一个具有以下映射的插件:
:i <CR> <CR><Plug>DiscretionaryEnd
我还想为 <CR>
创建我自己的表达式这属于这个原始映射。但是,当我做这样的事情时:
:inoremap <expr> <CR> test ? '<CR><Plug>DiscretionaryEnd' : '<Esc>'
CR 打印 \n<Plug>DiscretionaryEnd
而不仅仅是\n
接下来是插件的 DiscretionaryEnd
的委托(delegate)功能。
:h <Plug>
说它用于内部映射,所以我可能会做错。但我认为有一种方法可以包装插件的行为,而无需深入了解其内部。我该怎么做?
最佳答案
虽然一般推荐use :noremap
,因为它使映射不受重新映射和递归的影响,这是该规则的一个异常(exception)。
在表达式映射中,映射适用于表达式本身,而不是返回的字符流。
:imap <expr> <CR> test ? '<CR><Plug>DiscretionaryEnd' : '<Esc>'
关于plugins - Vim:用我自己的表达式包装插件映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388726/