Подтвердить что ты не робот

Запуск макроса во всех буферах в vim

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

4b9b3361

Ответ 1

Вы можете сделать это следующим образом:

:bufdo execute "normal @a" | write

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

Ответ 2

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

:bufdo normal @a

Ответ 3

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