用VIM正則表達(dá)式進(jìn)行批量替換的小練習(xí)
用VIM正則表達(dá)式進(jìn)行批量替換的小練習(xí)上次我們用宏操作的方式在VIM中由一行代碼批量生成了一系列相似的代碼,原文在這里
這次我們用正則表達(dá)式的方式實(shí)現(xiàn)批量替換
把上次的小練習(xí)先貼出來
在GVIM下,將下面這張圖的內(nèi)容

改成下面這樣

并且指出,要用批量操作的方式,不能一行一行的鍵入
在給出實(shí)現(xiàn)方法之前,先給出VIM中各種符號的意義




現(xiàn)在回到那個(gè)小練習(xí),由于我們主要用正則來進(jìn)行替換,因此我們先將第一行內(nèi)容進(jìn)行復(fù)制粘貼

之后變成這樣了
再進(jìn)行替換之前,介紹下VIM替換的方式
替換的格式為
我們先gg回到首行,然后看看加上g和不加g的區(qū)別
命令行執(zhí)行如下內(nèi)容

可以看到,只有第一行的第一個(gè)1
變成了aa
再執(zhí)行如下內(nèi)容

可以看到此時(shí)首行所有的1
都被替換成了aa
雖然加上g
將首行的1
全部替換成了aa
,但也只有首行被替換了,如果多行都需要替換,我們不可能在每一行都執(zhí)行這個(gè)操作,因此引入了%
我們執(zhí)行下面的內(nèi)容看看是什么結(jié)果

可以看到此時(shí)每行的第一個(gè)1
都被替換成了aa
如果我們只想替換其中幾行的內(nèi)容,可以將%
換成范圍

此時(shí)只有5-8行的1
被替換了
由于我們這個(gè)小練習(xí)被替換成的內(nèi)容不是固定的,因此需要再介紹一個(gè)函數(shù)
這個(gè)函數(shù)是獲取行號的意思,并且可以進(jìn)行加減乘,如果想在當(dāng)前行上加n,只需要
先試一下,將首行的2
改成行號×10

首行的2
成功被替換成了10
準(zhǔn)備工作結(jié)束,下面直接直接給出批量更改的正則表達(dá)式
執(zhí)行第一個(gè)指令的結(jié)果

隨后執(zhí)行第二個(gè)指令的結(jié)果

大功告成
最后再講一下這兩個(gè)指令的含義吧
首先是第一個(gè)指令
第二個(gè)指令