Я знаю о команде :bufdo
и пытался объединить ее с макросом, который я записал (@a
), чтобы добавить #include в правильное место каждого из файлов заголовков, которые я загрузил. Однако я не мог найти простой способ запуска макроса для каждого буфера. Есть ли способ выполнить макрос через ex mode, что требуется :bufdo
? Или есть еще одна команда, которую я пропускаю?
Запуск макроса во всех буферах в vim
Ответ 1
Вы можете сделать это следующим образом:
:bufdo execute "normal @a" | write
Обычная команда будет запускать макрос, но его нужно запустить с помощью: execute, иначе символ канала будет интерпретироваться как символ нормального режима.
Ответ 2
Вы должны использовать normal
для выполнения команд нормального режима, таких как выполнение макроса (@a
) в командном режиме:
:bufdo normal @a
Ответ 3
Единственной альтернативой, которую я мог бы придумать, было добавить команды :w
и :bn
в макрос, чтобы он автоматически сохранил и переместился в следующий буфер. Затем я мог запустить команду на других 52 буферах, набрав [email protected]
. Это сработало, но для меня это гораздо другая концептуальная модель, чем :bufdo
, и я надеюсь, что кто-то другой укажет мне в сторону чего-то более похожего на :bufdo
.