Как я могу использовать vim для автоматизации этого ...?

357
flumpb

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

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

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

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

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

Спасибо

0

3 ответа на вопрос

1
akira

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

Я на самом деле думаю сделать это прямо сейчас, но я бы хотел стать более опытным с vim. flumpb 12 лет назад 0
благие намерения, но для этой задачи может быть неподходящее время akira 12 лет назад 0
Хороший вопрос, я продолжил и написал генератор (в ..... c ++!) И закончил все методы :). Мне нужно пойти учиться сценариям VIM в свободное время на другой день flumpb 12 лет назад 0
1
uzsolt

Первая идея: в vim есть for(Try :help for).

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

0
Luc Hermitte

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

VimL: " /template//.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=&<+s:format+>", name, <+s:real+>); } 

Похожие вопросы