vim 命令
:s(substitute)命令用來查找和替換字符串滥壕。語法如下
:{作用范圍}s/{目標}/{替換}/{替換標志}
例如:%s/foo/bar/g會在全局范圍(%)查找foo并替換為bar而账,所有出現(xiàn)都會被替換(g)
作用范圍
作用范圍分為當前行性雄、全文娄周、選區(qū)等等涕侈。
當前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g
2-11行:
:5,12s/foo/bar/g
當前行.與接下來兩行+2:
:.,+2s/foo/bar/g
替換標志
上文中命令結尾的g即是替換標志之一,表示全局global替換(即替換目標的所有出現(xiàn))煤辨。 還有很多其他有用的替換標志:
空替換標志表示只替換從光標位置開始裳涛,目標的第一次出現(xiàn):
:%s/foo/bar
i表示大小寫不敏感查找,I表示大小寫敏感:
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c表示需要確認众辨,例如全局查找"foo"替換為"bar"并且需要確認:
:%s/foo/bar/gc
回車后Vim會將光標移動到每一次"foo"出現(xiàn)的位置端三,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替換,n表示不替換鹃彻,a表示替換所有郊闯,q表示退出查找模式, l表示替換當前位置并退出蛛株。
^E與^Y是光標移動快捷鍵团赁,參考Vim中如何快速進行光標移動。
:s/vivian/sky/ 替換當前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
n 為數(shù)字谨履,若 n 為 .表示從當前行開始到最后一行
:s/String//gn 查找當前行String出現(xiàn)的次數(shù)
:%s/String//gn 查找所有String出現(xiàn)的次數(shù)
image