[置顶] Vim用正则表达式进行批量修改

vim可以设置 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的设置


在正规表达式中使用 /( 和 /) 符号括起正规表达式,即可在后面使用/1 、/2 等变量来访问 /( 和 /) 中的内容。


有了以上内容,我们可以完成一个常用的的替换功能了:

这个是查找if(mRequest[“name”]这样的模式,然后替换成if(mRequest.find("name")

:s/vif(mrequest[(.*)]/if(mRequest.find($1)/g


上述命令只会替换一行,如果要替换从第5行到底105行,则为:

:5,105s/vif(mrequest[(.*)]/if(mRequest.find($1)/g


原文:http://blog.csdn.net/hongchangfirst/article/details/10400915

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst


原文地址:https://www.cnblogs.com/pangblog/p/3306492.html