在windows系统下用notepad++ 处理文本时最长用的就是正则表达式了,但是在linux的vim中用正则表达式的时候和notepad++ 中是有所不同的。 这些区别也不能全都记住,每次用的时候在上网搜索严重影响效率。 所以把一些基本的知识点记录下来,遂成此文。
查找替换
vim 中正则表达式主要用在 查找替换 中。其语法如下
查找: /pattern
替换: [range]s/{pattern}/{string}/[flags]
例子:
:1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换
:10s/from/to/ 表示只在第10行搜索替换
:%s/from/to/ 表示在所有行中搜索替换
1,$s/from/to/ 同上
flags 有如下四个选项
c confirm,每次替换前询问;
e error, 不显示错误;
g globle,不询问,整行替换。如果不加g选项,则只替换每行的第一个匹配到的字符串;
i ignore,忽略大小写
这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问
vim中的正则表达式
元字符
1 | . 匹配任意字符 |
vim中表示数量的元字符
注意:下面除了 *
以外 其他都需要在前面加上 \
1
2
3
4
5
6
7* * 匹配0-任意个
\+ 匹配1-任意个
\? 匹配0-1个
\{n,m} 匹配n-m个
\{n} 匹配n个
\{n,} 匹配n-任意个
\{,m} 匹配0-m个
需转义的字符
1 | \* 匹配* 字符 |
替换变量
注意 : vim中替换变量需要在括号前面加上 \
在正则式中以\(
和 \)
括起来的正则表达式,在后面使用的时候可以用\1
、\2
等变量来访问\(
和\)
中的内容
多选一匹配
1 | 在一个查找模式中,"或" 运算符是 "\|"。例如: |
vim中的特殊字符
回车
输入方式: ctrl+v+enter
回车在vim的输入方法是
先按ctrl+v
,得到^
再按enter
.得到^M
因此把全文件所有str换成str回车的语句是:
: % s/str/str^M/g