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