本章將學習vi同類品提供的相干功能。
它們都是我兄弟:
有許多可以自由獲得的vi編輯器同類品。《vi和vim編輯器》重點介紹了vim編輯器,也扼要地介紹了另外3種經常使用的同類品:nvi,elvis,vile。這些同類品都提供了vi以外的許多擴大功能,雖然方式可能不同,但這些同類品通常會提供相同的擴大功能。本篇文章將整體介紹這些同類品提供的擴大功能。
多窗口編輯:可以將屏幕分割成多個“窗口”,從而在每一個窗口編輯不同的文件,或視察同1文件的不同部份。這使得同時在多個文件中工作更加容易,在文件間剪貼文本也更加方便。
圖形用戶界面:除nvi以外,所有同類品都可以編譯成支持X Window界面。
擴大的正則表達式:之前已學習過了vi編輯器中可用于搜索和替換模式的正則表達式元字符。每種同類品都提供了某種情勢的擴大正則表達式,但每種擴大方式的“風味”都與眾不同。
增強的標簽:"Exuberant ctags"程序是ctags的同類品。比UNIX上的ctags功能更強大。可以產生擴大的tags文件格式,讓標簽的搜索與匹配處理更加靈活,更加強大。以下是"Exuberant ctags"的特點功能:
傳統的tags文件有3個以制表符分隔的字段:標簽名稱(1般是標識符),包括標簽的源文件,和何處可找到標識符的唆使符。唆使符可以是簡單的行號,或是以斜線或問號括起的nomagic搜索模式。新的格式向下兼容傳統格式。前面3個字段依然相同:標簽,文件名稱與搜索模式。Exuberant ctags只會產生搜索模式,而不是任意的命令。擴大的屬性會放在用于分隔的 " ;" "分隔符后面。屬性間以tab字符分隔,每一個屬性均由以冒號分隔的兩個子字段組成,第1個子字段是描寫屬性的關鍵字,默許為kind(此時可以省略),第2個則是實際的值。擴大的ctags關鍵字可以參考《vi和vim編輯器》p144。以下圖所示,為擴大tags文件的1個示例:
位于該tags文件前面的以" !_TAG_ "開頭的初始化標簽,對辨別創建文件的程序很有幫助。而且編輯器也可能會用這些特殊標簽來實現特殊的功能。以后便是相應的標簽定義。
標簽棧:每種vi同類品都擴充了保護標簽棧的功能。每次通過" :tag "命令或vi中的" ^] "命令搜索某個標簽時,編輯器會先保存當前的位置。這樣以后就能夠使用vi編輯器的"CTRL + T"命令或ex命令回到保存起來的位置。vim的標簽棧功能將在后續文章進1步學習。改進的編輯工具:所有的同類品都提供了編輯ex命令行,不限次數的撤消,任意長度的行與8位數據,增量搜索,將屏幕從左往右轉動以代替繞排太長的行,可視模式,和模式唆使器等其它特性。
編程輔助:
vi是為編程者開發的編輯器,它提供了1些功能,使得傳統的UNIX編程者(編寫C程序和troff文檔的人)工作起來更容易。vi的同類品在此基礎上,提供了更多功能:
編輯-編譯的加速:在編譯期間,完全不需要離開編輯器,而且可以獲得編譯器的輸出,并自動跳到包括毛病的行上。語法高亮:將代碼中的不同語法元素用不同的色彩與字體來顯示。
本章vi命令總結:
本章主要介紹了部份vi同類品(vim,nvi,elvis,vile)提供的擴大功能。后續文章將重點學習vim編輯器的各種擴大功能細節。