我正在尝试在vim中为Bundle插件组合两个命令。因为BundleUpdate提取所有插件并安装它们并且速度很慢。我有以下内容。前两个工作正常,但第三个没有。它在BundleClean
操作后停止。如何让vim运行第二个命令?
command! -bang BI BundleInstall<bang>
command! -bang BC BundleClean<bang>
;not working below
command! -bang BU BundleClean<bang> | BundleInstall<bang>
答案 0 :(得分: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
命令调用你的函数。
答案 1 :(得分:3)
除了-bar
之外,您应该使用:command
作为-bang
的参数,否则用户定义的命令无法链接命令和添加注释。
你必须使用
command! -bar -bang BU BC<bang> | BI<bang>
代替您当前拥有的内容,因为Bundle*
命令没有-bar
参数。
还有另一种选择:使用execute
:
command! -bang BU execute 'BundleClean<bang>' | execute 'BundleInstall<bang>'
。谨防使用execute '…<some-arg>'
,它对于某些参数的值不会正常工作。它适用于<bang>
的可能扩展。