VIM編輯器學(xué)習(xí)
2、聰明的進(jìn)入插入模式
很多新手進(jìn)入插入模式都只是用 i。這樣當(dāng)然可以進(jìn)入插入模式,但通常不是那么合適,因?yàn)?VIM 提供了很多進(jìn)入插入模式的命令。下面是最常用的一些:
i:在當(dāng)前字符的左邊插入
I:在當(dāng)前行首插入
a:在當(dāng)前字符的右邊插入
A:在當(dāng)前行尾插入
o:在當(dāng)前行下面插入一個(gè)新行
O:在當(dāng)前行上面插入一個(gè)新行
c{motion}:刪除 motion 命令跨過(guò)的字符,并且進(jìn)入插入模式。比如:c$,這將會(huì)刪除從光標(biāo)位置到行尾的字符并且進(jìn)入插入模式。ct!,這會(huì)刪除從光標(biāo)位置到下一個(gè)嘆號(hào)(但不包括),然后進(jìn)入插入模式。被刪除的字符被存在了剪貼板里面,并且可以再粘貼出來(lái)。
d{motion}:和上面差不多,但是不進(jìn)入插入模式。
3、有效的移動(dòng)大段的文本
使用可視選擇(visual selections)和合適的選擇模式
不像最初的 VI,VIM 允許你高亮(選擇)一些文本,并且進(jìn)行操作。這里有三種可視選擇模式:
v:按字符選擇。經(jīng)常使用的模式,所以親自嘗試一下它。
V:按行選擇。這在你想拷貝或者移動(dòng)很多行的文本的時(shí)候特別有用。
在選擇模式的時(shí)候使用上面所述的方向鍵和命令(motion)。比如,vwww,會(huì)高亮光標(biāo)前面的三個(gè)詞。Vjj 將會(huì)高亮當(dāng)前行以及下面兩行。
4、在可視選擇模式下剪切和拷貝
一旦你高亮了選區(qū),你或許想進(jìn)行一些操作:
d:剪貼選擇的內(nèi)容到剪貼板。
y:拷貝選擇的內(nèi)容到剪貼板。
c:剪貼選擇的內(nèi)容到剪貼板并且進(jìn)入插入模式。
在非可視選擇模式下剪切和拷貝
如果你很清楚的知道你想拷貝或者剪切什么,那你根本就不需要進(jìn)入可視選擇模式。這樣也會(huì)節(jié)省時(shí)間:
d{motion}:剪切 motion 命令跨過(guò)的字符到剪貼板。比如,dw 會(huì)剪切一個(gè)詞而 dfS 會(huì)將從當(dāng)前光標(biāo)到下一個(gè) S 之間的字符剪切至剪貼板。
y{motion}:和上面類(lèi)似,不過(guò)是拷貝。
c{motion}:和 d{motion} 類(lèi)似,不過(guò)最后進(jìn)入插入模式。
dd:剪切當(dāng)前行。
yy:拷貝當(dāng)前行。
cc:剪切當(dāng)前行并且進(jìn)入插入模式。
D:剪切從光標(biāo)位置到行尾到剪貼板。
Y:拷貝當(dāng)前行。
C:和 D 類(lèi)似,最后進(jìn)入插入模式。
x:剪切當(dāng)前字符到剪貼板。
s:和x類(lèi)似,不過(guò)最后進(jìn)入插入模式。
5、粘貼
粘貼很簡(jiǎn)單,按 p。
6、使用多重剪貼板
很多編輯器都只提供了一個(gè)剪貼板。VIM 有很多。剪貼板在 VIM 里面被稱(chēng)為寄存器(Registers)。你可以列出當(dāng)前定義的所有寄存器名和它們的內(nèi)容,命令為“:reg”。最好使用小寫(xiě)字母來(lái)作為寄存器的名稱(chēng),因?yàn)榇髮?xiě)的有些被 VIM 占用了。
使用寄存器的命令為雙引號(hào) “。
比如:我們要拷貝當(dāng)前行到寄存器 k。你應(yīng)該按 “kyy。(你也可以使用 V”ky。為什么這樣也可以呢?)現(xiàn)在當(dāng)前行應(yīng)該已經(jīng)存在了寄存器 k 里面直到你又拷貝了一些東西進(jìn)入寄存器 k?,F(xiàn)在你可以使用命令 “kp 來(lái)粘貼寄存器 k 里面的內(nèi)容到你想要的位置。
7、避免重復(fù)
令人驚奇的 . 命令
在 VI 里面,輸入 . (小數(shù)點(diǎn)符號(hào)),將會(huì)重復(fù)你輸入的上一個(gè)命令。比如,你上個(gè)命令為“dw”(刪除一個(gè)詞),VI 將會(huì)接著再刪除一個(gè)詞。
8、使用數(shù)字
使用數(shù)字也是 VIM 強(qiáng)大的而且很節(jié)省時(shí)間的重要特性之一。在很多 VIM 的命令之前都可以使用一個(gè)數(shù)字,這個(gè)數(shù)字將會(huì)告訴 VIM 這個(gè)命令需要執(zhí)行幾次。比如:
3j 將會(huì)把光標(biāo)向下移動(dòng)三行。
10dd 將會(huì)刪除十行。
y3″ 將會(huì)拷貝從當(dāng)前光標(biāo)到第三個(gè)出現(xiàn)的引號(hào)之間的內(nèi)容到剪貼板。
數(shù)字是擴(kuò)展 motion 命令作用域非常有效的方法。
評(píng)論