高級(jí)一些的編輯器,都會(huì)包含宏功能,vim當(dāng)然不能缺少了,在vim中使用宏是非常方便的:
:qx 開(kāi)始記錄宏,并將結(jié)果存入寄存器x
q 退出記錄模式
@x 播放記錄在x寄存器中的宏命令
稍微解釋一下,當(dāng)在normal模式下輸入:qx后,你對(duì)文本的所有編輯動(dòng)作將會(huì)被記錄下來(lái),再次輸入q即退出了記錄模
式,然后輸入@x對(duì)剛才記錄下來(lái)的命令進(jìn)行重復(fù),此命令后可跟數(shù)字,表示要重復(fù)多少次,比如@x20,可以重復(fù)20次。這個(gè)在文本的批處理中是非常有用的。
同時(shí)編輯多個(gè)文件
在vim眾多的插件中,有一個(gè)叫minibuffer的插件,就是下面所說(shuō)的標(biāo)簽頁(yè)功能了,可以支持同時(shí)編輯多個(gè)文件。
標(biāo)簽命令
:tabe fn 在一個(gè)新的標(biāo)簽頁(yè)中編輯文件fn
gt 切換到下一個(gè)標(biāo)簽頁(yè)
gT 切換到上一個(gè)標(biāo)簽頁(yè)
:tabr 切換到第一個(gè)標(biāo)簽頁(yè)
:tabl 切換到最后一個(gè)標(biāo)簽頁(yè)
:tabm [N] 把當(dāng)前tab移動(dòng)到第N個(gè)tab之后
對(duì),正如你所想象的那樣,跟eclipse, ue等的標(biāo)簽頁(yè)是一個(gè)意思!
窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切換窗口
ctrl+w q 退出當(dāng)前窗口(由于同時(shí)有多個(gè)文件,此命令不會(huì)影響其他窗口)
ctrl+w v 垂直分割窗口
其他
vim在保存之前不會(huì)對(duì)文件做實(shí)際的修改,只是加載到緩沖區(qū)中,對(duì)文件的編輯其實(shí)是對(duì)緩沖區(qū)的編輯,直到:w時(shí)才會(huì)存入物理文件。
:e file 把file加載到新的緩沖區(qū)中
:bn 跳轉(zhuǎn)到下一個(gè)緩沖區(qū)
:bd 刪除緩沖區(qū)(關(guān)閉文件)
:sp fn 分割窗口,并將fn加載到新的窗口中
退出編輯器
:w%20將緩沖區(qū)寫(xiě)入文件,即保存修改
:wq%20保存修改并退出
:x%20保存修改并退出
:q%20退出,如果對(duì)緩沖區(qū)進(jìn)行過(guò)修改linux命令大全,則會(huì)提示
:q!%20強(qiáng)制退出linux命令大全,放棄修改
查找替換
/pattern%20向后搜索字符串pattern
?pattern%20向前搜索字符串pattern
n%20下一個(gè)匹配(如果是/搜索,則是向下的下一個(gè),?搜索則是向上的下一個(gè))
N%20上一個(gè)匹配(同上)
:%s/old/new/g%20搜索整個(gè)文件,將所有的old替換為new
:%s/old/new/gc%20搜索整個(gè)文件,將所有的old替換為new,每次都要你確認(rèn)是否替換
復(fù)制粘貼
dd%20刪除光標(biāo)所在行
dw 刪除一個(gè)字(word)
x 刪除當(dāng)前字符
X 刪除前一個(gè)字符
D 刪除到行末
yy 復(fù)制一行,此命令前可跟數(shù)字,標(biāo)識(shí)復(fù)制多行,如6yy,表示從當(dāng)前行開(kāi)始復(fù)制6行
yw 復(fù)制一個(gè)字
y$ 復(fù)制到行末
p 粘貼粘貼板的內(nèi)容到當(dāng)前行的下面
P 粘貼粘貼板的內(nèi)容到當(dāng)前行的上面
]p 有縮進(jìn)的粘貼,vim會(huì)自動(dòng)調(diào)節(jié)代碼的縮進(jìn)
"a 將內(nèi)容放入/存入a寄存器,可以支持多粘貼板
附:比如常用的一個(gè)寄存器就是系統(tǒng)寄存器,名稱(chēng)為+,所以從系統(tǒng)粘貼板粘貼到vim中的命令為"+p,注意此處的+不表示操作符,二十一個(gè)寄存器。
移動(dòng)光標(biāo)
在vim中移動(dòng)光標(biāo)跟其他的編輯器中有很大的區(qū)別,不過(guò)一旦學(xué)會(huì)了,就會(huì)飛速的在文本中移動(dòng)了。
h,j,k,l 上,下,左,右
ctrl-f 上翻一頁(yè)
ctrl-b 下翻一頁(yè)
% 跳到與當(dāng)前括號(hào)匹配的括號(hào)處,如當(dāng)前在{,則跳轉(zhuǎn)到與之匹配的}處
w 跳到下一個(gè)字首,按標(biāo)點(diǎn)或單詞分割
W 跳到下一個(gè)字首,長(zhǎng)跳,如end-of-line被認(rèn)為是一個(gè)字
e 跳到下一個(gè)字尾
E 跳到下一個(gè)字尾,長(zhǎng)跳
b 跳到上一個(gè)字
B 跳到上一個(gè)字,長(zhǎng)跳
0 跳至行首,不管有無(wú)縮進(jìn),就是跳到第0個(gè)字符
^ 跳至行首的第一個(gè)字符
$ 跳至行尾
gg 跳至文件的第一行