在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替換從當前行...