1.简单替换表达式
:[range]s/from/to/[flags]
range:作用范围,若未指定,则作用当前行;
:1,10s/from/to/:第1行至第10行的搜索替换;
:10s/from/to/:第10行的搜索替换;
:%s/from/to/:所有行的搜索替换;
flags有如下4个选项:
c 代表confirm,每次替换前都询问;
e 代表error,不显示错误;
g 代表global,整行替换;若不加该g选项,则每次只替换每行匹配到的第一个字符串;
i 代表ignore,忽略大小写;
上述四个选项可合并使用,如cg表示整行替换且每次替换前都询问。
2.正则表达式
2.1 元字符
元字符 | 说明 |
. | 匹配任意字符 |
[abc] | 匹配[ ]内的任意字符,可用-表示字符范围 |
[^abc] | 匹配除[ ]内的字符外的所有字符 |
\d | 匹配数字,等价于[0-9] |
\D | 匹配数字之外的任意字符,等价于[^0-9] |
\x | 匹配16进制数字 |
\X | 匹配16进制数字之外的任意字符 |
\I | 匹配[a-z] |
\L | 匹配[^a-z] |
\u | 匹配[A-Z] |
\U | 匹配[^A-Z] |
\w | 匹配单词字母 |
\W | 匹配单词字母之外任意字符 |
\t | 匹配tab字符 |
\s | 匹配空白字符 |
\S | 匹配非空白字符 |
\* | 匹配*字符 |
\. | 匹配.字符 |
\/ | 匹配/字符 |
\ | 匹配\字符 |
\[ | 匹配[字符 |
\] | 匹配]字符 |
* | 表示数量,匹配0-任意个*之前的字符 |
\+ | 表示数量,匹配1-任意个\+之前的字符 |
\? | 表示数量,匹配0-1个\?之前的字符 |
\{n,m} | 表示数量,匹配n-m个\{n,m}之前的字符 |
\{n} | 表示数量,匹配n个\{n}之前的字符 |
\{n,} | 表示数量,匹配n-任意个\{n,}之前的字符 |
\{,m} | 表示数量,匹配0-m个\{,m}之前的字符 |
$ | 匹配行尾 |
^ | 匹配行首 |
\< | 匹配单词词首 |
\> | 匹配单词词尾 |
3.例子
删除行尾空格 :%s/\s+$//g
删除行首多余空格 :%s/^\s*// 或者 %s/^ *//
删除包含有空格组成的空行 :%s/^\s*$// 或者 g/^\s*$/d
删除以空格或TAB开头到结尾的空行 :%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d