Vim中的正则表达式

本文最后更新于2015年12月12日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

在Vim中删除空行
:g/^$/d
:g/^\s\+/d  #需要对'+'进行转义
:g/^\s*$/d  #'*'可以直接用,不需要转义(在Vim默认的magic模式下,只有「. * ^ $」不需要转义,其它的都需要)
将连续的空行删除至单空行
:g/^$/,/./-j	#Reduce multiple blank lines into a single blank line
删除行尾的多余空格
:%s/\s\+$//g
查找匹配字符串出现的次数
在当前文件中查找匹配字符串出现的次数:
:%s/字符串/&/gn
最后的标志符n,代表只报告匹配的个数,而不进行实际的替换。

如何查找在当前行中该字符串出现的次数呢?
:s/字符串/&/gn

如何在m和n行之间查找 字符串 出现的次数呢?
:m,ns/字符串/&/gn
Vim中正则表达式的元字符
^
$
.	#Matches any single character, but not an end-of-line
*	#Matches 0 or more of the preceding characters, ranges or metacharacters .* matches everything including empty line
#在Vim默认的magic模式下,只有以上的「. * ^ $」4个元字符不需要转义,其它的都需要

\+	#Matches 1 or more of the preceding characters...(需要进行转义)
Vim中的magic设定

设定方法为:

:set magic ” 设置magic
:set nomagic ” 取消magic
:h magic ” 查看帮助

简单地说,magic就是设置哪些元字符要加反斜杠哪些不用加的。例如:

magic(\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
nomagic(\M):除了 $ ^ 之外其他元字符都要加反斜杠。

这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。例如:

/\m.* # 查找任意字符串
/\M.* # 查找字符串 .* (点号后面跟个星号)

另外还有更强大的 \v 和 \V。 \v(即 very magic 之意):任何元字符都不用加反斜杠 \V(即 very nomagic 之意):任何元字符都必须加反斜杠。例如:

/\v(a.c){3}$   # 查找行尾的abcaccadc
/\m(a.c){3}$  # 查找行尾的(abc){3}
/\M(a.c){3}$  # 查找行尾的(a.c){3}
/\V(a.c){3}$  # 查找任意位置的(a.c){3}$

默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 临时修改设置即可。Vim的帮助文件非常有用,关于正则表达式可以参考以下的内容:

:h pattern
:h magic
:h perl-patterns

参考链接:
更多的参考链接:

=EOF=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2575.html

One thought on “Vim中的正则表达式”

a-z进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注