@ o comentário de user137369 está correto, mas você pediu uma macro vim…
Uma macro não é necessária se você quiser apenas formatar esta linha única: basta uma simples substituição. Mas você pode ter que fazer o mesmo exercício novamente no futuro; Nesse caso, você pode querer gravá-lo como uma macro ou até salvá-lo como um comando ou um mapeamento.
Então ... digamos que você queira mantê-lo como uma macro:
qx " start recording in register x
:s/[;\{]/@x
\r/g " the substitution that does the formatting
=i{ " indent the whole thing nicely
q " stop recording
Depois disso, você pode aplicar a macro colocando o cursor em uma linha e clicando:
:'<,'>norm @x
A substituição significa "substituir qualquer ;
ou {
( [;\{]
) por si próprio (
) seguido por um retorno de carro ( \r
:help :normal
)".
Agora, suponha que você tenha um bloco de uma dúzia dessas linhas, aplicando sua macro a todas elas é tão simples quanto selecioná-las e digitar:
:g/;\}/norm @x
Veja ;}
.
Se você tem muitas dessas linhas no arquivo e consegue identificar um padrão comum, digamos :global
, outra opção (que eu gosto muito) seria usar o comando :help :global
:
qx " start recording in register x
:s/[;\{]/@x
\r/g " the substitution that does the formatting
=i{ " indent the whole thing nicely
q " stop recording
Veja %code% .