You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中无需插件实现多文件指定字符串的全局查找替换

Vim 无插件多文件指定字符串全量替换操作指南

方法一:通过 :arg 系列命令实现

适合提前确定要操作的文件范围的场景:

  • 第一步:将目标文件加入Vim参数列表
    按自己的需求修改文件匹配规则,示例是匹配当前项目src目录下所有.js后缀的文件(含所有子目录):
    :args src/**/*.js
    若只需要匹配当前目录下的.md文件,可修改为:
    :args *.md
  • 第二步:执行批量替换并自动保存
    示例是把所有目标文件里的old_str替换为new_str,每次替换前手动确认:
    :argdo %s/old_str/new_str/gc | update
    参数说明:
    • argdo:对参数列表内的所有文件执行后续命令
    • gc:g代表全局匹配单文件内所有目标字符串,c代表替换前弹出确认提示,无需确认可直接删除c参数
    • | update:仅对发生修改的文件执行保存操作,避免无修改的文件被强制重写

方法二:通过 :vimgrep 命令实现

适合仅修改包含目标字符串的文件、不触碰无关文件的场景:

  • 第一步:用vimgrep检索所有包含目标字符串的文件
    示例是匹配当前项目所有.md文件中包含old_str的文件,检索完成不自动跳转结果:
    :vimgrep /old_str/gj ./**/*.md
    参数说明:
    • g:单行存在多个匹配时全部计入结果
    • j:检索完成后停留在当前文件,不自动跳转到第一个匹配结果
  • 第二步:对检索结果列表内的文件执行批量替换
    :cfdo %s/old_str/new_str/gc | update
    参数说明:
    • cfdo:对vimgrep生成的quickfix结果列表内的所有文件执行后续命令
      其余替换、保存参数和方法一完全一致

补充提示

  • 若替换的字符串包含/特殊字符,可替换分隔符规避转义,示例:
    :argdo %s#old/str/path#new/str/path#gc | update
  • 需要忽略大小写匹配时,在替换命令末尾加i参数即可:
    :argdo %s/old_str/new_str/gci | update
  • 复杂替换操作前建议先备份项目文件,避免误改无法回滚

内容的提问来源于stack exchange,提问作者John_L_Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:36:04