天天看點

Vim光标移動

最近全面轉換開發到Mac OS下,用MacVim作為IDE。記錄一些Vim基本操作給自己備忘。

此次所說的都是在common-mode(c-mode,在Vim又名normal-mode,就是剛進入vim,不能輸入文字的狀态)下的移動,原始的vi 隻能在c-mode 移動光标,在insert-mode 隻做文字的輸入,而不做光标的移動。當然Vim及elvis 的方向鍵是不論在那一種mode 皆可移動自如。

基本的光标移動

h 左,或Backspace 或方向鍵。
j 下,或Enter 或+(要Shift 鍵),或方向鍵。
k 上,或方向鍵或-(不必Shift 鍵)。
l 右,或Space 或方向鍵。
Ctrl+f 即PageDown 翻頁(Forward,向前、下翻頁)。
Crtl+b 即PageUp 翻頁(Backward,向後、上翻頁)。

同樣的,比如20h,就是光标向左移動20字元;20j,光标向下移動20字元;其他類似。

使用 hjkl

鍵的移動是為了使手不必離開打字區(鍵盤中央的部位),以加快打字的速度,如果各位不習慣,那就使用方向鍵吧!其實,一旦習慣了以後,對于編輯工作的效率

會有很大的幫助,而且有許多工作站的vi 隻能使用hjkl 的移動方式,是以可能的話,盡量熟悉hjkl 的光标移動。

Backspace及Space的移動方式是到了行首或行尾時會折行,但方向鍵或hl 鍵的移動則在行首或行尾時您繼續按也不會折行。轉折換行的功能是Vim的擴充功能,elvis 無此功能。

jk 及使用方向鍵的上下移動光标會盡量保持在同一欄位。使用Enter,+,-的上下移動,光标會移至上(下)一行的第一個非空白字元處。

好像有點複雜,各位就暫時使用方向鍵來移動就簡單明白了!等您愛上了Vim後再來講究吧。

進階的光标移動

是數目字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。

特殊的移動

) 移至下一個句子(sentence)首。
( 移至上一個句子(sentence)首。 sentence(句子)是以 . ! ? 為區格。
} 移至下一個段落(paragraph)首。
{