Vim之正则表达式

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

发布了9 篇原创文章 · 获赞 0 · 访问量 118

猜你喜欢

转载自blog.csdn.net/ckm1607011/article/details/105474856