在使用Vim之前,讓我們來認識一下Vim的模式(Mode)與各個模式之間的操作與轉換。
h
、j
、k
、l
y
(yank )、d
(delete )、c
(change )等命令複製、刪除、修改對應游標下的文字。i
(insert)會進入插入模式。v
(visual)會選取游標下的該y
、d
、c
)操作所VSCodeVim支援的所有模式如文件連結
Vim 裡面的各個模式轉換可以用狀態機來思考,當我們在普通模式輸入不同命令後,會進入對應的模式,再按下Esc
鍵可以退出所進入的模式,如下圖所示。(VSCodeVim亦直接支援使用Ctrl/Cmd + c
快捷鍵來退出目前的模
式)
(圖源:作者自製)
在VS Code 中,當我們安裝Vim Extension 並進入Vim Mode 後,我們會先進入普通模式,在這個模式下,游標會變成塊狀。
同時,我們可以在最底下的狀態列看到--NORMAL-- 的字樣,確認我們已經進入普通模式,如下圖所示。
(圖源:作者自製)
之後,我們輸入i,進入插入模式,如下圖所示。
完成輸入或相關的編輯動作後,可以和前面一樣點擊Ctrl+c
(或是Esc
)退出可視模式。
不過,這樣做通常沒有什麼意義,讓我們直接輸入c
(Change)命令來修改下圖的這段內容,看看會發生什麼事情?
(圖源:作者自製)
選中的文字會先被刪除,並進入插入模式的狀態,讓我們可以馬上輸入要修改的文字。這是c
命令的標準行為,若我們在普通模式使用相關的s
(substitute)命令命令修改一個字,狀態一樣會直接進入插入模式。
好的,這裡我們多認識了一個命令,並且了解不同命令跟狀態轉換之間的關聯性。那麼刪除功能的d
命令呢?也許你開始好奇這些Vim命令的規則了,回到普通模式後,讓我們按u
(undo)先復原文字。
現在,再次重複剛才的選取操作,但我們改為輸入d
來刪除選取文字區段。刪除選中文字後,我們回到了普通模式。這也是合乎邏輯的行為,畢竟僅需刪除動作的我們,無需再度進入插入模式。
(圖源:作者自製)
好的,現在讓我們輸入:
,進入命令列模式吧!進入此模式後預設的游標樣式如下圖所示。
(圖源:作者自製)
此時,不一樣的是,在最底下的狀態列中,我們不會看到--COMMAND LINE MODE-- 的字樣,告訴我們已經進入對應模式。而是看到:
與狀態列上面的游標,如下所示:
(圖源:作者自製)
現在,我們可以輸入對應命令,假設我們要跳轉到第二行,在Vim 裡面我們可以輸入:{n}
來跳轉到指定行數 (此處的n為指定跳轉的行數),這裡我們接著輸入2
。
(圖源:作者自製)
輸入完整命令後,按下enter鍵
即可執行對應命令,跳轉到第二行。
(圖源:作者自製)
好的,從前面文章中,我們認識了最基本的Vim 用法。Vim的設計是考量過盲打(TouchTyping)的,了解模式下的基本操作和鍵盤的姿勢,會讓我們的編輯器操作更得心應好,現在我們已經有足夠的基礎可以進階了。
透過有方法跟順序的練習,我們會逐步認識到一個新的編輯器的世界。