Vim 修改、查找與替換
文本編輯器最基本的功能就是對文件進行增刪改查,前面的小節我們已經講了增刪等相關內容以及操作。這一節我們來看一下修改、查找和替換。
使用過 Word 的人應該很知道,在 Word 中我們使用 ctrl+f 來查找我們需要的內容。但是 Word 的查找功能比較單一,Vim 則提供了更加豐富的查找場景:
- 高亮查找
- 大小寫敏感查找
- 重復查找
- 預覽查找
1. 查找
使用查找功能我們需要進入普通模式,普通模式如何進入前面的小節已經講了,這里不再過多贅述。下面我們來看下針對不同的如何執行查找操作:
Tips:通模式下按下
:
,這時你會看到窗口的左下角出現了一個:
,這時我們就可以輸入我們要查找的內容了。
- 開啟高亮查找:在左下角的
:
后面輸入set hls
,即可高亮顯示查找內容。 - 開啟預覽查找:在左下角的
:
后面輸入set incsearch
,這時 Vim 會根據輸入內容提前預覽匹配內容,并且實時更新 - 正向掃描:在左下角的
:
后面輸入/搜索內容
,開始從上向下搜索。 - 反向掃描:在左下角的
:
后面輸入?搜索內容
,開始從下向上搜索。 - 大小寫敏感查找:在左下角的
:
后面輸入/搜索內容\c
,查找的結果會大小寫不敏感。 - 大小寫不敏感查找:在左下角的
:
后面輸入/搜索內容\C
,查找的結果會大小寫敏感。
查找小實戰
隨便打開一個文件查找 name/Name
:

2. 修改與替換
經常替換操作都是簡單的某個字符串替換。Vim 中提供了很多便捷的小技巧來滿足需求
快捷鍵 | 含義 | 備注 |
---|---|---|
r | 替換光標下單個字符 | |
cw | 修改單個單詞 | |
c$ | 修改光標之后行內內容 | |
R | 進入替換模式 |
來看下下面這個案例:進入替換模式,替換單個字符并修改單個單詞

3. substitute 替換命令
除了簡單的快捷鍵替換之外。還有更加強大的命令式替換。這種方式為了處理更加復雜的場景,尤其是結合正則表達式。
substitute 是 Vim 中最常用的搜索和替換的命令??梢钥s寫為 s。
替換公式::[range]s[ubstitute]/{pattern}/{string}/[flags]
默認情況下,s 只會作用域當前行的第一個匹配項。
flag選項
選項 | 含義 | 備注 |
---|---|---|
g | 全局替換 | global(也只是針對當前行全局而非全文) |
c | 每次替換前需要確認 | confirm |
e | 沒有匹配項時不顯示錯誤 | error |
i | 表示忽略大小寫 | ignore |
I | 表示區分大小寫 |
range 選項
選項 | 含義 | 備注 |
---|---|---|
% | 執行范圍:全局 | 這個才是真正意義上的全局 |
n,m | n到m 行替換 | :12,33s/time/ting/g |
$ | 最后一行 | :12,$s/time/ting/g |
n;/pattern/ | n行到下一個匹配patter行 | :12;/ting/time/ting/g |
實操部分
打開 main.go
文件,并將文件中的 time 全部替換為 ting:

正則表達式實戰
正則表達式會在后面章節中詳細講解。這里只是針對查找場景做展示。
查找 main.go 文件中包含在小括號中的代碼:

Tips: 需要注意這里查找標識符后面的\v: 這個主要為了進入 very magic 模式——也就是符合正常正則表達式規則的模式。詳細部分會在后面正則表達式中詳細講解。
4. 小結
本節是工作中使用比較多的。主要難點還是在于結合正則表達式,本身的規則并不復雜。上述規則基本滿足很多工作要求。Vim 很多哲學都是一脈相承的,只要融會貫通即可。