vim全域性替換命令

2021-07-30 18:24:13 字數 2270 閱讀 5508

替換命令的基本語法

語法為 :[addr]s/源字串/目的字串/[option]

全域性替換命令為::%s/源字串/目的字串/g

[addr] 表示檢索範圍,省略時表示當前行。

如:"1,20" :表示從第1行到20行;

:50, 100 s / old / new / g

"%" :表示整個檔案,同"1,$";

".,$" :從當前行到檔案尾;

s : 表示替換操作

[option] : 表示操作型別

如:g 表示全域性替換;

c 表示進行確認

p 表示替代結果逐行顯示(ctrl + l恢復螢幕);

省略option時僅對每行第乙個匹配串進行替換;

如果在源字串和目的字串中出現特殊字元,需要用」\」轉義

確認替換

使用搜尋替換命令有時候會出錯,而得到不想要的結果。所以小心並確認檔案中需要修改的內容是乙個明智的做法

在替換命令尾部加上c (confirm用於確認),在替換每個old前都會提示並確認:

:1, 30 s /old/new/ gc
將會出現提示replace with hehe (y/n/a/q/l/^e/^y)?

y替換,n不替換,a替換所有,q放棄,l替換第乙個並進入插入模式,^e和^y是提示你用ctrl+e或ctrl+y來滾動螢幕的。

上下文相關替換

除了直接使用乙個單詞(或短語)替換另乙個,還有稍微複雜的全域性替換語法。這些語法可以對乙個模式進行搜尋,一旦找到含有模式的行,就可以使用不同與模式的串進行替換,我們把這種替換叫做上下文相關替換。

語法格式如下:

:g /pattern/s/old/new/g 將會把包含pattern的行中,把所有old替換為new

第乙個g表示是在檔案的所有行上執行的命令,模式pattern識別要發生替換的行。在那些包含模式pattern的行上,ex將把old替換(s)為new。最後的g表示在該行上進行全部替換。

如果用來進行搜尋的模式與想要修改的模式相同,那麼就不必重複它:

:g/string/s//new/g 等價於 :g/string/s/string/new/g

下面是一些例子:

將that or this 換成 this or that

:%s/(that) or (this)/\u\2 or \l\1/

—- 將句尾的child換成children

:%s/child([ ,.;!:?])/children\1/g

—- 將mgi/r/abox換成mgi/r/asquare

:g/mg([ira])box/s//mg//my\1square/g <=> :g/mg[ira]box/s/box/square/g

—- 將多個空格換成乙個空格

:%s/ */ /g

—- 使用空格替換句號或者冒號後面的乙個或者多個空格

:%s/([:.]) */\1 /g

—- 刪除所有空行

:g/^/d

—−刪除

所有的空

白行和空

行:g/

∗ /d

—- 在每行的開始插入兩個空白

:%s/^/> /

—- 在接下來的6行末尾加入.

:.,5//.

/—−顛

倒檔案的

行序:g

/.∗/

m0o<=

>:g

//m0

o—−尋

找不是數

字的開始

行,並將

其移到文

件尾部:

g!/[

0−9]

/m<=> g/^[^0-9]/m—−

將檔案的

第12到17

行內容復

制10詞放

到當前文

件的尾部

:1,10

g//12

,17t

~~~~重複次數的作用

—- 將chapter開始行下面的第二行的內容寫道begin檔案中

:g/^chapter/.+2w>>begin

—- :/^part2/,/^part3/g/^chapter/.+2w>>begin

—- :/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$

vim全域性替換命令

語法為 addr s 源字串 目的字串 option 全域性替換命令為 s 源字串 目的字串 g addr 表示檢索範圍,省略時表示當前行。如 1,20 表示從第1行到20行 表示整個檔案,同 1,從當前行到檔案尾 s 表示替換操作 option 表示操作型別 如 g 表示全域性替換 c 表示進行確...

vim全域性替換命令

語法為 addr s 源字串 目的字串 option 全域性替換命令為 s 源字串 目的字串 g addr 表示檢索範圍,省略時表示當前行。如 1,20 表示從第1行到20行 表示整個檔案,同 1,從當前行到檔案尾 s 表示替換操作 option 表示操作型別 如 g 表示全域性替換 c 表示進行確...

vim全域性替換命令

vim全域性替換命令 語法為 addr s 源字串 目的字串 option 全域性替換命令為 s 源字串 目的字串 g addr 表示檢索範圍,省略時表示當前行。如 1,20 表示從第1行到20行 表示整個檔案,同 1,從當前行到檔案尾 s 表示替換操作 option 表示操作型別 如 g 表示全域...