2013-04-17 75 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命令調用你的功能。