1

我正在尝试在 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>
4

2 回答 2

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后面不能跟另一个命令 by |

但是,您可以编写一个函数,在该函数中执行两个命令。让你的BU命令调用你的函数。

于 2013-04-17T21:14:20.247 回答
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 '…&lt;some-arg>',对于某些参数的值,它不会正常工作。它适用于<bang>.

于 2013-04-17T21:14:30.823 回答