是否可以在vim命令中使用多个参数

rog*_*oom 1 vim

我有这个mvn命令

mvn install:install-file -DgroupId=i.hate.james.blunt -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile
Run Code Online (Sandbox Code Playgroud)

我希望将它转移到vim中的命令,此刻我有这个

command -nargs=* MvnAddToRepositoy :!mvn install:install-file -DgroupId=i.hate.james.blunt -DartifactId=<arg1> -Dversion=1.0 -Dpackaging=jar -Dfile=<arg2>
Run Code Online (Sandbox Code Playgroud)

我无法在vim文档或网上的示例中找到这个.

有人可以帮忙吗?

编辑

上面的错误消息是说它正在尝试的命令

mvn install:install-file -DgroupId=mx.com.root -DartifactId=<arg1> -Dversion=1.0 -Dpackaging=jar -Dfile=<arg2>'
Run Code Online (Sandbox Code Playgroud)

Her*_*itz 9

我的理解是,Vim不会做多ARGS与访问<arg1>,<arg2>像你这样的占位符认为它.你是从某个地方的文件那里得到的吗?

你可能想看看帮助<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")
Run Code Online (Sandbox Code Playgroud)

我假设你可以在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
Run Code Online (Sandbox Code Playgroud)