2011-04-12 85 views
1

我有這個MVN命令是否有可能使用多個參數vim的命令

mvn install:install-file -DgroupId=i.hate.james.blunt -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile 

而且我想它在vim轉移到一個命令,此刻我有這個

command -nargs=* MvnAddToRepositoy :!mvn install:install-file -DgroupId=i.hate.james.blunt -DartifactId=<arg1> -Dversion=1.0 -Dpackaging=jar -Dfile=<arg2> 

我無法在vim文檔或網上找到一個例子。

誰能幫助?

編輯

上述錯誤消息是說,這是試圖

mvn install:install-file -DgroupId=mx.com.root -DartifactId=<arg1> -Dversion=1.0 -Dpackaging=jar -Dfile=<arg2>' 
+0

'命令-nargs = 1! :!ls -ltr '似乎在這裏工作正常。你有什麼錯誤嗎? – 2011-04-12 22:56:22

+0

所以我用來引用它們,它決定從輸入順序中使用 – zode64 2011-04-12 23:08:09

回答

9

我的理解命令是Vim不會做與<arg1><arg2>佔位符訪問的多個ARGS像你想象的那樣。你是否從文檔中獲得了該信息?

您可能想看看<f-args>的幫助。這使您可以定義自己的函數,您可以將參數傳遞給函數,並在您的函數中處理內容,以便以您想要的方式調用shell命令。

這是從Vim的幫助:

" Call a user function (example of <f-args>) 
:com -nargs=* Mycmd call Myfunc(<f-args>) 

When executed as: 
    :Mycmd arg1 arg2 
This will invoke: 
    :call Myfunc("arg1","arg2") 

我認爲,你可以寫內MYFUNC事情做你想要什麼。例如下面的(未經測試的)代碼。

function Myfunc(myarg1, myarg2) 
    execute '!mvn install:install-file -DgroupId=i.hate.james.blunt -DartifactId=' . 
     \ a:myarg1 . ' -Dversion=1.0 -Dpackaging=jar -Dfile=' . a:myarg2 
endfunction 
+0

我讀了相同的vim幫助,並試圖稍微改進一下。無論如何這就是我正在尋找 – zode64 2011-04-13 16:25:47

+0

有沒有辦法使用引號而不是空格分隔參數?例如,'Mycmd'arg 1「」arg 2「'而不是'Mycmd arg \ 1 arg \ 2'。我似乎無法在文檔中找到它。 – 2014-03-26 15:51:37

0

使用赫伯特回答的功能如下:

" Adds dependencies to local m2 repo 
fun! FunMvnAddToRepository(artifactid, pathtojar) 
    execute '!mvn install:install-file -DgroupId=mx.com.root -DartifactId=' . 
    \ a:artifactid . ' -Dversion=1.0 -Dpackaging=jar -Dfile=' . a:pathtojar 
endfunction 

和命令如下:

" Adds dependencies to local m2 repo 
command -nargs=* MvnAddToRepositoy call FunMvnAddToRepository(<f-args>) 

和它的作品

相關問題