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

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

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

正則表達(dá)式實(shí)戰(zhàn)
正則表達(dá)式會在后面章節(jié)中詳細(xì)講解。這里只是針對查找場景做展示。
查找 main.go 文件中包含在小括號中的代碼:

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