2

我有一个具有以下映射的插件:

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

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

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

CR打印\n<Plug>DiscretionaryEnd而不是仅仅\n跟随插件DiscretionaryEnd功能的委托。

:h <Plug>说它用于内部映射,所以我可能会出错。但我认为有一种方法可以包装插件的行为,而无需深入了解它的内部。我该怎么做?

4

1 回答 1

2

尽管通常建议使用:noremap,因为它使映射不受重映射和递归的影响,但这是该规则的一个例外。

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

:imap <expr> <CR> test ? '<CR><Plug>DiscretionaryEnd' : '<Esc>'
于 2013-03-13T15:12:30.620 回答