在vim编辑器中,使用:%s/old/new/gic命令可以进行批量替换操作,其中:
% 所有行
s 表示substitute(替换)命令。
/old/ 被替换的
/new/ 新文本
g 单行内所有匹配项(默认只匹配单行第一个)
i 忽略大小写
c 确认是否替换
例如,要在一个文本文件中将所有的"abc"替换成"xyz",并且在替换前询问用户是否继续,可以输入如下命令:
:%s/abc/xyz/gc
在执行该命令后,vim将扫描整个文件中的每一行,并将第一个匹配到的"abc"字符串替换为"xyz"。如果当前行有多处匹配,将一直提示用户是否替换,直到用户确认或者取消。如果用户选择替换,vim会继续扫描接下来的位置执行替换操作,直到文件末尾。
另外,如果你希望在执行替换操作过程中观察文件的变化情况,可以使用:set list命令将空格、Tab符等特殊字符显示出来。
Tab 显示为 ^I,行尾显示为 $,空格显示为 ·
关闭显示 :set nolist
bash
#举例:
:s/aa/bb # 将光标所在行第一个 aa 替换为 bb
:s/aa/bb/g # 将光标所在行所有 aa 替换为 bb
:%s/aa/bb/g # 全文执行替换 aa 替换为 bb
:3,10s/aa/bb/g # 将第3行到第10行 aa 替换为 bb
:%s/\\/\//g # 全文\替换为/ (特殊字符:^、$、*、/、\和.都需要转义,前面加上\)
:%s,\\,/,g # 或用逗号分割(/可以不用转义)
:%s,aa,bb,gic # 全文 aa(忽略大小写) 替换为bb,每次替换提示是否替换
常用标记,gic可自由组合使用:
% 所有行
g 单行内所有匹配项(默认只匹配单行第一个)
i 忽略大小写
c 确认是否替换