2. 游標的移動
本節所述皆是在 common-mode(c-mode,在 Vim 又名 normal-mode,就是剛進入 vim,不能輸入文字的狀態)下的移動,原始的 vi 只能在 c-mode 移動游標,在 insert-mode 只做文字的輸入,而不做游標的移動。當然 Vim 及 elvis 的方向鍵是不論在那一種 mode 皆可移動自如。
2.1 基本的游標移動
| h |
左,或 Backspace 或方向鍵。 |
| j |
下,或 Enter 或 +(要 Shift 鍵),或方向鍵。 |
| k |
上,或 方向鍵或 -(不必 Shift 鍵)。 |
| l |
右,或 Space 或方向鍵。 |
| Ctrl+f |
即 PageDown 翻頁(Forward,向前、下翻頁)。 |
| Crtl+b |
即 PageUp 翻頁(Backward,向後、上翻頁)。 |
使用 hjkl 鍵的移動是為了使手不必離開打字區(鍵盤中央的部位),以加快打字的速度,如果各位不習慣,那就使用方向鍵吧!其實,一旦習慣了以後,對於編輯工作的效率會有很大的幫助,而且有許多工作站的 vi 只能使用 hjkl 的移動方式,因此可能的話,盡量熟悉 hjkl 的游標移動。
Backspace 及 Space 的移動方式是到了行首或行尾時會折行,但方向鍵或 hl 鍵的移動則在行首或行尾時您繼續按也不會折行。轉折換行的功能是 Vim 的擴充功能,elvis 無此功能。
jk 及使用方向鍵的上下移動游標會盡量保持在同一欄位。使用 Enter,+,-的上下移動,游標會移至上(下)一行的第一個非空白字元處。
好像有點複雜,各位就暫時使用方向鍵來移動就簡單明白了!等您愛上了 Vim 後再來講究吧。
2.2 進階的游標移動
| 0 |
是數目字 0 而不是英文字母 o。或是 Home 鍵,移至行首,(含空白字元)。 |
| ^ |
移至行首第一個非空白字元,注意,要 Shift 鍵。 |
| $ |
移至行尾,或 End 鍵。要 Shift 鍵。 |
| G |
移至檔尾(全文最後一行的第一個非空白字元處) |
| gg |
移至檔首(全文第一行之第一個非空白字元處)。 |
在規則表示式(regular expression)中,^ 是匹配行首,$ 是匹配行尾。
gg 是 Vim 的擴充功能,在 elvis 或原始 vi 中可用 1G 來移至檔首(是數字 1 不是英文字 l)。G 之原意是 goto,指移至指定數目行之行首,如不指定數目,則預設是最後一行。
| w |
移至次一個字(word)字首。當然是指英文單字。 |
| W |
同上,但會忽略一些標點符號。 |
| e |
移至後一個字字尾。 |
| E |
同上,但會忽略一些標點符號。 |
| b |
移至前一個字字首。 |
| B |
同上,但會忽略一些標點符號。 |
| H |
移至螢幕頂第一個非空白字元。 |
| M |
移至螢幕中間第一個非空白字元。 |
| L |
移至螢幕底第一個非空白字元。這和 PageDown,PageUp 不一樣,內文內容並未動,只是游標在動而已。 |
| n| |
移至第 n 個字元(欄)處。注意,要用 Shift 鍵。n 是從頭起算的。 |
| :n |
移至第 n 行行首。或 nG。 |
2.3 特殊的移動
| ) |
移至下一個句子(sentence)首。 |
| ( |
移至上一個句子(sentence)首。sentence(句子)是以 . ! ? 為區格。 |
| } |
移至下一個段落(paragraph)首。 |
| { |
移至上一個段落(paragraph)首。paragraph(段落)是以空白行為區格。 |
| % |
這是匹配 {},[],() 用的,例如游標在 { 上只要按 %,就會跑到相匹配的 } 上。 |
另還有一些 Vim 的特殊按鍵,但這得留待最後再來說明,否則各位恐怕會頭昏眼花了。