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

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