Как я могу использовать vim для автоматизации этого...?
Я реализую сотни подобных функций на данный момент, которые принимают форму
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 ответа
На самом деле это не ответ: если вы уже находитесь в точке, когда вы понимаете, что вам следует автоматизировать это (для сотен функций), вы должны сделать еще один шаг и полностью автоматизировать его: напишите генератор кода в insert_your_favourite_language_here
,
Первая идея: в VIM есть for
(Пытаться :help for
).
Вы можете создать простую функцию для этого.
Вот ответ, основанный на 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+>);
}