Можно ли использовать несколько аргументов в команде vim - PullRequest
1 голос
/ 13 апреля 2011

У меня есть эта команда mvn

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 docs или примере в сети.

Кто-нибудь может помочь?

Редактировать

В сообщении об ошибке выше говорилось, что команда пытается

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

Ответы [ 2 ]

9 голосов
/ 13 апреля 2011

Насколько я понимаю, Vim не делает доступными несколько аргументов с помощью заполнителей <arg1>, <arg2>, как вы думаете.Вы что-нибудь получаете из документации?

Возможно, вы захотите взглянуть на справку по <f-args>.Это позволяет вам определять свою собственную функцию, которой вы можете передавать аргументы, и обрабатывать вещи внутри вашей функции, чтобы вызывать команду оболочки так, как вам нужно.

Это из справки 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 голосов
/ 13 апреля 2011

Используя ответ Герберта, функция выглядит так:

" 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>)

И она работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...