Costumo usar macros extremamente longas ao lidar com edição e refatoração repetitivas. Sempre que possível, escrevo-os como comandos no modo ex, em vez de gravá-los como macros, porque são mais fáceis de editar interativamente dessa maneira (com a janela de comando).
No entanto, às vezes eu preciso adicionar alguns comandos no modo normal, por exemplo, para puxar apenas parte de uma linha em vez de uma linha inteira para uso posterior na minha macro ou alinhar algum texto da maneira que eu quero.
Existe uma maneira de continuar um comando ex mode após a norm
inclusão?
(Para um exemplo real do tipo de complexidade de que estou falando :)
:'a+s/\_^\s*\(\S*\)::\_[^>]*>\s*\("[^"]*"\)\s*;\_s*\_$/ "\1", \2,/ | m 'a- | norm f,50a ^[d44|
Existe uma maneira de adicionar mais texto no final e executá-lo como um comando no modo ex?
:execute
passará a string apenas como argumento para :normal
, e o último não verá o que está depois na linha de comando, permitindo que você adicione outros comandos Ex. Há apenas uma coisa a prestar atenção, se a string contiver caracteres de controle não literais, como \e
para <Esc>
você ter que usar aspas duplas para permitir que o Vim os interprete, caso contrário, aspas simples impedem a interpretação de qualquer coisa dentro da string.
:normal
comando consuma o restante da linha? Se assim você poderia envolvê-lo dentro de uma cadeia de caracteres que você pode executar com o:execute
comando::exe 'norm f,50a ^[d44|' | other Ex command
.