首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vim中执行<Plug>命令

在vim中执行<Plug>命令
EN

Stack Overflow用户
提问于 2013-08-31 17:20:46
回答 1查看 20.1K关注 0票数 70

我最近发现了一个使用<Plug>的vim插件。例如,有一个我想要执行的命令<Plug>abc_def

我已经尝试了像:<Plug>abc_def和类似的所有东西。什么都不管用。而:help <Plug>没有给出任何信息。

但是,我已经能够通过创建一个映射:map x <Plug>(unite_redraw)来执行它。然后我可以通过按x来执行它。

现在,有没有办法在不创建虚拟映射来运行:<Plug>abc_def的情况下执行它?我实际使用的插件是Unite。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 18:17:09

<Plug>映射意味着要通过映射来映射和调用。<Plug>映射是一种向用户公开插件操作的干净界面的设备。

示例:而不是将某些键映射到插件的硬代码中的某些插件函数,例如“将zz映射到动作‘美观地居中光标’”:

代码语言:javascript
复制
nnoremap <expr> zz 'zz'.float2nr(winheight(0)*0.1).'<C-E>'

最好从插件中只公开一个命名的<Plug>映射:

代码语言:javascript
复制
nnoremap <expr> <Plug>NiceCenterCursor 'zz'.float2nr(winheight(0)*0.1).'<C-E>'

然后用户可以在他们的配置中重新映射,而不必复制和粘贴"action":

代码语言:javascript
复制
nmap zz <Plug>NiceCenterCursor

这样,用户就可以很容易地覆盖、重用和插入。

<Plug>映射仅在为其定义的模式下才处于活动状态。要执行为normal模式定义的<Plug>映射,可以像使用任何normal命令一样:使用:normal (不带感叹号)。

代码语言:javascript
复制
:execute "normal \<Plug>NiceCenterCursor"

因为<Plug>实际上代表了一个特殊的魔术钥匙,所以我们需要将:normal:execute一起使用,并转义<Plug>

:h 41.11上对<Plug>机制进行了深入描述。另请参见this article about this topic by a Vim master

票数 100
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18546533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档