我有一堆sass文件,而我的设计师使用了错误的语法。我想要:margin-top 1px
,但他做了margin-top: 1px
所以我轻松写了一个子命令:
:rubydo sub! /([\w-]+):/,':\1'
这样可以工作并修复所有冒号并将它们移动到我想要的位置。我在stylesheets
目录中有大约50个sass文件。如何一次性对所有文件运行此命令?我不确定如何在vim
中解决这个问题。也许与grep
有关?我不能告诉你。
答案 0 :(得分:24)
请参阅:http://vimdoc.sourceforge.net/htmldoc/editing.html#:argdo
我现在学会了这个命令,但帮助很明确。
Go for:
:args *.css
:argdo %s/\([[:alpha:]-]\+\):/:\1/ge | update
答案 1 :(得分:6)
这是一个例子
:bufdo %s/oldStuff/newStuff/ge | update
只需更改正则表达式即可满足您的需求
答案 2 :(得分:5)
我认为这种情况的最佳工具是sed,即流编辑器。
sed -i.old 's/:\([-a-z]*\)/\1:/' *.css
这将编辑所有 .css 文件,而原始文件则包含 .old 扩展名。
sed使用的正则表达式集有点不同,并且取决于您的版本或多或少的限制。我使用的表达式显然适用于您的情况 - 使用BSD工具。
答案 3 :(得分:2)
几个步骤。
: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!
qb@a@bq
@b " watch in amazement. :)