Vim 中全局替换 的核心命令是 :s(substitute),用来批量替换文本,支持单行、全文、指定范围、正则匹配替换,是最常用的编辑操作。
一、最常用:全文统一替换
vim
:%s/旧内容/新内容/g
命令解释
%:表示作用于整个文件(所有行)s:替换命令(substitute)/:分隔符(也可以用#、@避免和路径冲突)旧内容:要被替换的文字新内容:替换后的文字g:全局标志,一行里有多个匹配项时全部替换(不加 g 只替换每行第一个)
示例
把文件中所有 apple 换成 banana:
vim
:%s/apple/banana/g
二、进阶用法(必学)
1. 替换前让我确认(避免误改)
加 c 标志,每次替换前询问:
vim
:%s/旧/新/gc
操作提示:
y:确认替换n:跳过a:全部替换q:退出替换
2. 只替换选中区域的内容
- 按
v进入可视模式,选中要替换的文本 - 直接输入:
vim
:s/旧/新/g
(选中后输入 : 会自动出现 :'<,'> 代表选中范围)
3. 替换指定行范围
替换第 5 行到第 10 行的内容:
vim
:5,10s/旧/新/g
替换当前行到文件末尾:
vim
:.,$s/旧/新/g
4. 忽略大小写替换
加 i 标志,匹配时不区分大小写:
vim
:%s/old/new/gi
三、特殊场景:替换内容含 / 斜杠
如果替换文件路径 (含 /),用 # 代替分隔符,避免冲突:
vim
:%s#/usr/bin#/usr/local/bin#g
四、快速速查表
表格
| 命令 | 作用 |
|---|---|
:s/旧/新/g |
替换当前行所有匹配 |
:%s/旧/新/g |
全文统一替换(最常用) |
:%s/旧/新/gc |
全文替换,每次确认 |
:5,10s/旧/新/g |
替换 5~10 行 |
:%s#旧#新#g |
替换内容含 / 时使用 |
总结
- 日常全文统一替换 直接用:
:%s/旧/新/g - 怕改错就加确认:
:%s/旧/新/gc - 路径替换换分隔符:
:%s#旧#新#g