Я нахожусь в процессе украшения некоторого исходного кода, используя 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 завершается, вызывающий макрос продолжается?