Vim 替换命令速查
:w
Vim 替换命令速查
在 Vim 中,替换命令的基本格式是:
:[range]s/pattern/replacement/[flags]
- range:指定替换的行范围
- pattern:要查找的模式(可用正则表达式)
- replacement:替换成的内容
- flags:可选参数,例如
g表示一行内全部替换,c表示确认,i表示忽略大小写
🔹 范围控制
-
当前行替换
:s/foo/bar/g -
指定行号范围
:10,20s/foo/bar/g -
从当前行到文件末尾
:.,$s/foo/bar/g -
全文件替换
:%s/foo/bar/g -
可视模式选区替换
- 进入可视模式(
v或V)选择文本 - 输入:
:s/foo/bar/g
- 进入可视模式(
🔹 Flags 参数
g→ 一行内全部替换c→ 每次替换确认i→ 忽略大小写I→ 强制区分大小写
示例:
:%s/foo/bar/gc
→ 全文件替换,每次确认
🔹 特殊字符处理
-
路径替换(避免
/冲突):%s#/usr/local/bin#/opt/bin#g :%s|C:\Program Files|D:\Apps|g -
转义特殊字符
:%s/\/usr\/local\/bin/\/opt\/bin/g -
替换为包含
&的内容:%s/foo/\&bar/g→
&在替换中表示“匹配到的内容”,需转义 -
替换为包含反斜杠
\:%s/path/\\\\newpath/g→ 实际结果是
\\newpath
🔹 正则替换
-
匹配数字
:%s/[0-9]\+/NUMBER/g -
匹配行首/行尾
:%s/^foo/bar/g " 行首 :%s/foo$/bar/g " 行尾 -
分组与引用
:%s/\(foo\)\(bar\)/\2\1/g→ 把
foobar替换成barfoo
🔹 替换结果引用
&→ 整个匹配内容\1,\2→ 正则分组引用~→ 上一次替换的 replacement
示例:
:%s/foo/&bar/g
→ 把 foo 替换成 foobar
🔹 特殊场景
-
替换空格
:%s/ /_/g -
替换 Tab
:%s/\t/ /g -
替换换行符(合并行)
:%s/\n/ /g -
大小写转换
:%s/foo/\Ubar/g " 转大写 :%s/foo/\lbar/g " 转小写 :%s/foo/\u&/g " 首字母大写
🔹 实战案例
-
批量修改函数名
:%s/my_func/new_func/g -
替换配置文件路径
:%s#/etc/nginx/conf.d#/etc/nginx/sites-enabled#g -
日志文件中替换时间格式
:%s/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\2\/\3\/\1/g→ 把
YYYY-MM-DD转换成MM/DD/YYYY
🔹 总结
- 范围:
%全文件,10,20指定行,.,$当前到末尾 - Flags:
g全部,c确认,i忽略大小写 - 特殊字符:用其他分隔符或转义
- 正则:支持分组、引用、行首行尾匹配
- 替换结果:
&表示匹配内容,\1引用分组 - 特殊场景:路径、大小写、空格、换行都可处理