我最近发现了一个使用<Plug>的vim插件。例如,有一个我想要执行的命令<Plug>abc_def。
我已经尝试了像:<Plug>abc_def和类似的所有东西。什么都不管用。而:help <Plug>没有给出任何信息。
但是,我已经能够通过创建一个映射:map x <Plug>(unite_redraw)来执行它。然后我可以通过按x来执行它。
现在,有没有办法在不创建虚拟映射来运行:<Plug>abc_def的情况下执行它?我实际使用的插件是Unite。
发布于 2013-08-31 18:17:09
<Plug>映射意味着要通过映射来映射和调用。<Plug>映射是一种向用户公开插件操作的干净界面的设备。
示例:而不是将某些键映射到插件的硬代码中的某些插件函数,例如“将zz映射到动作‘美观地居中光标’”:
nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>'最好从插件中只公开一个命名的<Plug>映射:
nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>'然后用户可以在他们的配置中重新映射,而不必复制和粘贴"action":
nmap zz <Plug>NiceCenterCursor这样,用户就可以很容易地覆盖、重用和插入。
<Plug>映射仅在为其定义的模式下才处于活动状态。要执行为normal模式定义的<Plug>映射,可以像使用任何normal命令一样:使用:normal (不带感叹号)。
:execute "normal \<Plug>NiceCenterCursor"因为<Plug>实际上代表了一个特殊的魔术钥匙,所以我们需要将:normal与:execute一起使用,并转义<Plug>。
在:h 41.11上对<Plug>机制进行了深入描述。另请参见this article about this topic by a Vim master。
https://stackoverflow.com/questions/18546533
复制相似问题