我最近发现了一个使用名为<Plug>
. 例如,有一个<Plug>abc_def
我想执行的命令。
我已经尝试了所有:<Plug>abc_def
类似的东西。没有任何效果。并且:help <Plug>
没有提供任何信息。
但是,我已经能够通过创建映射来执行它:map x <Plug>(unite_redraw)
。然后我可以按 执行它x
。
现在,有没有什么方法可以在:<Plug>abc_def
不创建虚拟映射的情况下运行它?我使用的实际插件是 Unite。
我最近发现了一个使用名为<Plug>
. 例如,有一个<Plug>abc_def
我想执行的命令。
我已经尝试了所有:<Plug>abc_def
类似的东西。没有任何效果。并且:help <Plug>
没有提供任何信息。
但是,我已经能够通过创建映射来执行它:map x <Plug>(unite_redraw)
。然后我可以按 执行它x
。
现在,有没有什么方法可以在:<Plug>abc_def
不创建虚拟映射的情况下运行它?我使用的实际插件是 Unite。
<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
。另请参阅Vim 大师关于此主题的这篇文章。