保存命令
vi和ex都有許多不同的用來(lái)保存長(zhǎng)命令序列的方法,當(dāng)調(diào)用這些已保存的序列中某一個(gè)時(shí),只需輸入幾個(gè)字符(或者甚至一個(gè)字符)就會(huì)執(zhí)行整個(gè)命令序列
單詞縮寫
定義一些縮寫,無(wú)論什么時(shí)候在插入模式下輸入縮寫,vi將自動(dòng)把它擴(kuò)展為完整的文本,使用ex命令定義縮寫:
:ab abbr phrase
只有在插入模式下把組成縮寫的字符序列作為 完整的單詞輸入(regexp中的\<和\>中) ,才會(huì)被擴(kuò)展;單詞內(nèi)部的 abbr 將不會(huì)被擴(kuò)展.
輸入 :unab abbr 就可以從此停止擴(kuò)展
:ab ????列出當(dāng)前定義的縮寫
在vim中如果遞歸的縮寫,如
:ab GNU GNU's Not Unix
將 只會(huì)擴(kuò)展一次
使用映射命令
除了是為vi命令模式而不是插入模式定義一個(gè)宏外,map命令的行為與ab極為相似
:map x sequence ???? 把字符 x 定義為一系列編輯命令
:unmap x ???????????? 取消為 x 定義的序列
:map???? ????????????列出當(dāng)前映射的所有字符
防止ex解釋鍵
注意在定義映射時(shí),不能只輸入 RETURN , ESC , BACKSPACE , DELETE 之類的鍵作為映射命令的一部分,因?yàn)檫@些鍵已在ex內(nèi)有含義了,如果要使用這些鍵作為被映射命令的一部分,需要使用 CTRL-V 來(lái)避開它的正常含義,例如
:map CTRL-A d10 CTRL-VRETURN
這種用法適用于 任何ex命令 ,不只是映射命令,在縮寫或者替換命令也適用,例如
:ab 123 one^Mtwo^Mthree????^M就是 CTRL-VRETURN 因?yàn)榛剀嚲褪茿SCII碼中的第M個(gè)
:g/^Section/s//As you recall, in^M&????在所有以單詞Section開頭的行前面插入一個(gè)短語(yǔ)作為獨(dú)立行
注意 豎直條( | ) 無(wú)法被防止,因?yàn)樗凶鳛槎鄠€(gè)ex命令分隔符的特殊含義
一些映射例子
:map ^A 0i/*^[$a*/^[????為c++加上注釋
:map e ea ????????????移動(dòng)到單詞的尾部添加文本
:map K dwwp????????????調(diào)換兩個(gè)單詞位置
:map q :w^M:n^M????????保存當(dāng)前文件
:map = xf)xn????????????重復(fù)搜索并刪除單詞或短語(yǔ)周圍的圓括號(hào)
用于插入模式的映射鍵( 僅僅在插入模式下和命令模式下可用,在一般模式下不能使用 )
通常,映射鍵只適用于命令模式,因?yàn)樵诓迦肽J较赂麈I都代表其本身,不應(yīng)該將其映射為命令.但是,通過(guò)在map命令前加上感嘆號(hào)(!),就可以強(qiáng)迫它忽略正常含義,從而在插入模式下產(chǎn)生映射,例如:
:map! + ^[kA:^[jA 在插入模式下將+映射成為在上一行末尾插入:再返回該行末尾繼續(xù)輸入
也可以取消這個(gè)映射:
:unmap! x???? 但是實(shí)際上不奏效,我也不知道怎么辦,有方法啦:通過(guò) CTRL+V 轉(zhuǎn)義它
映射功能鍵( 什么是功能鍵 )
映射其他特殊鍵
許多鍵盤上帶有與vi中的命令功能相同的特殊鍵,如 HOME , END , PAGE UP , PAGE DOWN ,由于這些按鍵也是有本來(lái)的意思的,于是跟ESC等按鍵一樣,需要轉(zhuǎn)義.例如:
:map CTRL-V HOME 1G????就可以將HOME鍵轉(zhuǎn)義成為到第一排
映射多個(gè)輸入鍵
:map =b a</emphasis>^[???? ????將=b映射了,輸入的時(shí)候只要連續(xù)的輸入=b就可以達(dá)到替換的效果
@函數(shù)
使用@命令執(zhí)行某個(gè)命名緩沖區(qū)的內(nèi)容,例如
將cwgadfly^[刪除放到g緩沖區(qū)(執(zhí)行"gdd將該行刪除到g緩沖區(qū)) .現(xiàn)在無(wú)論什么時(shí)候只要把光標(biāo)放在一個(gè)單詞的開頭并輸入 @g ,文本中的單詞就將被替換成為gadfly
從ex中執(zhí)行緩沖區(qū)
除了在一般模式中執(zhí)行緩沖區(qū)以外,還可以在ex中,即命令模式中執(zhí)行緩沖區(qū),方法是相同的,例如在插入模式中輸入:
/cmp并刪除到a緩沖區(qū)后,在一般模式中輸入 :@a 過(guò)后就可以達(dá)到/cmp一樣的結(jié)果
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
