vi的使用--使用vi查找和替換
vi提供了幾種定位查找一個指定的字符串在文件中位置的方法。同時還提供一種功能強大的全局替換功能。
1. 查找一個字符串
一個字符串是一行上的一個或幾個字符。
為查找一個字符串,在vi命令模式下鍵入“/”,后面跟要查找的字符串,再按回車。vi將光標定位在該串下一次出現的地方上。鍵入n跳到該串的下一個出現處,鍵入N跳到該串的上一個出現處。
為了在文件中回頭查找,使用?代替/。在此情況下,鍵入n跳到該串的上一個出現處,鍵入N跳到該串的下一個出現處
如果vi找到要求的串,光標會停留在該串第一次出現的地方。如果沒有找到該串,vi會在屏幕的最后一行顯示pattern not found。
查找通常是區分大小寫的,如果希望vi在查找過程中忽略大小寫,則鍵入:set ic。要使其變回默認狀態,則鍵入:set noic。
某些特殊字符(/&!.^*$\?)對查找過程有特殊意義,因此如果這些字符出現在查找串中必須進行轉意。為轉意一個特殊字符,需要在該字符前面加一個反斜杠(\)。例如,要查找字符串anything?,則鍵入/anything\?再按回車鍵。
2. 精確查找字符串
在vi中可以通過在字符串中加入如下特殊字符,從而使得查找更加精確。
匹配行首,字符串要以^開頭
匹配行尾,字符串要以$結束
匹配詞首,字符串的串首鍵入\<
匹配詞尾,字符串的串尾鍵入\>
匹配任意字符,字符串的要匹配的位置鍵入一個點(.)
例如,
要查找一個以search為行首的行,則鍵入/^search ,要查找一個以search為行尾的行,則鍵入/search$。
3. 替換一個字符串
替換字符串是以查找為基礎,所有用於查找的特殊匹配字符都可以用於查找和替換。替換時要指定替換的范圍(1,n),1和n指行號,n為$時指最后一行。s是替換命令,g代表全程替換。例如,
:l,$s/patternl/pattern2/g——將行l至結尾的文字,patternl的字符串改為pattern2的字符串,如無g則僅更換每一行所匹配的第一個字符串,如有g則將每一個字符串均做更換。