Vi Vim全域性替換基本語法

2021-08-03 21:57:06 字數 1585 閱讀 5080

在vim編輯中,編輯器使用指定的字元模式對檔案中的每行進行檢查,使用新字串來替換模式。

全域性替換使用命令 :g(global全域性)和:s(switch替換)。

這將把游標所在行old的第一次出現修改為new。

/(斜槓)是該條命令不同部分之間的分隔符(當斜桿為該行的最後乙個字元時,可不寫)

把當前行old的每次出現改為new,而不只是該行的第乙個old。

:s命令允許替換串後面帶有選項,上面語法中的g代表全域性(g選項影響一行中的每個模式,不要把它與影響檔案中所有行的:g命令混淆)

通過在:s命令前加上位址字首,可以把它的範圍擴充套件到多行。例如下面命令把50行到100行的old的每次出現都改為new:

:50,100 s/old/new/g

下面的命令把整個檔案中的old的每次出現都改為new:

:1,$ s/old/new/g

使用搜尋替換命令有時候會出錯,而得到不想要的結果。在替換命令尾部加上c (confirm用於確認),在替換每個old前都會提示並確認:

將會出現提示replace with hehe (y/n/a/q/l/^e/^y)?

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

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

語法格式:

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

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

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

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

注意:

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

vi vim替換字元

vi vim 中可以使用 s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法 vi 真是強大啊,還有很多需要學習 記錄幾種在此,方便以後查詢。替換 s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivi...

vi vim中替換大全

vi vim 中可以使用 s 命令來替換字串 s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian 為 sky n,s vivian sky 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky n,s v...

vi vim 字串替換

s s1 s2 用字串s2替換每行的第乙個字串s1 s s1 s2 g 用字串s2替換每行的所有字串s1 n,s s1 s2 用字串s2替換從n行開始到最後一行,每行的第乙個字串s1 n,s s1 s2 g 用字串s2替換從n行開始到最後一行的所有字串s1 s s1 s2 g 用字串s2替換從當前行...