第七章 高級(jí)編輯
定制vi
vi的設(shè)置選項(xiàng)影響它的操作方式,可以在vi中使用ex的 :set 命令修改這些選項(xiàng). 而且,無(wú)論vi什么時(shí)候啟動(dòng),它都要讀取 主目錄 下的 .exrc文件 以獲得進(jìn)一步的操作指令。通過(guò)在文件中放置:set命令,就可以在使用vi的任何時(shí)候改變它的操作方式。vi首先執(zhí)行主目錄下的.exrc文件,然后才執(zhí)行當(dāng)前目錄下的.exrc文件,儲(chǔ)存在shell變量 EXINIT 中的任何命令都將在vi啟動(dòng)時(shí)執(zhí)行并覆蓋主目錄.exrc文件的設(shè)置。
:set命令
有兩種類型的選項(xiàng)可以使用:set命令進(jìn)行修改:不是開(kāi)就是關(guān)的 觸發(fā)選項(xiàng) 和 帶數(shù)字或字符串 值的選項(xiàng)(如頁(yè)邊距的位置和文件名)。開(kāi)啟觸發(fā)選項(xiàng)的命令為:
:set option
關(guān)閉觸發(fā)選項(xiàng)的命令為:
:set no option
:set ic ????指定模式搜索忽略大小寫(xiě)
:set noic ????搜索時(shí)不忽略大小寫(xiě)
:set window= n ????設(shè)置"窗口大小"就是active的buffer,在使用^F和^B的時(shí)候起效,向前(后)移動(dòng)max(n-2, 1)行
:set all 查看所有的選項(xiàng)設(shè)置情況,可以使用:h[elp] ' option '來(lái)尋求幫助
:set option ? ????查看命令當(dāng)前值
:set ????顯示在.exrc文件或當(dāng)前會(huì)話期間明確修改和設(shè)置過(guò)的選項(xiàng)
.exrc文件
控制vi環(huán)境的.exrc位于主目錄下,把將在使用vi或ex時(shí)產(chǎn)生影響的 set ab和map命令 輸入到該文件中,命令前面 不需要有冒號(hào)
替換環(huán)境
除了讀取主目錄下的.exrc文件外,還可以讓vi讀取當(dāng)前目錄下名為.exrc的文件
可以讀取另外名字的文件設(shè)置vi環(huán)境,例如
:so[urce] .progoptions
一些有用的選項(xiàng)
:set textwidth=10 ????讓每行的寬度不超過(guò)10,但是只能在空白處斷行
:set wrapmargin=10 ????讓每行到右邊界上的寬度不少于10,但是只能在空白處斷行
:set magic ????讓正則表達(dá)式中.和*有特殊意義 /\v 更厲害名曰:very magic就和egrep使用一樣了
:set wrapscan ????讓模式搜索的時(shí)候不要一圈一圈的找,找不到了就不要繞圈子
:set autoindent???? ????讓下一行和這一行的縮進(jìn)相同
:set tabstop=4???? ????設(shè)置Tab鍵在vim中移動(dòng)量為4,默認(rèn)為8
:set shiftwidth=4 ????設(shè)置自動(dòng)縮進(jìn)量為4,可以和tab不一樣,最好一樣
:set showmatch ????找到匹配的括號(hào),給出閃爍提示
:set list???? ????????列出tab鍵^I和回車鍵$
:set autowrite ????????在調(diào)用:n命令移動(dòng)到下個(gè)文件進(jìn)行編輯時(shí)和使用:!運(yùn)行shell命令之前將自動(dòng)寫(xiě)出已修改的緩沖區(qū)內(nèi)容
執(zhí)行UNIX命令
在vi中進(jìn)行編輯時(shí),可以顯示或讀取任何UNIX命令的執(zhí)行結(jié)果.感嘆號(hào)!可以指定vi創(chuàng)建一個(gè)shell并把它后面的內(nèi)容看成UNIX命令:
:! command
通過(guò) :sh命令 可以創(chuàng)建一個(gè)shell,跟 :!sh 命令創(chuàng)建的shell不一樣,后者功能很弱,不知道為什么會(huì)這樣
:r !date 可以將date得到的結(jié)果插入到當(dāng)前行以下
:r !sort phone 會(huì)讀取"phone"排序后的內(nèi)容
使用命令過(guò)濾文本
把( 緩沖區(qū)中 )文本塊作為標(biāo)準(zhǔn)輸入發(fā)送給UNIX命令,該命令的輸出將取代緩沖區(qū)中( 對(duì)應(yīng) )的文本.可以使用ex或vi的命令對(duì)文本進(jìn)行過(guò)濾,區(qū)別在于:ex使用 行地址 指示文本塊,vi使用 文本目標(biāo)(移動(dòng)命令) 指示文本塊.
使用ex過(guò)濾文本
:28,34!sort ????使用sort對(duì)第28行到第34行進(jìn)行過(guò)濾,并用sort的輸出取代這些行
使用vi過(guò)濾文本
在vi中,依次輸入 感嘆號(hào) 任何指示文本塊的 vi移動(dòng)鍵 和所要執(zhí)行的 UNIX命令 ,即可使用該UNIX命令對(duì)文本進(jìn)行過(guò)濾,例如:
!) command ???? 表示過(guò)濾該句
由于都是 行過(guò)濾 ,因此需要選擇的范圍 >1才會(huì)有效果,實(shí)際上都是將你選擇的范圍轉(zhuǎn)換為行后通過(guò) n !! command 命令轉(zhuǎn)發(fā)的
重復(fù)前面命令的語(yǔ)法是: !object!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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