Запустить макрос во всех буферах в vim - PullRequest
29 голосов
/ 11 июня 2010

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

Ответы [ 3 ]

34 голосов
/ 11 июня 2010

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

:bufdo execute "normal @a" | write

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

12 голосов
/ 11 июня 2010

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

:bufdo normal @a
0 голосов
/ 11 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...