2013-04-17 108 views
1

我想在vim中为Bundle插件组合两个命令。因为BundleUpdate会提取所有插件并安装它们,速度很慢。我有以下几点。前两项工作正常,但第三项没有。它在BundleClean操作后停止。我如何让vim运行第二个命令?如何在vim中一起连接两个命令?

command! -bang BI BundleInstall<bang> 
command! -bang BC BundleClean<bang> 
;not working below 
command! -bang BU BundleClean<bang> | BundleInstall<bang> 

回答

3

除了-bang之外,您应该使用-bar作为参数:command,否则链接命令和添加注释对用户定义的命令是不可能的。

你将不得不使用

command! -bar -bang BU BC<bang> | BI<bang> 

代替你目前因为Bundle*命令什么都不用-bar说法。

还有另外一种选择:使用execute

command! -bang BU execute 'BundleClean<bang>' | execute 'BundleInstall<bang>' 

。谨防使用execute '…<some-arg>',对于某些参数的值不适用。它适用于两种可能的扩展<bang>

+0

嗨Zyx,这不是很有趣吗?我刚刚了解到,这里提出了一个问题!现在最后我可以upvote你的答案说谢谢! +1 – Kent

+0

问题提交给您的“BC | BI '这是否意味着如果我们想链接一些用户定义的cmds,它们位于某个插件中而没有'-bar',我们可以为它们和'-bar'编写包装器命令,然后我们可以链接包装器命令用'|'最终插件定义的命令会被链接? – Kent

+0

@Kent它很容易测试。命令在扩展之前被分割,而不是在之后,因此它正常工作。 – ZyX

3

你不能做BundleClean | BundleInstall

由于BundleClean是一个用户定义的命令,它是由Vundle插件定义:

com! -nargs=? -bang BundleClean call vundle#installer#clean('!' == '<bang>') 

注意,存在在该命令定义没有-bar

如果:h command-bar您将看到:

-bar  The command can be followed by a "|" and another command. 
     A "|" inside the command argument is not allowed then. 
     Also checks for a " to start a comment. 

也就是说,BundleClean不能跟其他的命令由|

然而,您可以在执行这两个命令的函数中编写一个函数。让你的BU命令调用你的功能。