2011-04-12 93 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>) 

和它的作品

相关问题