VIM,对多个文件运行命令

And*_*own 17 vim batch-file substitution

我有一堆sass文件,我的设计师使用了错误的语法.我想,:margin-top 1px但他做到了margin-top: 1px

所以我轻松写了一个子命令:

:rubydo sub! /([\w-]+):/,':\1'
Run Code Online (Sandbox Code Playgroud)

这样可以工作并修复所有冒号并将它们移动到我想要的位置.我在stylesheets目录中有大约50个sass文件.如何一次性对所有文件运行此命令?我真的不确定如何解决这个问题vim.也许与某事有关grep?我不能告诉你.

Nil*_*oct 25

请参阅:http://vimdoc.sourceforge.net/htmldoc/editing.html#:argdo

我现在学会了这个命令,但帮助很明确.

去做:

:args *.css
:argdo %s/\([[:alpha:]-]\+\):/:\1/ge | update
Run Code Online (Sandbox Code Playgroud)

  • 我发现这篇关于这个主题的文章非常有帮助:http://www.ibrahim-ahmed.com/2008/01/find-and-replace-in-multiple-files-in.html (2认同)

Eri*_*tis 6

这是一个例子

:bufdo %s/oldStuff/newStuff/ge | update
Run Code Online (Sandbox Code Playgroud)

只需更改正则表达式即可满足您的需求


sid*_*yll 5

我认为这个案例的最佳工具是sed,即流编辑器.

sed -i.old 's/:\([-a-z]*\)/\1:/' *.css
Run Code Online (Sandbox Code Playgroud)

这将编辑所有.css文件,保留带有.old扩展名的原始文件.

sed使用的正则表达式集有点不同,并且取决于您的版本或多或少的限制.我使用的表达式显然适用于您的情况 - 使用BSD工具.