Допустим, у меня есть функция с именем StripWhitespace
.
Я могу запустить его на одном файле, открыв файл и запустив его :StripWhitespace
.
Как я могу автоматически запустить эту функцию для папки с файлами и сохранить результаты по мере продвижения?
macro
multiple-files
squarefrog
источник
источник
Ответы:
Вы можете использовать
-c
аргумент для запуска команды при запуске изvim(1)
:Пример:
Чтобы выйти потом, добавьте
| :wqa
:источник
Если вы уже находитесь в Vim, вы можете использовать команды
:argdo
или:bufdo
для выполнения команды для каждого элемента в списке аргументов или списке буферов соответственно.например, запустить
:
команду для каждого файла в списке аргументов:Или для вызова функции из каждого файла в списке буферов:
Или запустить макрос
q
для каждого файла в списке аргументов:Затем вы можете сохранить все измененные буферы с помощью
:wall
или сохранить все и выйти из Vim с помощью:wqall
.Если вы хотите записывать файлы по ходу дела, вы можете добавить вызов
:update
, например, так:Существует множество способов, с помощью которых вы можете получить файлы в Vim, в том числе:
vim *
(это добавит все файлы в список аргументов),:args
команду (которая поддерживает символы подстановки и обратные выражения), чтобы заполнить список аргументов, или:argadd
команду, чтобы добавить файлы к нему,:e
,:Ex
или файл-открытия плагина.источник
'hidden'
чтобы установить; (2): update
команда небольшое улучшение по сравнению ,:w
поскольку он пишет только если изменение было сделано, так:bufdo update
или:argdo update
запишет все измененные буферы или аргументы.update
. Я считал , упоминая ,hidden
когда я писал ответ, но решил против него , потому что я не хочу усложнять его. Хотя, если подумать, он должен быть там. Я обновлю ответ, чтобы включить оба предложения в настоящее время.:wall
, что также имеет преимущество в том, что не перебирает буферы и не перемещает вас от того, с чего вы начали. Я предполагаю, что:argdo update
это все еще другая история - может быть, вы не хотите писать в буферы, которых нет в вашем списке аргументов.