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