Vim 移動(dòng)、跳轉(zhuǎn)與縮進(jìn)
在上一節(jié) “Vim 的模式中” 我們知道了在 Vim 中如何移動(dòng)光標(biāo)。其實(shí)除了 h,l,j,k 鍵之外還有兩種操作可以讓我們移動(dòng)光標(biāo):
鍵 | 含義 |
---|---|
h | 左移 |
l | 右移 |
j | 下移 |
k | 上移 |
^/0 | 移動(dòng)到行首 |
$ | 移動(dòng)到行尾 |
以上就是Vim中光標(biāo)移動(dòng)最基礎(chǔ)的快捷鍵。但是初學(xué)者可能會(huì)覺(jué)得很別扭。因?yàn)楝F(xiàn)在大家更加習(xí)慣于鍵盤(pán)上的上下左右鍵,這更符合現(xiàn)在人的思維。這里需要對(duì)此做個(gè)解釋?zhuān)阌诖蠹腋幽軌蚶斫?Vim。
1. Vim 的起源
Vim 布局起源:Vim 最初的作者 Bill Joy 使用的機(jī)器是 ADM-3A 終端機(jī)。這款機(jī)器相較于現(xiàn)在普遍 PC 來(lái)說(shuō)就是個(gè)古董。如下圖:

既然是個(gè)古董,那么它的鍵盤(pán)布局也就自然不同于如今的 PC 了??梢钥聪滤木唧w鍵盤(pán)布局圖如下:
Tips:可以明顯看到鍵盤(pán)上的上下左右鍵箭頭所對(duì)應(yīng)的是 H J K L 四個(gè)字母鍵,而不是像如今的鍵盤(pán)上的單獨(dú)上下左右鍵。這里大家就應(yīng)該理解為什么Vim光變移動(dòng)使用的 H J K L 鍵了把。
2. Vim 基于字符移動(dòng)
快捷鍵 | 含義 | 速記 |
---|---|---|
w/W | 正向移動(dòng)到下一個(gè)詞首 | word |
b/B | 反向移動(dòng)到上一個(gè)詞首 | back |
e/E | 正向移動(dòng)到下一個(gè)詞尾 | word end |
ge | 反向移動(dòng)到上一個(gè)詞尾 |
如果有些懵的話(huà),可以看下圖中的具體效果:

3. Vim 跳轉(zhuǎn)
有時(shí)我們使用 Vim 打開(kāi)某一個(gè)文件時(shí)只需要閱讀某一特定位置就行,這個(gè)時(shí)候可以使用 Vim 的跳轉(zhuǎn)快捷鍵來(lái)幫我們快速的定位需要閱讀的位置:
Vim 跳轉(zhuǎn)快捷方式:
快捷方式 | 功能 |
---|---|
ctrl+f/F | 跳轉(zhuǎn)到下一頁(yè) |
ctrl+b/B | 跳轉(zhuǎn)到上一頁(yè) |
ctrl+d/u | 向上或向下跳轉(zhuǎn)半頁(yè) |
gg | 跳轉(zhuǎn)到文件第一行 |
G | 跳轉(zhuǎn)到文件最后一行 |
<行數(shù)>gg/G | 跳轉(zhuǎn)到指定行數(shù),例如 12gg或者12G 代表跳轉(zhuǎn)到 12 行 |
{g}+Ctrl-g/G | 查看文件信息。 |
4. Vim 縮進(jìn)
每種語(yǔ)言開(kāi)發(fā)中都會(huì)又縮進(jìn)的硬性(Python)或者軟性要求。一般來(lái)說(shuō)通過(guò) Vimrc 寫(xiě)到配置中,這樣不必要每次手動(dòng)縮進(jìn)。但是有時(shí)候可能需要非常規(guī)的縮進(jìn)。這時(shí)候就需要手動(dòng)操作縮進(jìn)了,可以針對(duì)單行或者多行甚至塊。
快捷鍵 | 含義 |
---|---|
>> / :> | 向右縮進(jìn) |
m,n> / :m>(n-m+1) | m到n行縮進(jìn) |
m>n | m行開(kāi)始共n行縮進(jìn) |
5. Vim 移動(dòng)高級(jí)特性——組合
以上的移動(dòng)方式相對(duì)比較單一,但是 Vim 組合的思想和特性給予了 Vim 更加高效的方式。關(guān)于 Vim 的組合思想有一個(gè)公式:[count]+operator+[count]+motion
-
count:次數(shù)的意思,用于重復(fù);
-
operator :操作方式就是增刪改之類(lèi)的。例如復(fù)制(y),刪除(d)等;
-
motion :Vim help 中會(huì)有相應(yīng)的解釋。簡(jiǎn)單來(lái)說(shuō)就是operator的操作對(duì)象。比如一個(gè)單詞、句子或者移動(dòng)的方向等。
Vim 中可以通過(guò) help 幫助來(lái)查看 Vim 的功能說(shuō)明,相當(dāng)于一個(gè)說(shuō)明書(shū)和Linux 中man一樣。

可以看到 motion 意思就是移動(dòng)光標(biāo)的命令包括本文提到的單詞移動(dòng)或者光標(biāo)移動(dòng)都算是 motion 的一種。
那么我們還可以看到會(huì)有一個(gè) count,這個(gè)是用于重復(fù)移動(dòng)的次數(shù)的。應(yīng)該是很容易理解比如:
快捷鍵 | |
---|---|
2w | 正向移動(dòng)兩個(gè)單詞詞首 |
2k | 向上移動(dòng)兩行 |
6. 小結(jié)
以上就是 Vim 移動(dòng)跳轉(zhuǎn)等內(nèi)容的操作方式。尤其理解了 Vim motion 組合方式之后,會(huì)發(fā)現(xiàn)還是比較簡(jiǎn)單的。具體需要大家多加練習(xí),熟能生巧即可。