跳轉到內容

Unix 指南/解釋/編輯器簡介

來自華夏公益教科書

編輯器簡介 簡要介紹了常見的 Unix 文字編輯器,並提供了更多資訊的連結。

許多讀者可能熟悉帶有圖形使用者介面的文字編輯器,例如 Windows 的 Notepad,Mac OS X 的 TextEdit(在無樣式文字模式下),GNOME 的 GEdit,或者 KDE 的 KEdit 或 KWrite。其他讀者只知道文字處理器,它類似於文字編輯器,但具有額外的功能,可以將樣式和佈局應用於文字。文字編輯器只處理文字字元序列,所有字元都使用相同的字型。

本章的方法是介紹最早的 Unix 文字編輯器,並逐步介紹 Notepad 式編輯器。早期的編輯器缺乏許多編輯器的常見功能。

文字編輯器的必要性

[編輯 | 編輯原始碼]

使用命令列但不知道如何使用文字編輯器的人仍然可以使用 cat 工具和 shell 重定向功能建立文字檔案(“document”的錯誤拼寫是有意的)。

$ cat > newfile
We the people, promoting the common keyboard
and preserving a more perfect docmument for all,
do ordain and establish three lines of text.

(注意:在輸入 cat > newfile 後,游標將等待使用者輸入文字(在本例中為:"我們人民,[...])。輸入所有所需的文字後,應鍵入 RETURN CONTROL-D 以退出cat工具。)

假設需要更改此檔案。在本例中,“docmument”拼寫錯誤;應該是 document。其他需求可能是修改此句和新增更多句子。

可以使用以下命令將內容追加到檔案cat >> newfile,但會保留前幾行不變。可以使用以下命令替換它cat > newfile再次,但這需要重新鍵入整個檔案。(使用 X11 等圖形使用者介面的使用者有一個優勢:他們可以使用滑鼠在“docmument”之前複製和貼上文字,鍵入更正,然後複製和貼上文字的其餘部分。)

一個有趣的選擇是,如果有一種方法可以從“docmument”中刪除多餘的“m”,並處理更復雜的任務,如插入單詞和重新排列文字。

第一個執行此操作的編輯器之一是 ed,它是“edit”的縮寫。它具有 Windows Notepad 的許多功能,但也缺少許多功能。觀察啟動“ed”時發生的情況。在這裡,“newfile”是要編輯的文字檔案的名稱。

$ ed newfile
139

將顯示一個數字(這裡是“139”)。然後程式似乎停止了,但沒有出現 shell 提示符。實際上這是“ed”在等待命令。在許多計算機上,“ed”實際上沒有提示符。

“139”表示“ed”已讀入了 139 個字元,現在可以進行編輯。我們說檔案是開啟的。從 C 程式設計師的角度來說更準確地說,檔案已開啟並被複制到一個緩衝區中。緩衝區而不是檔案是開啟的。這意味著直到我們儲存檔案,磁碟或儲存裝置都不會受到干擾。其他文字編輯器仍然遵循這種行為,開啟檔案,將它們複製到緩衝區,並要求使用者儲存以將檔案寫回磁碟。

請注意,與許多編輯器不同,“ed”尚未顯示檔案的文字。我們鍵入一個命令,p來做到這一點。

$ ed newfile
139
,p
We the people, promoting the common keyboard
and preserving a more perfect docmument for all,
do ordain and establish three lines of text.

該命令大致翻譯為,對於檔案中的每一行(“,”),“p”rint 該行到標準輸出。

現在要進行實際編輯,我們使用一個命令2s/docmument/document.

$ ed newfile
139
,p
We the people, promoting the common keyboard
and preserving a more perfect docmument for all,
do ordain and establish three lines of text.
2s/docmument/document
and preserving a more perfect document for all,

對於第“2”行,“s”ubstitute 第一個例項“docmument”為“document”。在這裡,“ed”列印了緩衝區中已更改的行。

我們執行另外兩個命令,“w”將緩衝區寫回newfile到磁碟上,“q”退出“ed”。如果我們忘記“w”,那麼我們的編輯將丟失。

$ ed newfile
139
,p
We the people, promoting the common keyboard
and preserving a more perfect docmument for all,
do ordain and establish three lines of text.
2s/docmument/document
and preserving a more perfect document for all,
w
138
q

我們只做了一個小的更改,但這已經需要四個命令。更糟糕的是,當我們誤輸入命令時,“ed”錯誤訊息並不有用。許多 Unix 使用者從不費心學習“ed”。對於感興趣的讀者,本書有一章 ed 和 sed(當有人寫那章的時候)。

ex 是一個行編輯器,是ed 的繼任者,也是vi 的祖先。

連結

在某個時候,Unix 系統引入了影片螢幕,允許 Unix 在螢幕上的任何位置繪製。有人決定建立一個“可視編輯器”會很好,它允許使用者在檔案中移動游標(就像使用“cat”或 ed “p”命令一樣)並進行更改。該程式的名稱是 vi,它是“VIsual editor”的縮寫。因此,該程式的命名者希望人們稱它為“vee eye”,而不是“vee”或“six”。

觀察啟動“vi”時發生的情況。首先鍵入以下命令

$ vi newfile

然後螢幕將清除並變為如下

We the people, promoting the common keyboard
and preserving a more perfect document for all,
do ordain and establish three lines of text.
~
~
~
~
newfile: unmodified: line 1

如果使用的是不同版本的“vi”,螢幕可能看起來不同。您的螢幕也可能包含八行以上。但是,所有版本的“vi”都具有以下兩個功能

  • “~”表示不存在的行(儘管您可以鍵入一個只有“~”的行以使其混亂)
  • 底部有一個狀態行,這裡顯示“newfile: unmodified: line 1”

在許多計算機上,您可以使用箭頭鍵移動游標。如果不起作用,您可以使用標準的“vi”鍵

  • [h] 向左移動,[j] 向下移動,[k] 向上移動,[l] 向右移動

例如,您可以按下[l] 十五次將游標從“We”中的“W”移動到“promoting”中的“p”。(事實上,作為一種快捷方式,vi 允許您按下[1] [5] [l](一,五,埃爾)。這將數字“15”提供給[l] 命令,在本例中表示重複命令十五次。)因此,您可以透過檔案移動游標,這在 ed 中是不可能的。

但如果我們想鍵入字母“l”而不是移動游標呢?按下[i],這是一個將 vi 編輯器從命令模式切換到插入模式的命令。然後鍵入一些內容。在這裡,使用者將游標放在“promoting”中的“p”上,鍵入了[i],然後鍵入了“nominally ”(包括一個空格)

We the people, nominally promoting the common keyboard
and preserving a more perfect document for all,
do ordain and establish three lines of text.
~
~
~
~

請注意,某些版本的“vi”(例如本版本)預設情況下永遠不會在螢幕上顯示編輯器是否處於命令模式或插入模式。

要退出插入模式,請按[ESC] 退出。要儲存並退出編輯器,請鍵入[:] [w] [q] [RETURN],這將在冒號提示符處輸入“wq”。

要詳細瞭解 vi,請閱讀華夏公益教科書 學習 vi 編輯器

在新一代的 Linux 和 Unix 作業系統中,釋出了 VI 編輯器的改進版本,稱為 vim(版本 7 最新版)。VIM 幾乎包含了 VI 的所有功能,還包括顏色編碼螢幕、突出顯示和文件中的拼寫檢查。

emacs 是在與 vi 同時開發的,它為文字編輯提供了一種不同的正規化。它允許透過一個名為 emacs-LISP 的編輯器內程式語言進行自定義,它是一個無模式編輯器(與 vi 不同,vi 是一個模態編輯器)。

emacs 的啟動方式與 vi 非常相似 -

$ emacs newfile

它將顯示一個類似於以下內容的螢幕

File Edit Options Tools Buffers Help

We the people, promoting the common keyboard,
and preserving a more perfect document for all,
do ordain and establish three lines of text.


--- GNU EMACS ----------------------------------

使用箭頭鍵在檔案中移動。

只需鍵入即可輸入文字,其他基本功能(如刪除)可以使用傳統的鍵盤鍵完成。

例如,要將文字 protecting 新增到 preserving 的位置,只需將游標向下移動到 preservinga 之間的空格,然後按 DELETE 鍵十次。然後,只需鍵入 protecting

要儲存檔案,請使用鍵盤快捷鍵 CTRL-x CTRL-s,即按住控制鍵並按字母 x。鬆開控制鍵。然後,按住控制鍵並按字母 s。(要使用新名稱儲存檔案,請鍵入 CTRL-x CTRL-w,然後 emacs 將提示您輸入新檔案的名稱。)儲存檔案後,請按 CTRL-x CTRL-c 關閉 emacs 並返回到 shell。

華夏公益教科書