Я нахожусь в процессе украшения некоторого исходного кода, используя vim. {1}
Я создал пару макросов vim, которые выполняют отдельные шаги: удаление конечного пространства, удаление пустых строк после {
, удаление пустых строк до {
, и тому подобное.
Теперь я хочу создать макрос, который последовательно выполняет все отдельные макросы. Однако, как только первый рекурсивный макрос завершает свою работу (поскольку он больше не может найти совпадений -> ошибка соответствия), мой макрос-оболочка также завершается.
Есть ли способ заставить макрос vim продолжить после того, как submacro сгенерировал ошибку?
{1} Я знаю об автоматических переформаторах. Я мог бы даже использовать их в моей текущей проблеме. Я просто упомянул источник переформатирования для примера. Не размещайте никаких ответов об этом источнике красоты или что. Вопрос не в переформатировании кода как таковом , а в макросах vim.
Пример:
- Макрос 1 - обрезка замыкающего пробела -
qw/\s\+$d$@wq
- Макрос 2 - удаление пустых строк перед} -
qe/\n\n *}dd@eq
- Wrapper Macro - retabbing, Макрос 1, Макрос 2 -
qr:retab@w@eq
Когда я @r
запускаю обертку - она будет перезагружена, затем выполнит Макро 1, пока не будет найдено больше конечных пробелов, а затем завершится ( без выполнения Макро 2).
Разъяснение:
Что я ищу, так это как вызвать submacro, чтобы, когда этот submacro завершается, вызывающий макрос продолжается?