如何在vim中将两个命令连接在一起?

时间:2013-04-17 20:59:23

标签: vim plugins syntax keymapping

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

2 个答案:

答案 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>的可能扩展。