學習 vi 編輯器/入門
|
學習 vi 編輯器: 入門 — 基本任務 — 使你的工作更容易 — 高階任務 — 細節 — Vi 克隆 (Vim – 基本導航 – 模式 – 提示和技巧 – 對程式設計師有用的知識 – 增強 Vim – Vim 在 Windows 上 – VimL 指令碼語言, Vile, BB vi) — vi 參考 |
vi是一個功能強大的編輯器,在 Unix 和類 Unix 作業系統中無處不在,但也存在於許多其他作業系統上,甚至在 MS-DOS、Windows 和 Macintosh 上。如果不是原始的 vi,通常至少有一個很好的克隆在你的系統上執行。即使你使用其他編輯器,你也必須對 vi 有一定的瞭解,因為你是管理員。有時,當你的電腦崩潰,只留下一個最小的系統供你修復時,vi 是唯一可用的編輯器。
vi,發音類似於'vee eye',最初是由 Bill Joy 在 1976 年為伯克利的 BSD Unix 編寫的,並且很快成為許多當時(原始)AT&T Unix 供應商特定版本的組成部分。後來它也被直接新增到 AT&T 的 System V Unix 中。Bill Joy 後來與人共同創辦了Sun Microsystems,併成為當時該公司的首席科學家。vi 代表視覺,並且是對經典 Unix 編輯器 ed 的巨大改進。ed 是一個行編輯器。如果你仍然熟悉 MS-DOS,那麼你可能知道 MS-DOS edlin 編輯器。ed 類似於 edlin,儘管比 edlin 更強大,但這並不意味著什麼。
vi 也有一個行模式,稱為 ex。事實上,有人可以爭辯說,該程式實際上是兩個編輯器合二為一,一個編輯器稱為 vi,另一個稱為 ex。在編輯過程中可以切換行模式和可視模式。也可以在啟動時選擇模式。然而,純粹的 ex 使用很少見。可視模式是主要的模式。
雖然 vi 代表視覺,但經典的 vi 主要透過字元鍵操作,而不是透過滑鼠或游標鍵操作。一旦你習慣了這一點,它就會變得非常方便,因為你的手移動到游標鍵或滑鼠上的次數更少。
vi 還充當 Unix 終端控制功能的一種孵化器。由於 vi 需要控制終端以及當時許多不同型別的終端,因此引入了termcap(終端功能)資料庫(後來被更靈活的terminfo 資料庫取代)。vi 的內部高階螢幕控制庫後來被分離出來,併成為curses - Unix 用於 CRT 螢幕處理的標準庫。
- <c>
- 單個字元,例如 'a' 或 '1'。
- <ESC>, <Ctrl-[>
- 表示應該按下鍵盤上的 Escape (Esc) 鍵,這與 Control 和 '[' 相同。
- <CR>
- 表示應該按下回車 (Enter) 鍵。
- <TAB>
- 表示應該按下 Tab 鍵
- <Ctrl-x>, <C-x>
- 表示應該同時按下 Control 鍵和 'x' 鍵。'x' 可以是鍵盤上的幾乎任何其他鍵。
- <Shift-x>, <S-x>, <X>
- 表示應該同時按下 Shift 鍵和 'x' 鍵
- <Meta-x>, <M-x>
- 表示應該同時按下 Meta 或 Alt 鍵和 'x' 鍵。
- :quit, :q
- 一個 Ex 命令。以 <:> 開頭,後面跟著命令,最後以 <CR> 結尾。對於許多 Ex 命令,有長格式 (:quit) 和短格式 (:q)。
- :set nocompatible
- 表示一個設定。
- strlen ()
- 表示一個函式。
- /pattern/, ?pattern?
- 一個搜尋模式。vi 中的搜尋模式是 正則表示式。
- :ranges/search/replace/options, :global /pattern/ delete
- 一個搜尋模式與一個 Ex 命令結合。
vi 中的所有命令都區分大小寫。
unix-command(section)
- 本書有時會引用 Unix 命令。首次出現時,該命令名稱以典型的 Unix 風格書寫。這種風格包括命令名稱,後面跟著命令描述所在的聯機幫助頁部分,括在括號中。例如,sed(1) 指的是 Unix 的 sed 命令,它通常在 Unix 聯機幫助頁的第 1 部分中記錄(sed 是 Unix 流編輯器;一個無需使用者互動即可操作文字的工具)。
如果你正在執行 Unix 系統或類 Unix 系統(為簡單起見,從現在開始我們將兩者都稱為“Unix 系統”),例如 BSD 或 Linux 發行版,甚至 Mac OS X,那麼你一定在你的系統上安裝了 vi 或其變體之一。
如果你正在執行 Windows,你可以獲得一個名為 "vim" 或 "elvis" 的 vi 版本。如果你在舊的 Mac OS(OS X 之前)系統上,你可以從 這裡 獲取 MacVim Classic。
如前所述,vi 有許多變體。它們之所以被建立是因為 vi 只能在相當昂貴的 Unix 作業系統上使用。雖然 vi 本身以及 nvi 是在伯克利為免費的 BSD Unix 變體建立的,但 BSD Unix 的使用需要原始的 AT&T Unix 許可證(這後來發生了變化,見下文)。例如,原始的 vi 使用了 AT&T 的 ed(1) 編輯器的程式碼。
隨著時間的推移,BSD 替換了大部分原始的 AT&T 程式碼,直到今天 BSD 中不再有這樣的程式碼,也不再需要原始的 Unix 許可證。作為替換 BSD 中所有 AT&T 程式碼工作的一部分,Keith Bostic 承擔了建立 vi 克隆的任務,該克隆沒有 AT&T 程式碼,稱為 nvi。nvi 隨後成為 BSD 的標準 vi,而不是原始的 vi。另一個 vi 克隆是 Elvis,由 Steve Kirkendal 編寫。
隨著時間的推移,nvi 進行了增強——例如,支援多個視窗——但最初它並不是為了增強而設計的,而只是“僅僅”是一個純粹的克隆。
BSD 的原始 vi(內部包含 ed 程式碼)繼續作為與 System V Unix 一起釋出的 vi,因為 AT&T 很久以前就決定從 BSD 中獲取它並將其新增到官方 Unix 中。當然,AT&T 對 AT&T Unix 許可證沒有問題,所以他們可能從未替換過原始 vi 中的 ed 程式碼。
然而,有些人仍然認為 nvi 太簡陋了,於是 vim 誕生了。vim(vi-improved),是另一個擴充套件 vi 功能的嘗試。與 nvi 不同的是,vim 進一步擴充套件了 vi 的功能。然而,有些人發現 vim 往往過於強大。vim 有兩種變體,一種是純文字版本,另一種是 GUI 版本,後者稱為 gvim。
其他 vi 克隆包括前面提到的 elvis 和 stevie。這些克隆誕生於 CP/M 和家用電腦領域,旨在將該編輯器也帶到這些平臺上。當然,它們後來被移植到 MS-DOS 和 Windows。如今,vim 似乎是免費/開源平臺和專有平臺上最流行的 vi 克隆。
您應該選擇您覺得最舒服的版本——如果您對您使用的編輯器感到不滿,它會影響您的工作效率。
如果您執行的是 Unix 系統,則可以透過鍵入以下命令啟動 vi
vi<CR>
在命令列中。如果您執行的是 X,並且使用的是 GNOME、KDE、CDE/Motif 或 OpenLook 等桌面,您可能會有一個方便的啟動按鈕來啟動編輯器——如果您有這樣的設定,您只需點選該圖示即可。
如果您使用的是 Windows 或 DOS,並且使用的是 elvis,則可以透過雙擊“winelvis.exe”來啟動 Windows 編輯器,或者在 DOS 中,您可以在命令列中鍵入“elvis”來啟動編輯器。
您將看到類似於以下螢幕的介面
~ ~ ~ ~ ~ ~ "No File"
要暫時退出,請按 Escape 鍵(編輯器應該發出蜂鳴聲),然後輸入三個字元 :q! 並按回車鍵
<ESC>:q!<CR>
在您輸入最後一個 <CR> 之前,螢幕將類似於以下介面
~ ~ ~ ~ ~ ~ :q!
:q! 是 :quit! 的簡寫形式,它退出編輯器,而不儲存。
您應該會回到您的作業系統(或者更確切地說,回到您啟動編輯器的 shell)。
還有其他方法可以退出,例如按 <Z><Z> (<Shift-z><Shift-z>) 將儲存所有未儲存的工作並退出編輯器。鍵入 :wq 將始終儲存,即使沒有未儲存的更改,然後退出編輯器。 :x 如果沒有未儲存的更改,將寫入並退出。 :wq 和 :x 需要您之前提供過檔名,因此它不適用於上述簡單示例。鍵入 :q 如果沒有進行任何更改,將退出;如果進行了更改,vi 將列印類似於“自上次更改後未寫入”的警告。
許多第一次使用 vi 的使用者都在這裡停住了,再也不碰 vi 了。如果您嘗試在啟動後輸入一些文字,您很可能會聽到一系列蜂鳴聲,並出現相當奇怪的行為。別擔心。對於 vi 來說,這是完全正常的,編輯器並沒有損壞。您很快就會明白為什麼這是 vi 的正常行為。
既然您已經知道如何啟動和退出編輯器,讓我們繼續學習如何在 vi 中完成任務vi: 請參閱 學習 vi 編輯器/基本任務
|
學習 vi 編輯器: 入門 — 基本任務 — 使你的工作更容易 — 高階任務 — 細節 — Vi 克隆 (Vim – 基本導航 – 模式 – 提示和技巧 – 對程式設計師有用的知識 – 增強 Vim – Vim 在 Windows 上 – VimL 指令碼語言, Vile, BB vi) — vi 參考 |