3.4. vi 編輯器

許多的系統管理工作及程式設計仍然會用到文字編輯器。在 Unix 的世界中,vi 作為編輯器的表現十分突出,因為它提供了便利的編輯功能,而且支援滑鼠因而較其他編輯器更符合人體工學。

3.4.1. 運作模式

[Note]按鍵的顯示

以下列出一些在 vi 中可以用按鍵輸入的指令。這些按鍵會依照鍵盤上的方式,以大寫字母顯示。如果您必須輸入大寫按鍵,便會以包含 Shift 鍵的按鍵組合方式明確顯示。

基本上,vi 使用三種運作模式:插入模式、指令模式及延伸模式。按鍵會因為模式而有不同的功能。啟動時,vi 通常設定為「指令」模式。第一件要學習的事就是如何切換這些模式:

指令模式切換到插入模式

方法有很多種,包括輸入 A 為附加、I 為插入或 O 為在目前的行中插入新行。

插入模式切換到指令模式

Esc 鍵可離開「插入」模式。您無法在「插入」模式中終止 vi,因此習慣按 Esc 鍵是很重要的。

指令模式切換到延伸模式

vi 的「延伸」模式可以藉由輸入冒號 (:) 來啟動。延伸ex 模式類似獨立的命令行編輯器,可用來處理各種簡單與更複雜的工作。

延伸模式切換到指令模式

延伸模式中執行完指令後,編輯器會自動回到指令模式。如果您決定不要執行 「延伸」模式中的任何指令,請用 <— 鍵刪除冒號。編輯器便會回到指令模式。

您無法直接從插入模式切換到延伸模式,而不先切換到指令模式。

vi 像其他的編輯器一樣,都有自己的終止程式的程序。您無法在「插入」模式中終止 vi。首先,按 Esc 鍵離開插入模式。然後,您會有兩種選項:

  1. 不儲存就離開: 若要終止編輯器而不儲存變更,請在「指令」模式中輸入 : Q !。驚歎號 (!) 會讓 vi 忽略任何變更。

  2. 儲存並離開: 有許多方法可以儲存您的變更並終止編輯器。在「指令」模式中,使用 Shift-Z-Shift-Z。若要使用「延伸」模式離開程式並儲存所有的變更,請輸入 : W Q。在「延伸」模式中,w 代表寫入,而 q 代表結束。

3.4.2. 使用 vi

vi 可以用來做為一般編輯器。在「插入」模式中,輸入文字,然後用 <— 鍵與 Del 鍵刪除文字。使用方向鍵來移動游標。

不過,這些控制鍵常會造成問題,因為有很多種終端機使用特殊鍵碼。這就是指令模式派上用場之處。按 Esc 鍵從插入模式切換到指令模式。在指令模式中,請用 HJKL 等鍵來移動游標。這些鍵有下列功能:

H

向左移動一個字元

J

向下移動一行

K

向上移動一行

L

向右移動一個字元

指令模式中的指令都允許不同的變化。若要執行一個指令數次,只要在輸入實際的指令之前,輸入要重複的次數即可。例如,輸入 5 L 來將游標向左移動五個字元。

表格 3.1, "vi 編輯器的簡單指令" 顯示部份重要指令。此清單並不完整。節 3.4.3, "如需詳細資訊" 中的文件有更完整的清單

表格 3.1. vi 編輯器的簡單指令

Esc

變更至指令模式

I

變更至插入模式 (字元顯示在目前的游標位置)

A

變更至插入模式 (字元會插入目前的游標位置之後)

Shift-A

變更至插入模式 (字元會新增至行尾)

Shift-R

變更至取代模式 (覆寫舊文字)

R

取代游標下的字元

O

變更至插入模式 (新行會插入目前行的後面)

Shift-O

變更至插入模式 (新行會插入目前行的前面)

X

刪除目前的字元

D D

刪除目前的行

D W

刪除至目前文字的最後

C W

變更至插入模式 (目前文字的其他部份會被您輸入的下一個資料覆寫)

U

復原上次指令

Ctrl-R

重做已復原的變更

Shift-J

將以下行與目前行結合

.

重複上次的指令

3.4.3. 如需詳細資訊

vi 支援許多指令。它讓您可以使用巨集、捷徑、具名緩衝區及許多其他有用的功能。不同選項的詳細說明已超出本手冊的範圍。SUSE Linux 會隨附 vim (加強的 vi),也就是 vi 的加強版。有數個此應用程式的資訊來源:

[Important]VIM 授權

vim 是「慈善軟體」,意即作者不索取任何的軟體費用,但鼓勵您以捐款贊助,來支持非營利的專案計畫。此計劃懇求您幫助烏干達的貧困孩童。更多的資訊可在線上取得,網址為 http://iccf-holland.org/index.htmlhttp://www.vim.org/iccf/http://www.iccf.nl/