Я реализую сотни подобных функций на данный момент, которые принимают форму

String name(String arg1, String arg2, String arg3, String arg4) {
  trampoline("name={name}&arg1={arg1}&arg2={arg2}&arg3={arg3}&arg4={arg4}",
              name, arg1, arg2, arg3, arg4);
}

Сложность в том, что функция может принимать от 2 до 10 аргументов.

Если бы у меня был способ заставить vim запрашивать у меня «Имя функции:», «Количество аргументов:», «Арг1:», я мог бы легко построить эти функции.

Если вам нужна дополнительная информация, чтобы помочь мне помочь, я был бы более чем готов предоставить.

Спасибо

3 ответа3

1

на самом деле это не ответ: если вы уже находитесь в точке, когда вы понимаете, что вам следует автоматизировать это (для сотен функций), вам следует пойти еще дальше и полностью автоматизировать его: напишите генератор кода в insert_your_favourite_language_here .

1

Первая идея: в vim есть for (Попробуйте :help for).

Вы можете создать простую функцию для этого.

0

Вот ответ, основанный на mu-шаблоне (должно быть легко перенести его на обычный viml, используя :put).

VimL: " {rtp}/template/{your_filetype}/{yourgenerator}.template
VimL: let s:nb_args = INPUT("Number of args: ")
VimL: let s:args=map(copy(range(1,s:nb_args)), '"arg".v:val')
VimL: let s:formal = join(map(copy(s:args), "'String '.v:val"), ', ')
VimL: let s:real = join(s:args, ', ')
VimL: let s:format = join(map(copy(s:args), "v:val.'={'.v:val.'}'"), '&')
String name(<+s:formal+>) {
    trampoline("name={name}&<+s:format+>",
        name, <+s:real+>);
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .