Ответ 1
Смотрите это: http://vimdoc.sourceforge.net/htmldoc/editing.html#:argdo
Я изучил эту команду прямо сейчас, но помощь понятна.
Перейти для:
:args *.css
:argdo %s/\([[:alpha:]-]\+\):/:\1/ge | update
У меня есть куча sass файлов, и мой дизайнер использовал неправильный синтаксис. Я хотел :margin-top 1px
, но он сделал margin-top: 1px
Поэтому я легко написал подкоманду:
:rubydo sub! /([\w-]+):/,':\1'
Итак, это работает и исправляет все двоеточия и перемещает их туда, где я хочу. У меня около 50 файлов sass в каталоге stylesheets
. Как запустить эту команду для всех моих файлов за один раз? Я не уверен, как это сделать в vim
. Может быть, что-то связано с grep
? Я не мог сказать тебе.
Смотрите это: http://vimdoc.sourceforge.net/htmldoc/editing.html#:argdo
Я изучил эту команду прямо сейчас, но помощь понятна.
Перейти для:
:args *.css
:argdo %s/\([[:alpha:]-]\+\):/:\1/ge | update
Вот пример
:bufdo %s/oldStuff/newStuff/ge | update
просто измените ваше регулярное выражение в соответствии с вашими потребностями
Я думаю, что лучшим инструментом для этого случая является sed, редактор потока.
sed -i.old 's/:\([-a-z]*\)/\1:/' *.css
Это отредактирует все ваши .css файлы, оставив исходные с расширениями .old.
Набор регулярных выражений, используемых sed, немного отличается, и в зависимости от вашей версии более или менее ограничен. Выражение, которое я использовал, по-видимому, отлично подходит для вашего случая - с помощью инструмента BSD.
Несколько шагов.
:vimgrep /^[^:]\w+/ %:p:h/* " find all of the lines that don't start with a colon
Это приведет к совпадению всех совпадений с вашим списком quickfix.
Затем макрос сделает то, что вы хотите сделать.
qa
I:<esc>
f:x
:w|cn<enter>
q
Затем проверьте этот макрос несколько раз (с помощью @a
).
Затем еще один макрос для запуска этого макроса снова и снова...
qbq " this clears out b before starting, very important!
[email protected]@bq
@b " watch in amazement. :)