1. 替换语法
:[range]s/pattern/string/[c,e,g,i]
:[range]s#pattern#string#[c,e,g,i]
:[range]s+pattern+string+[c,e,g,i]
1.1 range
"%" 表示所有行
"." 表示当前行
"$" 表示最后一行
"n" 表示第n行,n为具体数字
"1,$" 表示从第1行到最后一行,即所有行
"n,$" 表示从第n行到最后一行
"1,n" 表示从第1行到第n行
1.2 pattern
pattern表示要被替换的字符串,也可以是一个正则表达式
1.3 string
string即替换的目的字符串
:%s/from/to/g
上面的表达式表示:将整个文档中所有的“from”替换为“to”
1.4 [c,e,g,i]
- c 每次替换之前询问
- e 不显示错误信息
- g 整行替换,即替换一行中的所有匹配项(如不加g,则仅匹配一行中的第一个匹配项)
- i 匹配是忽略大小写
2. 补充说明
如果pattern中含有"/",那么可以考虑使用“#”或者“+”来作为分隔符,例如:
:s+/home+/HOME+g
或者
:s#/home#/HOME#g
3. 常用命令
:s/from/to/ 将当前行的第一个from替换为to
:s/from/to/g 将当前行的所有from替换为to
:%s/form/to/ 将所有行的第一个from替换为to
:%s/from/to/g 将所有行的所有from替换为to,即整个文档中所有from替换为to
:%s/from/to/gi 将整个文档中所有from替换为to,并忽略大小写
:%s/from/to/cgi 将整个文档中所有from替换为to,忽略大小写,并且每次替换之前询问
:1,$s/from/to/ 将第1行~最后一行之间的每一行的第一个from替换为to
:1,$s/from/to/g 将第1行~最后一行之间的每一行的所有from替换为to
:n,$s/from/to/ 将第n行~最后一行之间的每一行的第一个from替换为to
:n,$s/from/to/g 将第n行~最后一行之间的每一行的所有from替换为to
:n,ms/from/to/ 将第n行~第m行之间的每一行中的第一个from替换为to
:n,ms/from/to/g 将第n行~第m行之间的每一行中的所有from替换为to