;命令會(huì)重復(fù)查找上次f命令所查找的字符。
.命令會(huì)重復(fù)上次的修改泼菌。
G 命令會(huì)增加從當(dāng)前?到?檔末尾處的縮進(jìn)層級(jí)震叮。
image.png
cw 命令會(huì)刪除從光標(biāo)位置到單詞結(jié)尾間的字符诗眨,并進(jìn)?插?模式。
許多普通模式命令可以在執(zhí)?時(shí)指定執(zhí)?的次數(shù)凄硼,這樣它們就可以被執(zhí)?多次铅协。
在Vim 中,我們??可以控制撤銷命令的粒度摊沉。從進(jìn)?插?模式開始狐史,直到返回普通模式為?,在此期間輸?或刪除的任何內(nèi)容都被當(dāng)成?次修改说墨。因此骏全,只要我們控制好對(duì) 鍵的使?,就可使撤銷命令作?于單詞婉刀、句?或段落吟温。和 命令分別對(duì)數(shù)字執(zhí)?加和減操作。在不帶次數(shù)執(zhí)?時(shí)突颊,它們會(huì)逐個(gè)加減鲁豪,但如果帶?個(gè)次數(shù)前綴潘悼,那么就可以?它們加減任意整數(shù)如果光標(biāo)不在數(shù)字上,那么 命令將在當(dāng)前?正向查找?個(gè)數(shù)字爬橡,如果找到
了治唤,它就徑直跳到那?。
操作符命令--------動(dòng)作命令
Vim 的強(qiáng)?很?程度上源?操作符與動(dòng)作命令相結(jié)合糙申。操作符 + 動(dòng)作命令 = 操作宾添。它作?的范圍由動(dòng)作命令決定。操作符與動(dòng)作命令的結(jié)合形成了?種語(yǔ)法柜裸。這種語(yǔ)法的第?條規(guī)則很簡(jiǎn)單缕陕,即?個(gè)操作由?個(gè)操作符,后?跟?個(gè)動(dòng)作命令組成疙挺。
Vim 的語(yǔ)法只有?條額外規(guī)則扛邑,即當(dāng)?個(gè)操作符命令被連續(xù)調(diào)?兩次時(shí),它會(huì)作?于當(dāng)前?铐然。
gUgU====gUU
操作符待決模式(Operator-Pending mode)只有操作符才會(huì)激活操作符待決模式蔬崩。
image.png
image.png
上圖中的三個(gè)命令只在同?次的插?模式編輯內(nèi)容時(shí)有效。
插?-普通模式是普通模式的?個(gè)特例搀暑,它能讓我們執(zhí)??次普遍模式命令沥阳。在此模式中,我們可以執(zhí)??個(gè)普通模式命令自点,執(zhí)?完后桐罕,?上就?返回到插?模式。要從插?模式切換到插?-普通模式樟氢,可以按冈绊。
在插?模式中,可以?{register} 命令很?便地粘貼?個(gè)單詞埠啃。{register} 命令則會(huì)更智能?些,它會(huì)按
原義插?寄存器內(nèi)的?本伟恶,并修正任何不必要的縮進(jìn)碴开。
刪除及復(fù)制命令允許我們把?本保存到寄存器中,?粘貼命令則允許我們把寄存器中的內(nèi)容插?到?檔?博秫。
不過(guò)表達(dá)式寄存器則是個(gè)另類潦牛,它可以?來(lái)執(zhí)??段Vim 腳本,并返回其結(jié)果挡育。在本節(jié)巴碗,我們將把它當(dāng)成計(jì)算器來(lái)?。傳給它?個(gè)簡(jiǎn)單的算術(shù)表達(dá)式即寒,??說(shuō)1 + 1橡淆,那它就會(huì)給出結(jié)果2召噩。對(duì)表達(dá)式寄存器所返回的?本,我們可以像?普通寄存器中的?本那樣使?它逸爵。
我們可以? = 符號(hào)指明使?表達(dá)式寄存器具滴。在插?模式中,輸?= 就可以訪問(wèn)這?寄存器师倔。這條命令會(huì)在屏幕的下?顯示?個(gè)提示符构韵,我們可以在其后輸?要執(zhí)?的表達(dá)式。輸?表達(dá)式后敲?下趋艘,Vim 就會(huì)把執(zhí)?的結(jié)果插?到?檔的當(dāng)前位置了疲恢。
Vim 可以?字符編碼(Character Code)插?任意字符。使?此功能可以很?便地輸?鍵盤上找不到的符號(hào)瓷胧。只要知道某個(gè)字符的編碼冈闭,就可以讓Vim 插?該字符,我們可以?這種?式插?任意字符抖单。要根據(jù)字符編碼插?字符萎攒,只需在插?模式中輸?{code}即可,其中{code}是要插?字符的編碼矛绘。Vim 所接受的字符編碼共包含3 位數(shù)字耍休。插??個(gè)編碼超過(guò)3 位數(shù)的字符解決?法是可以?4 位?六進(jìn)制編碼來(lái)輸?這些字符,即輸?u{1234}(例:u00bf)
如果你想知道?檔中任意字符的編碼货矮,只需把光標(biāo)移到它上?并按ga 命令羊精,然后屏幕下?就會(huì)顯示出?條消息,分別以?進(jìn)制和?六進(jìn)制的形式顯示出其字符編碼囚玫。喧锦,如果 命令后?跟?個(gè)?數(shù)字鍵,它會(huì)插?這個(gè)按鍵本身所代表的字符抓督。
image.png
過(guò)Vim 還有另外?種替換模式燃少,稱為虛擬替換模式(Virtual Replace mode)。該模式可由gR 命令觸發(fā)铃在,它會(huì)把制表符當(dāng)成?組空格進(jìn)?處理阵具。假設(shè)我們把光標(biāo)移到?個(gè)占屏幕8 列寬的制表符上,然后切換到虛擬替換模式定铜,在輸?前7 個(gè)字符時(shí)阳液,每個(gè)字符都會(huì)被插?到制表符之前;最后揣炕,當(dāng)輸?了第8 個(gè)字符時(shí)帘皿,該字符將會(huì)替換制表符。在虛擬替換模式中畸陡,我們是按屏幕上實(shí)際顯示的寬度來(lái)替換字符的鹰溜,?不是按?件中所保存的字符進(jìn)?替換虽填。這會(huì)減少意外情況的發(fā)?,因此我建議在可能的情況下盡量使?虛擬替換模式奉狈。
Vim 也提供了單次版本的替換模式及虛擬替換模式卤唉。r{char} 和gr{char} 命令允許我們覆蓋?個(gè)字符,之后?上?回到普通模式仁期。
Vim 具有3 種不同的可視模式桑驱,分別?于操作字符?本、??本或塊?本跛蛋。
按 可以在可視模式及選擇模式間切換熬的。
激活可視模式
v 鍵是通往可視模式的??。在普通模式下赊级,按v 可激活?向字符的可視模式押框,按V(v 和Shift 鍵?起按)可激活?向?的可視模式,?按(v 和Ctrl 鍵?起按)則可激活?向列塊的可視模式理逊。
gv 命令是個(gè)有?的快捷鍵橡伞,它?來(lái)重選上?次由可視模式所選擇的?本范圍。選區(qū)被刪除則?法正常?作晋被。
?亮選區(qū)的范圍由其兩個(gè)端點(diǎn)界定兑徘。其中?端固定,?另?端可以隨光標(biāo)?由移動(dòng)羡洛,我們可以?o 鍵來(lái)切換其活動(dòng)的端點(diǎn)挂脑。
如果我們想使點(diǎn)命令能夠重復(fù)某些有?的?作,那么最好要遠(yuǎn)離可視模式欲侮。作為?般的原則崭闲,在做?系列可重復(fù)的修改時(shí),最好?選操作符命令威蕉,?不是其對(duì)應(yīng)的可視模式命令刁俭。
在Vim 列塊可視模式中,修改命令的表現(xiàn)或許有點(diǎn)怪忘伞,它看上去有點(diǎn)不?致薄翅。刪除操作會(huì)同時(shí)影響所有被選中的?,但插?操作視覺(jué)上只影響頂?氓奈,按返回到普通模式時(shí)共同操作的效果才顯示出來(lái),這些修改就會(huì)被擴(kuò)散到其余選中的?上鼎天。
x2