許多的系統管理工作及程式設計仍然會用到文字編輯器。在 Unix 的世界中,vi 作為編輯器的表現十分突出,因為它提供了便利的編輯功能,而且支援滑鼠因而較其他編輯器更符合人體工學。
附註: 按鍵的顯示
以下列出一些在 vi 中可以用按鍵輸入的指令。這些按鍵會依照鍵盤上的方式,以大寫字母顯示。如果您必須輸入大寫按鍵,便會以包含 Shift 鍵的按鍵組合方式明確顯示。
基本上,vi 利用三個作業模式:插入模式、指令模式,與延伸模式。按鍵會因為模式而有不同的功能。啟動時,vi 通常設定為「指令」模式。第一件要學習的事就是如何切換這些模式:
方法有很多種,包括輸入 A 為附加、I 為插入或 O 為在目前的行中插入新行。
按 Esc 鍵可離開「插入」模式。您無法在「插入」模式中終止 vi,因此習慣按 Esc 鍵是很重要的。
vi 的「延伸」模式可以藉由輸入冒號 (:) 來啟動。延伸或 ex 模式類似獨立的命令行編輯器,可用來處理各種簡單與更複雜的工作。
在延伸模式中執行完指令後,編輯器會自動回到指令模式。如果您決定不要執行 「延伸」模式中的任何指令,請用 Backspace 鍵刪除冒號。編輯器便會回到指令模式。
您無法直接從插入模式切換到延伸模式,而不先切換到指令模式。
vi 像其他的編輯器一樣都有自己的終止程式的程序。您無法在「插入」模式中終止 vi。首先,按 Esc 鍵離開插入模式。然後,您會有兩種選項:
不儲存離開:若不想除存變更而響終止編輯器,請按:+Q+!於指令模式中。驚歎號 (!) 會讓 vi 忽略任何變更。
儲存與終止:有許多方法可以儲存您的變更並終止編輯器。在指令模式中,使用Shift+Z Shift+Z。若要使用延伸模式離開程式並儲存所有的變更,請輸入:+W+Q。在「延伸」模式中,w 代表寫入,而 q 代表結束。
vi 可以用來做為一般編輯器。在插入模式中,輸入文字,然後用 Backspace 鍵與 Del 鍵刪除文字。使用方向鍵來移動游標。
不過,這些控制鍵常會造成問題,因為有很多種終端機使用特殊鍵碼。這就是指令模式派上用場之處。按 Esc 鍵從插入模式切換到指令模式。在指令模式中,請用 H、J、K 及 L 等鍵來移動游標。這些鍵有下列功能:
向左移動一個字元
向下移動一行
向上移動一行
向右移動一個字元
指令模式中的指令都允許不同的變化。若要執行一個指令數次,只要在輸入實際的指令之前,輸入要重複的次數即可。例如,輸入 5+L 來將游標向左移動五個字元。
表 15-2顯示部份重要指令。此清單並不完整。節 15.4.3, 如需更多資訊中的文件有更完整的清單
表 15-2 vi 編輯器的簡單指令
Esc |
變更至指令模式 |
I |
變更至插入模式 (字元顯示在目前的游標位置) |
A |
變更至插入模式 (字元會插入目前的游標位置之後) |
Shift+A |
變更至插入模式 (字元會新增至行尾) |
Shift+R |
變更至取代模式 (覆寫舊文字) |
R |
取代游標下的字元 |
O |
變更至插入模式 (新行會插入目前行的後面) |
Shift+O |
變更至插入模式 (新行會插入目前行的前面) |
X |
刪除目前的字元 |
D+D |
刪除目前的行 |
D+W |
刪除至目前文字的最後 |
C+W |
變更至插入模式 (目前文字的其他部份會被您輸入的下一個資料覆寫) |
U |
復原上次指令 |
Ctrl+R |
重做已復原的變更 |
Shift+J |
將以下行與目前行結合 |
。 |
重複上次的指令 |
vi 支援許多指令。它讓您可以使用巨集、捷徑、具名緩衝區及許多其他有用的功能。不同選項的詳細說明已超出本手冊的範圍。SUSE Linux Enterprise 會隨附 vim (加強的 vi),也就是 vi 的加強版。有數個此應用程式的資訊來源:
vimtutor 是 vim 的互動式教學課程。
在 vim 中,請輸入 :help 指令以取得很多的說明主題。
關於 vim 的書籍可以在線上取得,網址為 http://www.truth.sk/vim/vimbook-OPL.pdf。
vim 計劃的網頁位於 http://www.vim.org,網站中會有所有的新聞、郵件清單及其他的文件。
網際網路也有不少的 Vim 來源:http://www.selflinux.org/selflinux/html/vim.html、http://www.linuxgazette.com/node/view/9039與http://www.apmaths.uwo.ca/~xli/vim/vim_tutorial.html。請參閱http://linux-universe.com/HOWTO/Vim-HOWTO/vim-tutorial.html取得更多有關教學課程的連結。
重要: VIM 授權
vim 是慈善軟體
,意即作者不索取任何的軟體費用,但鼓勵您以捐款贊助,來支持非營利的專案計畫。此計劃懇求您幫助烏干達的貧困孩童。更多的資訊可在線上取得,網址為 http://iccf-holland.org/index.html、http://www.vim.org/iccf/ 及 http://www.iccf.nl/。