Este é um caso típico em que uma macro recursiva pode ajudar. Basta colocar sua seqüência de teclas em uma macro recursiva e executá-la. Resumindo o artigo da wiki, para não irritar os deuses da SE:
-
q q q - limpe o
q
register -
q q - inicia a gravação de uma macro
q
-
/\msin\zs(
Digite - encontresin(
e deixe o cursor em(
-
c s ( ] - substitui
(...)
por[...]
(use ] em vez de [ para evitar adicionar espaços extras) -
@ q - executa a macro
q
(que não faz nada por agora, pois o registroq
está vazio) - q - finaliza a gravação da macro.
Em seguida, execute a macro que acabou de gravar: @ q . Isso é tudo, o @q
no final faz a macro chamar-se. Ele pára no primeiro erro, ou seja, quando /sin(
não encontra mais nada.
Em uma observação: se você não quiser aplicar essa alteração em todo o arquivo, mas apenas entre linhas, digamos, 10 e 20, e ainda usar recursão para evitar as confirmações manuais, use \%>...l
e \%<...l
para fazer sua correspondência de expressão regular apenas entre os limites desejados: /\m\%>9l\%<21lsin\zs(
.