Vim 移動、跳轉與縮進
在上一節(jié) “Vim 的模式中” 我們知道了在 Vim 中如何移動光標。其實除了 h,l,j,k 鍵之外還有兩種操作可以讓我們移動光標:
鍵 | 含義 |
---|---|
h | 左移 |
l | 右移 |
j | 下移 |
k | 上移 |
^/0 | 移動到行首 |
$ | 移動到行尾 |
以上就是Vim中光標移動最基礎的快捷鍵。但是初學者可能會覺得很別扭。因為現(xiàn)在大家更加習慣于鍵盤上的上下左右鍵,這更符合現(xiàn)在人的思維。這里需要對此做個解釋,便于大家更加能夠理解 Vim。
1. Vim 的起源
Vim 布局起源:Vim 最初的作者 Bill Joy 使用的機器是 ADM-3A 終端機。這款機器相較于現(xiàn)在普遍 PC 來說就是個古董。如下圖:

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

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

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