{%hackmd BJrTq20hE %} <style> h2 { color: #fc0 !important; } h3 { color: #8f0 !important; } h4 { color: #aaf !important; } </style> # 我最喜歡的文字編輯器 — Vim \# 01 ## 前言 我相信如果你是軟體工程師,或是即將成為軟體工程師的人,可能都曾有被困在 Vim 這個文字編輯器裡出不來的經驗。在 Stack Overflow 上甚至有以 `How do I exit Vim?` 為題的討論串。 雖然在剛開始接觸 Vim 的時候,你可能會有很多不太好的印象。這到底是什麼外星人才會用的編輯器,明明就很難用。但相信我,只要習慣它的操作,你一定會愛上它的,擺脫滑鼠,人鍵合一的感覺真的很爽! ## 進入正題 第一,醜話說在前頭,由於 Vim 的學習曲線相當高,所以我希望你已經有盲打的能力,再開始學習。不然的話,下面的文章看看就好,練習不看鍵盤也能打字才是更重要的。 第二,也是由於 Vim 的學習曲線相當高,所以我不建議你用終端機上的 Vim 來練習。我們用 Visual Studio Code 的 Vim 插件來學習,反正對我們剛接觸的人來說,操作都差不多,介面還比較友善。 我不敢保證在學會下面所有的操作之後,你就可以自由自在飛快地穿梭在程式碼當中。 Vim 的操作更像是一種肌肉記憶,只有不斷地練習,才可以幾乎不經思考,快速達到你想要的目的。 ## Vim 的操作 前面說了那麼多,終於要進到 Vim 的教學啦! 首先,就我個人的理解, Vim 有五大種操作模式,分別為: 1. 一般模式( Normal ) 2. 插入模式( Insert ) 3. 可視模式( Visual ) 4. 命令模式( Command ) 5. 搜尋模式( Search ) 其中,在一般模式下可以做非常多事情,所以下面會大篇幅地介紹一般模式。 ## 一般模式( Normal ) 所有模式之間的切換,都會經過一般模式,所以一定要學會怎麼進入一般模式。正常進入一般模式的方法有兩種: 1. 按下 `esc` 2. 按下 `control + [` (這個按鍵組合記為`<C-[>`) 在 Visual Studio Code 的 Vim 插件一般模式下,你的游標應該會是粗粗一條,直接蓋在字上。像下圖中`main`上的`m`一樣。 ![image](https://hackmd.io/_uploads/HJT3ElkkR.png) 有些人覺得用 `<C-[>` 的方式進入一般模式,可以讓左手移動的幅度最小,更有效率。甚至有高手會把 `control` 鍵給 map 到原本的 `caps lock` 鍵上面(畢竟那顆按鍵應該是整把鍵盤上最雞肋的鍵之一)。但我個人還是喜歡簡單粗暴地按下 `esc` 鍵就好。 在一般模式下,你可以做非常多事情,例如上下左右,移動到文件的第一行、最後一行,以及剪下、貼上等等操作。接下來我將介紹我在一般模式下最常使用的操作們: - `k`: 移動到上一行 - `j`: 移動到下一行 - `h`: 向左移動一個字元 - `l`: 向右移動一個字元 雖然說上下左右的操作也可以透過方向鍵來操作,但既然你都要學 Vim 了,為什麼不適應一下呢?方向鍵跟你鍵盤中位的距離大概有十萬八千里吧,你的右手移動到方向鍵之後,回來還要重新定位,不如就用 hjkl 鍵來操作。 光靠 `h` 和 `l` 來左右移動還是有點太慢了,你可能需要一次移動一個單字,或是移動到行首、行末: - `b`: 移動到當前單字的開頭,如果已經在開頭了,就移動到上一個單字的開頭 - `w`: 移動到下一個單字的開頭 - `e`: 移動到當前單字的結尾,如果已經在結尾了,就移動到下一個單字的結尾 - `0`: 移動到行首 - `^`: 移動到這一行第一個非空白字元 - `$`: 移動到行末 你還可能需要把游標一次移動好幾行,或是好幾個單字,這時候你可以在前面冠上數字。以下只是舉例: - `5k`: 向上移動 5 行 - `8e`: 向後移動 8 個單字 如果你還是覺得太慢,我們可以滾動半個畫面或一整個畫面: - `<C-u>`: 向上移動半個畫面 (用 up 記) - `<C-d>`: 向下移動半個畫面 (用 down 記) - `<C-b>`: 向上移動整個畫面 (用 back 記) - `<C-f>`: 向下移動整個畫面 (用 front 記) 這些可能還不夠,你還有可能需要直接移動到整份文件的最開頭或結尾: - `gg`: 移動到整份文件的第一個字元 - `G`: 移動到整份文件的最後一行的第一個字元 --- 好的,介紹完了 Vim 一般模式下的我會常用的操作。希望你會喜歡,並且常常練習。