欢迎光临散文网 会员登陆 & 注册

用VIM正则表达式进行批量替换的小练习

2022-07-22 20:57 作者:专心当一个坑  | 我要投稿

用VIM正则表达式进行批量替换的小练习上次我们用宏操作的方式在VIM中由一行代码批量生成了一系列相似的代码,原文在这里

这次我们用正则表达式的方式实现批量替换

把上次的小练习先贴出来

在GVIM下,将下面这张图的内容

改成下面这样

并且指出,要用批量操作的方式,不能一行一行的键入

在给出实现方法之前,先给出VIM中各种符号的意义

现在回到那个小练习,由于我们主要用正则来进行替换,因此我们先将第一行内容进行复制粘贴


之后变成这样了

再进行替换之前,介绍下VIM替换的方式

替换的格式为


我们先gg回到首行,然后看看加上g和不加g的区别

命令行执行如下内容


可以看到,只有第一行的第一个1变成了aa

再执行如下内容


可以看到此时首行所有的1都被替换成了aa

虽然加上g将首行的1全部替换成了aa,但也只有首行被替换了,如果多行都需要替换,我们不可能在每一行都执行这个操作,因此引入了%

我们执行下面的内容看看是什么结果


可以看到此时每行的第一个1都被替换成了aa

如果我们只想替换其中几行的内容,可以将%换成范围


此时只有5-8行的1被替换了

由于我们这个小练习被替换成的内容不是固定的,因此需要再介绍一个函数


这个函数是获取行号的意思,并且可以进行加减乘,如果想在当前行上加n,只需要


先试一下,将首行的2改成行号×10


首行的2成功被替换成了10

准备工作结束,下面直接直接给出批量更改的正则表达式


执行第一个指令的结果

随后执行第二个指令的结果

大功告成

最后再讲一下这两个指令的含义吧

首先是第一个指令


第二个指令


用VIM正则表达式进行批量替换的小练习的评论 (共 条)

分享到微博请遵守国家法律