學習vi和vim編輯器(10):進階編輯方法(1)

來源:互聯網
上載者:User

標籤:vi編輯器   編程工具   

從本章開始將介紹一些vi和ex編輯器的進階功能。這一篇文章主要介紹如何自訂編輯環境,如何在vi中執行UNIX命令以及如何通過UNIX命令在vi中過濾文本。

自訂vi:

vi編輯器中有許多可以設定的選項,這些選項將影響vi編輯器的運作。

可以使用ex命令 " :set "在vi中改變選項。而且,只要vi被開啟,就會讀取位於你的主目錄的" .exrc "檔案,以取得vi的相關設定。在這個檔案中使用" :set "命令,就可以改變vi的運作方式。除此之外,可以在目前的目錄中建立" .exrc "檔案,從而在不同的目錄中使用不同的選項來初始化vi。但是首先是主目錄下的" .exrc "檔案先被執行,然後才是目前的目錄的" .exrc "檔案。除此之外,任何儲存在環境變數EXINIT中的命令都會在vi開啟時執行。EXINIT中的設定會比主目錄中的" .exrc "檔案先執行。

:set 命令:" :set "命令可以改變兩種類型的選項:一種是切換選項,只能選擇開啟與關閉,另一種可接受數值或字串值。要將某個切換選項開啟,使用 " :set option", 要將某個切換選項關閉,使用 " :set nooption "。而對於要設定某些值的選項,可以使用等號(=)來設定這些選項。通過" :set all "會顯示選項的完整列表,包括使用者的設定值和vi所選擇的預設值。通過 " :set option? " 來查看某個選項的當前值。命令 " :set "用於顯示特別更改或設定過的選項,這些選項可以是在" .exrc "檔案或者是在當前編輯會話中設定過的選項。

.exrc檔案:控制vi環境的" .exrc "檔案位於你的主目錄中(home目錄)。如果主目錄中沒有" .exrc "檔案,可以使用vi建立。可以在" .exrc "檔案中寫入設定vi選項的命令,而且這個檔案實際上是由ex讀入,所以在" .exrc "檔案中輸入的命令前面不需要加冒號。如所示,設定tab鍵佔4個空格:


vi除了讀取主目錄中的" .exrc "檔案,還可以讀取目前的目錄中的" .exrc "檔案,這樣就可以在不同的目錄下設定不同的選項。但是在vi讀取目前的目錄中的" .exrc "檔案之前,首先需要在你的主目錄中的 " .exrc "檔案中設定exrc選項,即set exrc。

還可以將選項設定儲存到" .exrc "以外的檔案,並用 " :so "命令讀入即可(so為source的縮寫)。

一些有用的選項:vi編輯器中可以設定的選項非常多,其中很多是給vi內部使用的,通常不需要修改。這裡介紹幾個有用的選項:

(1)選項wrapmargin用於指定行結尾到右邊界的距離,這樣當輸入的一行超過該限制時,便可以自動換行(只會在空白處換行)。但實際測試時,感覺wrapmargin選項並不是很好用。如果想設定一行的寬度,還可以使用textwidth選項;

(2)另外有三個選項可以控制vi搜尋時的動作,例如搜尋時是否忽略大小寫,是否回到檔案開頭繼續搜尋,模式比對時是否辨識萬用字元,這三個選項的預設值分別為noignorecase,wrapscan,magic;

(3)編程者可能感興趣的選項: autoindent(自動縮排),showmatch(括弧的匹配),tabstop(tab鍵占幾個空格), number(顯示行號),list(將tab鍵列印為^I,行結尾標記為$等);

(4)autowrite選項:當設定該選項時,如果下達" :n "命令以切換到下一個檔案,或者使用" :! "來執行shell命令時,vi都會自動將更改過的緩衝區內容寫入磁碟。

執行UNIX命令:

使用vi時,可以顯示或者讀入任何UNIX命令所產生的結果。驚嘆號會告訴ex建立一個shell,並將後續的文本視為UNIX命令,即" :!command "。如果想要執行一系列命令,而中途不想回到vi,則可以使用" :!sh "來建立一個shell,然後通過CTRL+D來結束shell並回到vi。

" :read "命令可以與UNIX命令結合使用,把UNIX命令的執行結果讀入到檔案中。在" :read "命令前面加上行地址,便可以在指定行的下一行插入命令的執行結果,否則預設是插入到當前行的下一行。如所示,讀入當前的路徑並插入到檔案中:


通過命令過濾文本:

文字區塊也可以作為UNIX命令的標準輸入,這個命令的輸出則替換了緩衝區中原來的文本。因此可以在ex或vi中通過命令來過濾文本。ex是通過行地址來指定文字區塊,而vi則是通過文字物件(移動命令)來指定文字區塊。

用ex過濾文本:如所示,對檔案的前5行進行排序:


用vi過濾文本:用vi過濾文本的命令形式為 " !textobject command "。因此如果當前游標處於檔案的第一行,可以輸入" !4j sort "來對檔案的前5行排序。這裡需要注意,當輸入驚嘆號時,vi編輯器並不顯示任何內容,當輸入"4j"之後,vi編輯器則顯示如下內容:


接著再輸入sort命令即可。從中可以發現,用vi過濾文本其實還是通過ex來過濾文本(vi編輯器使用的底層編輯器就是ex行編輯器)。除了使用該命令,還可以使用" !5!sort ",其中第二個驚嘆號代表當前行的意思,而前面的數字代表重複的意思。


本章vi命令總結:

" :set option "," :set nooption "," :set all "," :set option? "," :set ",wrapmargin選項,textwidth選項,ignorecase選項,wrapscan選項,magic選項,autoindent選項,showmatch選項,tabstop選項,number選項,list選項,autowrite選項," :!command "," :r !command "," :linenum, linenum  !command ", "  !textobject command。 "



學習vi和vim編輯器(10):進階編輯方法(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.