@ user137369 комментарий на месте, но вы попросили макрос vim ...
Макрос не нужен, если вы хотите отформатировать только одну строку: достаточно простой замены. Но вам, возможно, придется сделать то же самое упражнение снова в будущем; в этом случае вы можете записать его как макрос или даже сохранить как команду или отображение.
Итак ... допустим, вы хотите сохранить это как макрос:
qx " start recording in register x
:s/[;\{]/\0\r/g " the substitution that does the formatting
=i{ " indent the whole thing nicely
q " stop recording
После этого вы можете применить макрос, поместив курсор на строку и нажав:
@x
Подстановка означает «заменить любое ;
или {
([;\{]
) на себя (\0
), за которым следует возврат каретки (\r
)».
Теперь предположим, что у вас есть блок из дюжины таких строк, применить макрос ко всем из них так же просто, как выбрать их и набрать:
:'<,'>norm @x
Смотрите :help :normal
.
Если у вас много таких строк в файле и вы можете определить общий шаблон, скажем ;}
, другой вариант (который мне очень нравится) - использовать команду :global
:
:g/;\}/norm @x
Смотрите :help :global
.