這個單元就開始進入主題了。下編輯指令都是在 commond-mode(c-mode),就是您一進入 vim 時的模式,只能下指令,不能鍵入文字。如果印象模糊,請瞄一下第一個單元的內容。這個單元說的是基本的指令,有些比較特殊的編輯指令,因為太有個性了,所以會獨立成一個單元來說明。
進入i-mode指令
i 在游標所在字元前開始輸入文字(insert)。
a 在游標所在字元後開始輸入文字(append)。
o 在游標所在行下開一新行來輸入文字(open)。
I 在行首開始輸入文字。
A 在行尾開始輸入文字。
O 在游標所在行上開一新行來輸入文字。
J 將下一行整行接至本行(Joint)。
刪除指令
x 刪除游標所在處之字元。在 vim 及 elvis 亦可用 Del 鍵。
X 刪除游標前之字元。不可使用 Backspace 鍵。
dd 刪除一整行(delete line)。
dw 刪除一個字(delete word)。不能適用於中文。
dG 刪至檔尾。
d1G 刪至檔首。或 dgg(只能用於 vim)。
D 刪至行尾,或 d$(含游標所在處字元)。
d0 刪至行首,或 d^(不含游標所在處字元)。
取代和還原
r 取代游標所在處之字元。vi(m) 很有個性的,您在 c-mode 按
了 r 她就會停在那裡等主人鍵入所要替代的字元,希望您這
個當主人的,不要傻呼呼的也楞在那裡,趕快鍵入您的新字元
吧!:-)
R 取代字元至按 Esc 為止。
cc 取代整行內容。或大寫 S 亦可。
cw 替換一個英文字(word),中文不適用。(change)
~ 游標所在處之大小寫互換。當然不能用於中文。別忘了 Shift!
C 取代至行尾,即游標所在處以後的字都會被替換。或 c$。
c0 取代至行首,或 c^。
s 替換一個字元為您所輸入的字串。和 R 不同,R 是覆蓋式的取
代,s 則是插入式的取代,您可親自實驗看看。ㄟ!是小寫的
s。
u 這個太重要了,就是 undo,傳統的 vi 僅支援一次 undo,vim
及 elvis 就不只了,vim 是沒有限制的。
U 在游標沒離開本行之前,回復所有編輯動作。
Crtl+r 這個也是很重要,就是 redo 鍵。
加上數目字
喔!騷到 vi(m) 的癢處了,這是 vi(m) 一個非常騷包的功能,只此一家別無分號(當然同源的 ed,sed 等不在此限)。就是您可以在大部份的指令前加上數目字,代表要處理幾次的意思。以下用實例來說明比較清楚。
5dd 刪除游標所在處(含)起算以下五行內容。妙吧!
3r 按了 3r 後,您鍵入一個英文字,則三個字元皆會被您所鍵
入的英文取代。很抱歉,這不能用於中文。
5J 將五行合併成一行。
3x 刪除三個字元。抱歉,不能用於中文。
5i A 然後按 Ecs,插入五個 A。中文也可以!
2i system Esc 插入 systemsystem。中文也可以!
5G 游標移至第五行,是從檔首開始起算。
5l 移至右第五個字元處,當然 j 是可以用方向鍵取代的。
所有移動指令(參考第二單元)都可以加上數目字來控制,中
文也通喔!elvis 當然是不能用於中文。
其它的指令和數目字結合,就留待各位去發掘吧!最重要的是請您親自操作看看,使用 vi(m) 常常要動動腦筋,會有更妙的操作方式。
簡單的重排功能
>> 整行向右移一個 shiftwidth(預設是 8 個字元,可重設)。
<< 整行向左移一個 shiftwidth(預設是 8 個字元,可重設)。
:ce(nter) 本行文字置中。注意是冒號命令!
:ri(ght) 本行文字靠右。
:le(ft) 本行文字靠左。
gqip 整段重排。中文會出槌!:-(
gqq 本行重排。