嗨!歡迎回到上班族的命令列生存手冊。終於要來講那個編輯器:vim,一個進去後就不知道怎麼離開的神秘產品。同時,用 vim 的開發者會自己走過來告訴你他用 vim,也是一個很妙的生態。
如果讀者還沒有聽過這個名號,可以嘗試輸入:
$ vim
進入 vim 編輯器。立刻發現不知道怎麼打字,連離開都走不了?「這東西到底哪裡好!!」先別生氣,你可以按下 i
應該就能開始打字了。打字完後按下右上角的 ESC
會發現又回到那個不能打字的狀態。
vim 就是由很多這類的單鍵快速鍵組成,像是 i
就是進入 Insert Mode (插入模式),這時編輯器會變成跟一般的編輯器一樣可以自由的輸入,而按下 ESC
則是回到 Normal Mode(一般模式),輸入方塊變粗,不能自由的輸入。在 Normal Mode 之下,幾乎所有的案件都變成某種的單鍵快速鍵,我們把這種模式叫做 vim keybinding。
由各類的單鍵快速鍵互相排列組合,讓輸入的速度上升是 vim 這個編輯器的特色。
「讓我離開!(激動)」,離開的方式有兩種,第一個是回到 Normal Mode,接著輸入:
:q
按下 Enter 後就能離開啦,但如果你有打了字應該會有錯誤,這個時候給他一個驚嘆號代表真的很想走即可。
:q!
除了這個方法以外,還有一個做法也是在 Normal Mode 之下按下鍵盤的 ZQ
(是大寫!有大小寫的差異。) 就能離開啦。
要存檔,則是在 Normal Mode 後輸入:
:wq
或者是用大寫的 ZZ
,就可以存檔。
(這篇文章只要提到 :<指令>
都會預設立場讀者會按下 Enter!)
由上面的說明大概就能了解到這是一個學習曲線不算低的東西,剛學的時候會覺得何苦?但學會之後會覺得挺有趣的(斯德哥爾摩),希望這樣有提升讀者想要學習的意願。
想學會 vim?讓我們繼續往下看吧。
就跟前往巴西雨林以前,要先打預防針一樣,有些事情想提:
走完這幾篇至少可以讓讀者開啟 vim 時能自信地編輯文件,而不是搞不懂怎麼用就離開。
筆者有點異於常人,我比較推薦用讀者目前生活上、工作上用的 IDE,並且裝上 vim 的 Plugin 來學。首先,完全不用因為用了 vim keybinding 而不用 IDE 提供的好用功能,不用因噎廢食;二來是更接近日常使用,提升接觸的時間。
最後再回過來操作命令列裡頭的 vim 完全沒有問題。
例如筆者常用的 Android Studio 和 JetBrains 相關的 IDE,就有提供 ideaVim 外掛程式。VSCode、Cursor 等也能安裝 Vim 外掛。
Xcode 則直接內建了 vim 模式可以開啟,正在打字的 Obsidian 也有 vim 模式,建議可以直接從這些地方開始學習。
「前面的免責聲明也太長了吧?」就讓我們開始吧!!
首先一開始最重要的,就是什麼都不要做!先看完下面這部分:
預設一開始都會在 Normal Mode。
i
進入 Insert Mode (插入模式)
--insert--
,ideavim、vscode vim 也會在狀態列出現ESC
就會回到 Normal Mode
:
會進入 Command Mode (命令模式)
:q
才會是 quit 離開所有的指令,都有大小寫之分!
Normal Mode 可以做這些事情:
i
進入 Insert Mode:
進入 Command Mode
:q
離開:g!
忽略變更,直接離開:wq
存檔後離開x
刪除打字光標所在的文字dd
:刪除目前這一行文字被 x
或是 dd
,會進入 vim 的暫存器 (Register),就像是剪貼簿,只是 vim 自帶的。
這時只要使用 p
就可以貼上 vim 的剪貼簿的資料。
在 Normal Mode 可以這樣移動光標:
使用,方向鍵。(←↓↑→)
或是:
h
:左j
:下k
:上l
:右跟 less
的移動方式一樣,可以記 j 的圓勾勾在下面,所以是往下。
我們的目標就是習慣上面的使用方式,當有一點肌肉記憶時,就能繼續往下學了。
如果你不是使用 IDE 而是在 vim 本身,vim 也有說明書:
:help <搜尋字串>
vim 裡頭跳出來內部的視窗,操作方式和 less
相同,關閉方式則同樣也是 :q
。
這不適用於 mac 讀者,你們是幸福的。其他平台讀者應該會發現 Ctrl + C 後沒反應,怎麼會這樣?
因為 Ctrl + <按鍵>
對 vim 來說也是快速鍵。
Ctrl + C 是回到 Normal Mode,就跟按下 ESC
鍵一樣。這樣到底該怎麼複製東西呢?請待下回分解。