vi / vim 搜尋並取代字串

不管系統管理還是寫程式,在檔案內對字串進行搜尋並取代十分常用,在 Unix Like 環境下常會用 sed 或 perl 做 search & replace.

如果在開啟檔案後需要取代字串,其實在 vi 及 vim 內同樣可以做搜查及取代字串,做法跟 sed 差不多,以下是 vi 做搜尋及取代的語法:

:%s/search_from/replace_to/g

以上 vi 的語法會將檔案內,所有 “search_from” 的字串替換成 “replace_to”。

將上面指令最後加上一個 “c” 字元,可以在取代前,向使用者確認:


:%s/search_from/replace_to/gc

除了可以替換輸入的字串,更可以設定搜尋時,略過英文大小寫的差異,以下對 “search_from” 及 “SEARCH_FROM” 同樣匹配:

:%s/search_from/replace_to/gi

如果不想將檔案內所有匹配的字串取代,而是只將目前一行的字串取代,可以將指令最前面的 “%” 刪除取可:

:s/search_from/replace_to/g

如果只要取代指定行數範圍的字串,可以用以下格式,例如要搜尋並取代第 50 行至 100 行匹配的字串,可以這樣:

:50,100s/search_from/replace_to/gc


Leave a Reply