vim的替换功能
vim中可以在底行模式(命令行模式)使用s命令替换字符串。
语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
[addr]: 表示检索范围,省略时表示当前行。
addr | 搜索范围 |
---|---|
“m,n” | 表示从第m行到n行,例如 :1,20s/old/new/g 从第一行到第20行替换每一行所有的old为new字符串 |
“%” | 表示整个文件,同“1,$”,例如 :%s/old/new/ 整个文件替换每一行中第一个old为new字符串 |
“. ,$” | 从当前行到文件尾 ,例如 : . ,$/old/new/g 从当前行到文件为替换每一行所有的old为new字符串 |
[option] : 表示操作类型
option | 含义 |
---|---|
n | 表示替换第n个匹配字符串 |
g | 表示全局替换 |
c | 表示进行确认 |
p | 表示替代结果逐行显示(Ctrl + L恢复屏幕) |
省略option | 仅对当前行匹配串进行替换 |
// 注:如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
:s/\/\///g // 替换当前行
// 下面的命令都在底行模式下输入
// 替换当前行第一个为old为new
:s/old/new/
// 替换当前行所有的old为new
:s/old/new/g
// 替换当前行第3个old为new
:s/old/new/3
// 替换第n行开始到最后一行中每一行的第一个old为new
:n,$s/old/new/
:n,$s/old/new/1
// 替换第n行开始到最后一行中每一行所有的old为new
:n,$s/old/new/g
// 替换整个文件的每一行中old为new
:%s/old/new/g
//或
:1,$s/old/new/g
// 替换当前行到文件末尾每一行中第一个old为new
:.,$s/old/new
注:vim替换功能可以统计关键词在文本中的个数
// 统计key在文本中的个数
:1,$s/key/key/g