Выполните макрос во всех буферах в энергии

Я знаю о :bufdo команда, и пыталась объединить его с макросом, который я записал (@a) для добавления #include в надлежащем месте каждого из заголовочных файлов, я загрузился. Однако я не мог найти простой способ выполнить макрос на каждом буфере. Есть ли способ выполнить макрос через исключая режимом, который является что :bufdo требует? Или есть ли другая команда, которую я пропускаю?

32
задан Caleb Huitt - cjhuitt 11 June 2010 в 16:03
поделиться

3 ответа

Вы можете сделать это так:

:bufdo execute "normal @a" | write

Обычная команда запустит макрос, но он должен быть запущен с помощью :execute, иначе символ трубы будет интерпретирован как символ обычного режима.

37
ответ дан 27 November 2019 в 20:56
поделиться

Единственная альтернатива, которую я смог придумать, это добавить команды :w и :bn в макрос, чтобы он автоматически сохранял и переходил к следующему буферу. Затем я мог выполнить команду на остальных 52 буферах, набрав 52@a. Это работало, но для меня это совсем другая концептуальная модель, чем :bufdo, и я надеюсь, что кто-нибудь еще укажет мне на что-то более похожее на :bufdo.

0
ответ дан 27 November 2019 в 20:56
поделиться

Вы должны использовать обычный для выполнения команд нормального режима , такое выполнение макроса ( @a ) в командном режиме :

:bufdo normal @a
12
ответ дан 27 November 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: