出處:http://blog.sina.com.cn/s/blog_40cccb2f0100nwi3.html
尋找命令:
要自當前游標位置向上搜尋,請使用以下命令:
/pattern Enter
其中,pattern 表示要搜尋的特定字元序列。
要自當前游標位置向下搜尋,請使用以下命令:
?pattern Enter
按下 Enter 鍵後,vi 將搜尋指定的 pattern,並將游標定位在 pattern 的第一個字元處。例如,要向上搜尋 place 一詞,請鍵入:
/place Enter
如果 vi 找到了 place,它將把游標定位在 p 處。要搜尋 place 的其他匹配,請按 n 或 N:
n,繼續朝同一方向搜尋 place。
N,反方向進行搜尋。
4.5.1 搜尋特殊匹配
在上面的樣本中,vi 尋找到包含 place 的任何序列,其中包括 displace、placement 和 replaced。
要尋找單個的 place,請鍵入該單詞,並在其前後各加一個空格:
/ place Enter
要尋找僅出現在行首的 place,請在該單詞前加一個插字元號 (^):
/^place Enter
要尋找僅出現在行尾的 place,請在該單詞後加一個貨幣符號 ($):
/place$ Enter
使用 ^
要逐字搜尋這種帶有插字元號 (^) 或貨幣符號 ($) 的字元,請在字元前加一個反斜線 (\)。反斜線命令 vi 搜尋特殊字元。
使用 $
特殊字元是指在 vi 中具有特殊功能的字元(例如 ^、$、*、/ 和 .)。例如,$ 通常表示“轉至行尾”,但是,如果 $ 前緊跟一個 \,則 $ 只是一個普通的字元。
使用 \
例如,/(No \$ money) 向上搜尋字元序列 (No $ money)。緊跟在 $ 之前的逸出字元 (\) 命令 vi 逐字搜尋貨幣符號。
替換命令:
vi/vim 中可以使用 :s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法(vi 真是強大啊,還有很多需要學習),記錄幾種在此,方便以後查詢。
: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 為數字,若 n 為 .,表示從當前行開始到最後一行
:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
可以使用 # 作為分隔字元,此時中間出現的 / 不會作為分隔字元
:s#vivian/#sky/#替換當前行第一個 vivian/ 為 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 /): /oradata/apras/替換成/user01/apras1/
6. 其它
利用 :s 命令可以實現字串的替換。具體的用法包括:
:s/str1/str2/ 用字串 str2 替換行中首次出現的字串 str1 ----只針對搜尋行,即當前行
:s/str1/str2/g 用字串 str2 替換行中所有出現的字串 str1 ----只針對搜尋行,即當前行
:.,$ s/str1/str2/g 用字串 str2 替換本文當前行到末尾所有出現的字串 str1
:1,$ s/str1/str2/g 用字串 str2 替換本文中所有出現的字串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋
字串的首次出現進行替換;g 放在命令開頭,表示對本文中所有包含搜尋字串的行進行替換操作。