vim 字符串替换

目录

vi/vim 中用 :s 命令替换字符串。记录几种写法方便查询。

基本替换

:s/vivian/sky/      替换当前行第一个 vivian 为 sky
:s/vivian/sky/g     替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/   替换第 n 行到最后一行每行第一个 vivian
:n,$s/vivian/sky/g  替换第 n 行到最后一行每行所有 vivian
:%s/vivian/sky/     替换每行第一个 vivian(等同 :g/vivian/s//sky/)
:%s/vivian/sky/g    替换每行所有 vivian(等同 :g/vivian/s//sky/g)

n 为数字,若 n 为 . 表示从当前行开始到最后一行。

更换分隔符

当替换内容含 / 时,可用 #+ 等作分隔符:

:s#vivian/#sky/#                   用 # 作分隔符
:%s+/oradata/apras/+/user01/apras1+  用 + 作分隔符

删除文本中的 ^M

Windows 用回车换行(0D0A),Linux 用回车(0A),Windows 文件拷到 Unix 常带 ^M。删除方法:

cat filename1 | tr -d "^V^M" > newfile
sed -e "s/^V^M//" filename > outputfilename
# 在 vi 中:%s/^V^M//   或   :%s/^M$//g

注意 ^V^M 指 Ctrl+V 和 Ctrl+M,需手工输入而非粘贴。

:s 命令小结

g 放命令末尾表示替换每次出现;不加 g 只替换首次出现;g 放命令开头(如 :g/str1/s//str2/g)表示对所有包含搜索串的行进行替换。

#vim