Vim 怎么在多个文件中批量替换?

想在项目的多个文件中同时替换某个变量名或字符串

解决方案

使用 argdo(推荐) 推荐

:args **/*.js
:argdo %s/oldName/newName/gc | update

先用 :args 加载目标文件,再用 :argdo 在每个文件中执行替换。gc 逐个确认,update 自动保存修改的文件。

适用场景:需要精确控制替换范围

使用 bufdo

:bufdo %s/oldName/newName/ge | update

对所有已打开的缓冲区执行替换。e 标志忽略没有匹配的文件(不报错)。

适用场景:已经打开了所有目标文件

配合外部工具

# 在终端中
grep -rl 'oldName' src/ | xargs sed -i 's/oldName/newName/g'

对于大规模替换,用 grep + sed 可能更快。但不如 Vim 的 gc 确认模式安全。

适用场景:文件数量很多,且确定替换不会出错