我最近发现了一个使用名为<Plug>
的vim插件。例如,我想执行一个命令<Plug>abc_def
。
我尝试了类似:<Plug>abc_def
之类的所有内容。没有任何效果。 :help <Plug>
没有提供任何信息。
但是,我已经能够通过创建映射:map x <Plug>(unite_redraw)
来执行它。然后我可以按x
执行它。
现在,有没有办法执行:<Plug>abc_def
而不创建虚拟映射只是为了运行它?我使用的实际插件是Unite。
答案 0 :(得分:54)
<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>'
nmap zz <Plug>NiceCenterCursor
这很容易被用户覆盖,重用和插入。
<Plug>
映射仅在它们已定义的模式下处于活动状态。要执行为正常模式定义的<Plug>
映射,您可以像使用任何普通命令一样:使用:normal
(不带感叹号)。
:execute "normal \<Plug>NiceCenterCursor"
由于<Plug>
实际上代表了一个特殊的魔术密钥,因此我们需要将:normal
与:execute
一起使用并转义<Plug>
。
<Plug>
机制在:h 41.11
深入介绍。另请参阅this article about this topic by a Vim master。