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 确认模式安全。
适用场景:文件数量很多,且确定替换不会出错