vim 移動指令大全

筆者有時候也會忘記不常用的指令,所以才會想說來寫這一篇,將所有可能常用的指令整理,方便日後參考。
註: 指令皆有區分大小寫

基礎移動

游標往下:j
游標往上:k
游標往左:h
游標往右: l
上面的都可以搭配數字移動,例如 5j 就是往下移動五行,非常的方便。筆者都會使用 :set rnu 來開啟相對行號,這樣一眼就可以看出是在上下的第幾行,假設是上面的 11行,就可以使用 11k 直接上去

摺行: 如果是一行文字太長被折行以兩行的形式出現在螢幕中,想要移動到本行的「折行下一行」的話就是 gj,到本行的「折行上一行」就是 gk

依照單字移動

移動到下一個單字開頭:w
移動到下一個單字結尾:e
移動到下一個字串開頭:W
移動到下一個字串結尾:E 或是 gE
移動到上一個單字開頭:b
移動到上一個字串結尾:b 或是 ge

註:單字和字串最大的差別在於中間有沒有空白,以 "button.click( this );" 為例,如果在開頭使用 w 會跳至 "." ,而如果是使用 W 則會跳至 this 的 t ,因為 t 前面有空白。

在行中移動

跳至行最開頭:0
跳至行最結尾:$ 或是 g_
跳至該行第一個非空白字元:_ 或是 ^ 或是 g^
跳至該行最後一個非空白字元:g$
跳至該行在螢幕最中間的位置:gm

跳至下一個指定單字(有區分大小寫):f 加上單字,例如跳至下一個 "a": fa
跳至上一個指定單字(有區分大小寫):F 加上單字,例如跳至下一個 "a": Fa
跳至下一個指定單字的前一個字(有區分大小寫):t 加上單字,例如跳至下一個 "a"的前一個字: ta
跳至上一個指定單字的前一個字(有區分大小寫):T 加上單字,例如跳至下一個 "a"的前一個字: Ta

在使用 f, F, t, T 後可以接續使用下列兩個指令:
重複:「;」
反向重複(上一個變一個,下一個變上一個):「,」

在多行中移動

跳至上一行的第一個非空白字元:-
跳至下一行的第一個非空白字元:+ 或是 Ctrl + M
跳至上一個句子開頭:(
跳至下一個句子開頭:)
跳至上一個段落開頭:{
跳至下一個段落開頭:}

將游標跳至畫面上方:H
將游標跳至畫面中間:M
將游標跳至畫面方方:L

註: 並非是最頂部、最底部,是依照行最前面的空白判斷。

頁面捲動

向上捲動半頁:Ctrl + U
向下捲動半頁:Ctrl + D

向上捲動整頁:Ctrl + B
向下捲動整頁:Ctrl + F

頁面往上捲動一行,游標位置不變: Ctrl + E
頁面往下捲動一行,游標位置不變: Ctrl + Y

將游標所在行置於最上一行:zt 將游標所在行置於最上一行:zz 將游標所在行置於最上一行:zb

在檔案中移動

跳到檔案開頭:gg
跳到檔案結尾:G
跳到指定行:「:」後面接行號,例如跳到第 10 行「:10」
跳到指定行:數字後面接 G,例如跳到第 10 行:「10G」
跳到檔案的大概位置:「%」,例如有 1000 行的檔案使用 「10%」就會跳至第 100 行

在多個檔案中移動

跳轉到較舊(上一個)的游標位置:Ctrl + I
跳轉到較新(下一個)的游標位置:Ctrl + O 或是 tab
可以使用 :ju 查看所有位置

書籤

放置書籤:「m」加上書籤代號,可以使用 a~z,例如放置代號為 a 的書籤:「ma」
註: 小寫英文代表此檔案的書籤,使用大寫代表全域書籤,在不同的檔案間也可以使用

跳轉到書籤:「`」加上書籤代號,例如跳轉到代號為 a 的書籤:「`a」
跳轉到書籤後跳回原先的位置:「``」
查看所有書籤:「:marks」
特殊書籤:
跳轉前的游標位置:「'」
最後編輯的游標位置:「"」
最後修改的開始位置:「[」
最後修改的結束位置:「]」

註: 筆者在測試時發現可以使用 「'」符號代替「`」符號

延伸閱讀:
vim 多檔案操作大全 (分割視窗、頁籤)
vi/vim 繁體中文 圖解鍵盤圖 (備份)

留言