Como posso usar o vim para automatizar isso…?

0

Estou implementando centenas de funções semelhantes no momento que assumem o formulário

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);
}

A parte complicada é que a função pode levar de 2 a 10 argumentos.

Se eu pudesse ter uma maneira de fazer o vim me perguntar por "Nome da função:", "Número de args:", "arg1:" Eu poderia facilmente construir essas funções.

Se você precisar de mais informações para ajudá-lo, eu estaria mais do que disposto a fornecer.

Obrigado

    
por flumpb 17.10.2011 / 16:29

3 respostas

1

não é realmente uma resposta: se você já está em um ponto em que reconhece que deve automatizar isso (para centenas de funções), você deve ir além e automatizá-lo completamente: escreva um gerador de código em insert_your_favourite_language_here .

    
por 17.10.2011 / 16:33
1

Primeira ideia: no vim tem for (Experimente :help for ).

Você pode criar uma função simples para fazer isso.

    
por 17.10.2011 / 17:22
0

Aqui está uma resposta baseada em mu-template (deve ser fácil de portar para plain viml usando :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+>);
}
    
por 17.10.2011 / 19:06