我对 Vim 还比较陌生,不知道如何替换多个文件(来自特定项目目录)中特定字符串的所有实例。理想情况下,我想在没有任何额外插件的情况下做到这一点;正在研究 :vimgrep 和 :arg 选项,但无法解决。
感谢您提前抽出时间!
rom*_*inl 17
一般工作流程是:
第一步可以使用填充快速修复列表的任何命令来完成::help :vimgrep、:help :grep、来自第三方插件的命令等。
举:grep个例子:
:grep foo **/*.js
Run Code Online (Sandbox Code Playgroud)
将为当前目录和子类别中的文件foo中找到的每个条目填充快速修复列表。*.js您可以通过 来查看列表:cwindow。
第二步涉及:help :cdo或:help :cfdo:
:cdo s/foo/bar/gc
Run Code Online (Sandbox Code Playgroud)
这将替换快速修复列表中每一行的 everyfoo并bar要求确认。有了:cfdo它就会看起来像这样:
:cfdo %s/foo/bar/gc
Run Code Online (Sandbox Code Playgroud)
c如果你超级有信心,你可以在最后放弃。看:help :s_flags。
第三步涉及:help :update:
:cfdo update
Run Code Online (Sandbox Code Playgroud)
如果快速修复列表中的每个文件已更改,它将把它们写入磁盘。
简而言之:
:gr foo **/*.js
:cdo s/foo/bar/gc
:cfdo up
Run Code Online (Sandbox Code Playgroud)
您可以在 arg 列表的所有文件的所有行上运行标准替换命令,如下所示:
:argdo %s/pattern/replacement/ge
如果要将特定目录中的所有文件添加到 arg 列表中,可以使用:
argadd `path/to/dir/*.py`
Run Code Online (Sandbox Code Playgroud)
请注意上面示例中的反引号。
请观看一系列精彩的屏幕演示,了解如何 在此处做更多事情,特别是观看这一集。