一般使用文字編輯器當然是用來編輯文字的啦(廢話),想當然爾 vim 提供了一些按鍵來做文字間的移動,讓編輯文字變得方便些。 但畢竟 vim 還是從外國發展的,對於英文的支援當然比較好,不過主要也是因為最簡單的文字編碼莫過於 ASCII ,因此 1 byte 的字基本上都是英文,一般其他語系要在文字編輯器中顯示用 UTF-8 會是比較好的選擇,而這通常是 2 byte 以上的字元。 當然文字編碼百百種,我也不是很懂,總之這裡講到的文字間的移動主要適用於英文。
vim 中在文字間移動主要也就四種,向前移動到字首是 w ( word ),向前移動到字尾是 e ( end ),向後移動到字首是 b ( back ),向後移動到字尾是 ge 。 這裡要提一下我指的向前是往文件尾巴移動,而向後是指往文件的開頭移動。 順帶一提,在 vim 裡 g 就像是 CTRL , ALT 這種按鍵,本身不會有任何作用,要配合其他按鍵才會有作用。 那麼還是舉個例子來讓這幾個按鍵清楚一點,假設游標在 word 的 r 上
Let's try to use the word motion in vim. ---> w -> e <- b <--- ge
同樣的,這些按鍵可以加上數字前綴來重複執行。舉個例子,假設游標在 with 的 t 上
Using word motion with number as prefix. ----------> 2w -----------> 3e <------------------- 4b
在這裡我得說, ge 我自己是很少在用啦,感覺 w , b , e 這三個按鍵比較常用到。 vim 還提供了另一種文字間的移動,只要將前面所講的按鍵改成大寫就行了,也就是 W , B , E , gE (注意 g 依舊是小寫)。 這兩種有什麼差別呢,大寫的移動方式是用空白字元來區分文字,而空白字元一般指空白鍵、 TAB 以及換行鍵。 至於小寫的移動方式大致上是以英文、數字、_ 所組成的字當作文字,其他符號都視為一個字,而這可以另外做設定。 舉個例子比較清楚,假設游標在 string 的 r 上
const vector<string> name = { "Bjarne Stroustrup", "Steve Jobs" }; ----> w ------> W ---> e ----> E <- b <-------- B
可以偶爾嘗試看看文字間的移動,在寫程式或閱讀英文文件很方便喔!