Emacs 教程中文版(轉)

post0發表於2007-08-11
Emacs 教程中文版(轉)[@more@]

Emacs 的命令通常包括控制鍵(就是上面標有 Ctrl或Ctl的那個)或者 是META鍵(上面標

有EDIT或ALT)。為了方便起見我們將用下面的縮寫來 代替這些鍵的全稱:

C- 意思是當敲入字元時同時按住控制鍵,因此,C-f表 示:按住控

制鍵並且按 f 。

M- 表示當鍵入時按住META或ALT或EDIT鍵。如果沒有META 或ALT或

EDIT鍵,則用ESC鍵代替。表示ESC鍵

注意:退出Emacs,按C-x C-c(兩個字元)。在文字左邊區域的“>>”符號 表示讓你試著

使用一個命令。比如:

>> 現在鍵入C-v(觀看下一屏)移動到下一屏。(就象前面說的,按v的同時 也按住控制鍵

)。從現在開始,每當你讀完一屏的時候都可以用它來翻屏。

注意在翻屏後會保留上屏的最後一行;這是為你繼續閱讀文字提供某些連 貫性。

你所需要知道的第一件事是如何把游標從一個地方移動到另一個地方。你 已經知道了如

何向前翻一屏--用 C-v。要向後翻一屏,鍵入M-v。

>> 試著鍵入 M-v 和 C-v 幾次。

* 摘要(SUMMARY)

---------------------------

下面幾個命令對整屏觀看時有用:

C-v 向前翻一整屏。

M-v 向後翻一整屏。

C-l 清除螢幕並重新顯示所有的文字,然後把游標移動到螢幕的中

央。 (注意是Control-L,而不是 Control-1)。

>> 尋找游標,並且注意它在文字里的位置。然後鍵入C-l。再尋找游標你會 注意到游標

現在會出現在同樣的文字附近。

* 基本游標控制(BASIC CURSOR CONTROL)

-----------------------------------------------------------------

整屏整屏的移動是很有用的,可是如何把游標移動到螢幕上文字里的一個指定 的地方呢

有好幾個方法可以實現。最基本的方法是用命令 C-p,C-b,C-f,和C-n。這些 命令每

個都使游標在螢幕上往特定的方向移動一行或者一列。下面是一個圖表 顯示了這四個命

令和它們所移動的方向:

上一行,C-p

:

:

向前,C-b ...... 當前游標的位置 ...... 向後,C-f

:

:

下一行,C-n

>> 用C-n或C-p把游標移動到圖表中間。然後鍵入C-l會看到整個圖表出現在屏 幕的中央

你也許會發現這些字母很容易記住:P 代表上面的(previous),N 代表下一個 (next),

B 代表向前(backward),F 代表向後(forward)。這些是基本的游標位 置命令,你將經

常會用到它們。所以現在學習它們很有好處〕

>> 用幾次 C-n 把游標向下移動到這一行。

>> 用 C-f 把游標移動到行裡,再用C-p把游標上移。觀察當游標在行的中間時 C-p做了

些什麼。

每一個文字行都以一個換行符結尾,它用來當作行與行之間的分格。你的檔案的 最後一

行的尾部應該有一個換行符(但Emacs並不要求一定要有一個)。

>> 試著在行的開頭使用C-b。它將會把游標移到上一行的末尾。這是因為它向後 移的時

候穿過了換行符。

C-f 也能象 C-b一樣穿過換行符。

>> 使用幾次C-b,使您能知道游標在哪。然後用C-f移動到行的末尾。然後再用 一次C-

f,使游標移動到下一行。

當你移動超過螢幕的頂部或底部,游標回移動到下一屏的中間,這叫做“滾屏 (scroll

ing)”。它使得Emacs滾屏移動到文字上指定的部位而不是移出螢幕。

>> 試著用C-n把游標移過螢幕的底部,看看回發生什麼。

如果覺得一個一個字元的移動太緩慢,可以一個單詞一個單詞的移動。M-f(Meta-f) 向

前移一個單詞,M-b向後移一個單詞。

>> 鍵入幾個M-f和M-b。

當游標在一個單詞的中間,M-f移動到單詞的末尾。當游標在兩個單詞間的空白部分 M-

f移動到後一個單詞的末尾。M-b與M-f一樣,只是移動的方向相反。

>> 鍵入M-f和M-b幾次,中間穿插一些C-f和C-b以使你能觀察到M-f和M-b在單詞中和 單

詞間的不同行為。

注意比較C-f,C-b與M-f,M-b。通常情況下Meta鍵用於有關語言單位(詞,句,段落) 的

操作;而控制鍵用於編輯時的基本單位(字元,行等)。

這是句與行的比較:C-a和C-e移動到一行的開頭和末尾,M-a和M-e移動到一個句子 的開

頭和末尾。

>> 鍵入一對C-a,再鍵入一對C-e。 鍵入一對M-a,再鍵入一對M-e。

你會看到重複鍵入的C-a什麼也不做,而重複鍵入的M-a則會移動一個以上的句子。

游標在文字中的位置也叫“點(point)”。在段落裡,游標標示出了點在螢幕上文字 裡

的位置。

下面是簡單的游標移動命令的總結,包括單詞和句子的移動命令:

C-f 向前移動一個字元。

C-b 向後移動一個字元。

M-f 向前移動一個單詞。

M-b 向後移動一個單詞。

C-n 移動到下一行。

C-p 移動到上一行。

C-a 移動到行首。

C-e 移動到行尾。

M-a 向前移動到句子的開頭。

M-e 向後移動到句子的末尾。

>> 試著對每一個命令都實踐幾次,它們都是經常要用到的命令。

另外兩個重要的游標移動命令是M- (

Meta大於)它移動游標到整個文字的末尾。

在多數終端上,“你也必須用Shift鍵來輸入M->> 現在就試試M-,移

動到本教程的末尾,然後再用M-v移回這裡。

你也可以用方向鍵來移動游標,如果你的終端有方向鍵的話。我們建議學習C-b, C-f,

C-n和C-p有三個原因。第一,它們能在所有型別的終端上工作。第二,你獲得 了使用E

macs的鍛鍊,你將會發現輸入這些CTRL加字元比按方向鍵要快(因為你不必 把你的手從

鍵盤上移開)。第三,一旦你養成了使用這些CTRL加字元的命令的習慣, 你就能一樣容

易的學習其他高階的游標移動命令。

大多數Emacs命令接收一個數字引數;對大多數命令來說,這表示命令重複的次數。 輸

入重複命令次數的方法是在輸入命令之前按C-u和數字。如果你有META(或EDIT或 ALT)鍵

,則有另一種方法輸入數字引數:在按住META鍵的時候輸入數字,我們建議 學習C-u方

法,因為它能在任何終端上工作。

例如,C-u 8 C-f 向前移動8個字元。

>> 試著使用帶數字引數的C-n或C-p,只用一個命令就把游標移動到與本行相鄰的 行上

絕大多數命令把數字引數當作重複次數,但也有幾個例外。C-v和M-v就是。當給出 一個

引數,只是上滾或下滾數字指定的行數而不是屏數。比如,C-u 4 C-v滾動4行 螢幕。

>> 現在試試 C-u 8 C-v。

這將使螢幕滾動8行,如果你想往回滾動的話,鍵入一個帶引數的M-v。

如果你正在使用X視窗,在Emacs視窗的左手邊有一個叫做捲軸的矩形區域。你能 透過

用滑鼠點選捲軸來滾動文字。

>> 試著在捲軸頂部的高亮區域點選中鍵。這將使文字滾動,滾動的位置取決於 你點

擊的長短。

>> 試著按住滑鼠中鍵上移或下移滑鼠,你將看到當你移動滑鼠時文字會上下滾動。

* 當EMACS掛起時(WHEN EMACS IS HUNG)

------------------------------------------------------------------

當Emacs停止響應你的命令時,你能用C-g把它安全的停止。當一個命令執行了太長的 時

間時你可以用C-g把它終止。

你也可以用C-g來取消數字引數和輸入後又不想執行的命令。

>> 鍵入C-u 100 產生一個值為100的數字引數,然後按C-g。再按C-f。它只會移動 一個

字元,因為你用C-g取消了引數。

如果錯誤的輸入了一個,你能用C-g消掉它。

* 禁止命令(DISABLED COMMAND)

----------------------------------------------------

一些Emacs命令是“禁止”的,所以新手不會因偶然而執行它。

如果你鍵入了一個禁止命令,Emacs會顯示一條訊息說明這條命令是幹什麼的,並且問

你是否需要執行它。

如果你真的想要執行,敲空格鍵繼續。通常,如果你不想執行禁止命令,用“n”來回

答。

>> 輸入一條禁止命令),然後用n來回答。

* 視窗(WINDOWS)

-----------------------------

Emacs 能有好幾個視窗,每一個顯示自己的文字。我們將在後面解釋怎樣對多視窗 操作

。現在我們要解釋怎樣去除多餘的視窗屏回到基本的單視窗編輯狀態。 這是一個例子:

C-x 1 一個視窗(也就是除去其他所有的視窗)。

因為Control-x跟了數字1。C-x 1使包含游標的視窗占滿整個螢幕,屏刪除其他所有 窗

口。

>> 把游標移動本行並輸入 C-u 0 C-l。

>> 鍵入Control-h k Control-f。 看這個視窗如何縮小,並在按Control-f的時候出現

了一個新的文件視窗。

>> 鍵入C-x 1 並且看到那個文件視窗消失了。

* 插入和刪除(INSERTING AND DELETING)

---------------------------------------------------------------

如果你要插入文字,只須輸入文字。輸入的字元你能見到,比如A,7,*等等。Emacs 會

立即把它們插入。鍵入(Enter鍵)插入一個換行符。

你能用刪除你輸入的最後一個字元。就是鍵盤上標著“Del”的鍵。

在某些情況下,“Backspace”鍵作用和一樣,但不總是這樣!

通常,立即刪除游標前面的那個字元。

>> 輸入幾個字元,然後用刪除它們。不必擔心這個檔案回被改變;你不會 替

換主教程。這只是你的個人複製。

當一行文字太長而超過螢幕寬度時,這一行會在螢幕的下一行被“繼續”。文字的右 邊

會有一個反斜槓“”表示它被繼續。

>> 插入文字直到最右邊,然後再插入。你將看到一個繼續了的行。

>> 使用刪除文字直到行的長度在螢幕的寬度以內。繼續的行將會消失。

你能像刪除其他任何字元一樣刪除換行符。刪除兩個行間的換行符會使它們合併為一 行

。如果這一行很長螢幕顯示不下的話,將會用一個繼續的行來表示。

>> 把游標移動到一行的開頭按這將使本行和上一行合為一行。

>> 按重新插入你刪除的換行符。

記住大多數的Emacs命令能接收一個重複次數。這包括文字字元,把一個文字字元重複

的插入幾次。

>> 鍵入這個-- C-u 8 * 來插入 ********

你現在已經學習了Emacs的大多數輸入和排錯的方法。你也能一樣的刪除單詞或行。這

是刪除操作的摘要:

刪除游標前面的字元

C-d 刪除游標後面的字元

M- 除去游標前面的單詞

M-d 除去游標後面的單詞

C-k 除去從游標位置到行尾的內容

M-k 除去到當前句子的末尾

注意比較,C-d與M,M-d和C-f,M-f(不是一個控制字元, 但

不用擔心)。C-k和M-k就象C-e,M-e。

當你一次除去不止一個字元時,Emacs將儲存著這些文字,所以你可以恢復它們。 恢復

那些被除去的文字稱作“拉(yanking)”。你能在除去文字的同一地方拉回它們, 或是

在文字的其他地方。你能對文字拉上幾次以產生它們的多個複製,拉的命令是 C-y。

注意“除去(killing)”與“刪除(Deleting)”之間的區別,被除去的東西能被拉回 來

,而被刪除的不能。通常除去能除去很多的文字屏儲存,而刪除只能除去一個字 符,或

是空行或空格,並且不儲存。

>> 把游標移到一個空行的開頭,鍵入C-k除去這一行。

>> 按第二次C-k,你將看到剩下的空行也被除去了。

注意單個的C-k除去行的內容,第二個C-k除去行本身,並且使後面的所有行上移。 特別

要注意數字引數:它除去很多行和它們的內容,這不僅僅是重複。C-u 2 C-k 除去兩行

和它們剩下的空行;而按兩次C-k並不會這樣做。

要在當前游標處找回上次被除去的文字;按C-y

>> 試一試,用C-y把文字拉回來。

把C-y考慮為你把某人從你這裡拿走的東西再拿回來。注意你如果在一行上按了幾次 C-

y,所有被除去的文字是存在一起的,所以按一次C-y將拉回全部的行。

>> 現在就試一下,按幾次C-k。 現在找回被除去的文字;

>> 按C-y。然後把游標下移幾行再按一次C-y,你現在會看到怎樣複製這些文字。

當你要拉回一些被除去的文字該怎樣做呢?C-y只能拉回最近被除去的文字。但以前 的

文字並沒有消失。你能用M-y來恢復它。當你用C-y拉回最近被除去的文字後,換成 M-y

可以拉回以前被除去的文字。鍵入一次又一次的M-y可以拉回更早以前被除去的文 本。

當你找到要尋找的文字,不必做任何事來保持它,只須離開拉文字的地方繼續你 的編輯

如果你M-y了足夠多的次數,你會回到開始點(最近被除去的)。

>> 除掉一行,移開,再除掉另一行。 然後用C-y拉回第二行。 然後換成M-y拉回被除掉

的第一行。 再按一次M-y看看得到了什麼。繼續按直到拉回被除去的第二行;然後再做

幾次。 如果原意的話,你可以給M-y加正的或負的數字引數。

* 撤銷(UNDO)

--------------------

如果你對文字作了一些改動,然後又發現這樣做是錯誤的,你能用撤銷命令,C-x u 撤

銷這些改變。

通常,一次C-x u撤銷一個改變;如果你在一行上重複幾次C-x u,就會重複幾次撤銷 操

作。

但有兩個例外:不改變文字的操作(包括游標移動和滾屏命令)不算在內;只能處理20 次

>> 用C-k除去這一行,然後按C-x u 它將重現出來。

C-_是一個可選擇的撤銷命令;它所作的工作和C-x u 完全一樣,只是更容易輸入。 C-

_的缺點是有些鍵盤上沒有它,這就是為什麼還提供C-x u的原因。在某些終端上 你可以

按住CTRL的時候再敲/來輸入C-_。C-_或C-x u把數引數字當作重複次數。

* 檔案(FILES)

-------------------

為了永久儲存你編輯的文字,你必須把它放到一個檔案裡。否則當你退出Emacs的時候

它就會消失。你透過“查詢(finding)”檔案,把你編輯的內容放到檔案裡。(也稱為 “

訪問(visiting)檔案”)。

(譯註:為了保持與原文的一致性,把find譯為“查詢”,但是這裡和後面出現的 “查

找檔案”指的都是開啟檔案的意思。)

查詢(finding)一個檔案意味著你在Emacs裡看檔案的內容,在多數情況下,也就是你 在

編輯它。但是,你用Emacs對它作的改變並不是永久行的,除非你“儲存(saving)” 它

。所以你可以避免把一個改了一半的檔案留在系統上。甚至你儲存了檔案,Emacs也 會

把原始檔案換個名字保留下來,以防過後你發現對檔案的改動是錯誤的。

如果你觀察螢幕的你將看見一個開始和結尾都是破折號的行,並且以“--:**-- TUTORI

AL”或之類的東西開始。螢幕的這部分通常顯示你正在訪問的檔案的名字。 現在,一個

叫做“TUTORAL”的檔案,它是你的Emacs教程的個人複製。當你用Emacs 查詢一個檔案

,檔名會出現在同樣的位置。

查詢和儲存檔案命令不像前面學的那些命令。它們都以字元Control-x開始。以 Contro

l-x起頭的是一個完整的命令系列;它們中的許多都是對檔案,緩衝,和相關的 東西進

行操作的。這些命令有兩個,三個或四個字元長。

關於查詢檔案命令的另一件事是你必須給出你需要的檔案的檔名。我們說這個命令 “

從終端讀取一個引數”。(在這種情況下,引數是檔案的名字);當你鍵入命令C-x C-f後

,Emacs會提示你輸入檔案的名字。你輸入的檔名會出現在螢幕底部的行上。 這個底

部的行稱為微型緩衝(minibuffer)用於這類較短的輸入。你能用Emacs本身的 編輯命令

來編輯檔名。

當你正在輸入檔名(或其他任何微型緩衝區輸入),你能用命令C-g來取消。

>> 鍵入命令C-x C-f,然後輸入C-g。這將取消微型緩衝,也取消了C-x C-f命令所使 用

的微型緩衝,所以你不查詢任何檔案。

當你輸完檔名後用來結束。然後C-x C-f開始工作,並開始尋找你所選擇的

檔案。當C-x C-f命令結束後微型緩衝區也消失了。

過一小會兒檔案的內容就會顯示在螢幕上,然後你就能對它進行編輯了。當想永久保留

你的改動時用命令:

C-x C-s 儲存檔案(save the file)。

這個操作會把Emacs裡的文字複製到檔案裡。在你第一次作的時候,Emacs把原始文 件改

為一個新名字以使它不至於丟失。新名字是在原來名字的後面加一個“~”。

儲存結束後,Emacs列印出被寫的檔案的檔名。你應當經常的儲存,萬一系統崩潰 的

話你不至於丟失太多的工作。

>> 鍵入C-x C-s來儲存你的教程的複製。螢幕的底部會列印出“Wrote.....TUTORIAL”

注意:在某些系統上,輸入C-x C-s 會把螢幕凍結住使你從Emacs看不到更多的輸出。這

表示這個作業系統的“特性”叫做“控制流程”,它攔截了C-x不讓它到達Emacs那裡。

要使螢幕解凍,輸入C-q,然後看Emacs手冊裡的“Spontaneous Entry to Incrementa

l Search”一節,按上面的建議來對付這種“特性”。

你能查詢一個已存在的檔案,來檢視它或編輯它。你也可以查詢一個尚未存在的檔案。

這是 Emacs:裡建立檔案的方法:查詢檔案,將會出現一個空白,然後插入檔案的文字

。當你 “儲存(saving)”的時候,Emacs將會用你插入的文字建立檔案。從那時候起,

你可以認為 你在編輯一個存在的檔案了。

* (緩衝)BUFFERS

--------------------------

如果你用C-x C-f查詢第二個檔案,第一個檔案仍然留在Emacs裡。你可以再用C-x C-f查

找 一次來切換回去。用這種方法你在Emacs裡有很多檔案。

>> 輸入C-x C-f foo 來建立一個名為foo的檔案。然後插入一些文字,編輯它

,並 用C-x C-s來儲存“foo”。 最後輸入C-x C-f TUTORIAL以回到本教程。

Emacs把每個檔案的文字都儲存在一個叫“緩衝(buffer)”的東西里。查詢(開啟)一個文

件 就會在Emacs裡產生一個新的緩衝。要看你當前執行的Emacs裡存在的緩衝列表,輸入

C-x C-b 列出緩衝(list buffers)

>> 輸入 C-x C-b

觀察每個緩衝都有一個名字,它可能也有一個它所儲存的檔案的檔名。一些緩衝不對

應 檔案。比如,叫“*Buffers List*”的緩衝沒有任何檔案。這個緩衝只包含由C-x C

-b產生的 緩衝列表。你在Emacs視窗裡看到的任何文字都是某個緩衝的一部分。

>> 輸入 C-x 1 消除緩衝列表。

如果你對一個檔案的文字作了改動,然後查詢另一個檔案,第一個檔案並不儲存。它的

改變 儲存在Emacs裡,在那個檔案的緩衝裡。被建立或編輯的第二個檔案的緩衝並不影

響第一個 的。這一點很有用,但這也意味著要有一個便捷的方法來儲存第一個檔案的緩

衝。如果要用 C-x C-f切換回去只是為了按C-x C-s儲存它將會是一件令人討厭的事。所

以我們用

C-x s 儲存緩衝(save the buffer)

C-x s 向你詢問每個改動過但未存檔的緩衝,對每個這樣的緩衝都詢問是否儲存。

>> 插入一行文字,然後按C-x s。 將會問你是否儲存叫TUTORIAL的緩衝。 輸入“y”來

回答是。

* 擴充套件命令集(EXTENDING THE COMMAND SET)

-----------------------------------------------------------------------

有太多的Emacs命令,大大超過了Contorl和meta加上字元所能表示的數量。Emacs用X(擴

展 eXtand)命令來解決這個問題。有兩種風格:

C-x 字元擴充套件,後跟一個字元。

M-x 名字命令擴充套件,後跟一個長名字。

這些命令通常有用,但不如你已經學過的那些命令使用的頻繁。你已經見過了它們中的

兩個: 檔案命令C-x C-f 用於查詢和C-x C-s用於儲存。

另一個例子是結束Emacs的命令C-x C-c(不必擔心你所作的改動會丟失,在退出Emacs 之

前,C-x C-c會提示你儲存每一個改動過的檔案)。

C-z命令用於*臨時*退出Emacs,所以你能回到原來執行的Emacs裡。在允許這樣做的 系

統上,C-z把Emacs“掛起”;就是說回到外殼(shell)下,但並不破壞執行的Emacs。 在

大多數外殼上,你能用‘fg’命令或‘%emacs’來繼續Emacs。

在不支援掛起的系統上,C-z建立一個子外殼(subshell)執行於Emacs下以使你能執行 其

他程式然後回到Emacs;這並不是真正的“退出”Emacs。在這種情況下,通常從 子外殼

回到Emacs的外殼命令是‘exit’。 有很多C-x 命令,這是已學過的一個列表:

C-x C-f 查詢檔案

C-x C-s 儲存檔案

C-x C-b 緩衝列表

C-x C-c 退出Emacs

C-x u 撤銷操作

被稱作擴充套件命令的命令的使用頻率都不太高。或者是隻在某些模式下使用。一個例子是

替換 字串的命令,它在全文裡把字串替換為其他的。當你鍵入M-x, Emacs會在屏

幕的底部 提示你輸入命令;在這種情況下,是“replace-string”。比如輸入“repl

s”, Emacs會把命令補全。用來結束命令。

替換字串命令要求兩個引數--要被替換的字串和用來替換的字串。你必須用urn> 來結束兩個引數。

>> 把游標移上兩行,然後輸入M-x repl schangedaltered turn>。 注意現在這一行改變了:你把游標初始位置後的所有單詞c-h-a-n-g-e-d替換為

了 “altered”

* 自動儲存(AUTO SAVE)

------------------------------------

當你改動了一個檔案還未存檔的話,所作的改動也許會由於系統崩潰而丟失。為防止 這

種情況發生,Emacs在編輯時為每個檔案提供了“自動儲存(auto save)”。自動儲存 的

檔案的檔名前後都有一個#號;例如,如果你編輯的檔名叫“hello.c”,自動保 存

的檔案的檔名就叫“#hello.c#”。當你正常的儲存了檔案後,Emacs會刪除這個自 動

儲存的檔案。如果遇到當機,你能開啟那個檔案後按M-x recover file來恢復

你的編輯,(是你編輯的檔案而不是自動儲存的檔案)。當提示確認時,輸入yesn> 來繼續恢復自動儲存的資料。

* 回顯區域(ECHO AREA)

------------------------------------

如果Emacs發現你輸入命令的速度很慢的話它會在螢幕底部為你顯示出來,這個區域叫

“回顯區域”。

* 模式行(MODE LINE)

---------------------------------

回顯區域上面的一行稱為“模式行(mode line)”。模式行顯示與下面類似的東西:

--**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------

這一行給出了有關你在編輯的檔案和Emacs狀態的有用資訊。

你已經知道了檔名意味著什麼。--NN%--指出你現在在文字里的位置;它意味著上面還

有NN%的文字。如果是在檔案的開頭,會用--Top-- 來代替--0%--。如果是在行的末尾

, 會顯示--Bot--。如果你正在看的文字內容很少,可以全部顯示在螢幕上,模式行會

說 --All--。

前面的星號表示你已經改動過文字了。一旦你儲存了檔案或開啟了一個新檔案,模式行

的 這部分就不是星號而是破折號了。

模式行上括號裡的部分是現在的編輯模式。現在是預設的基本(Fundamental)模式。它是

“主模式(major mode)”的一種。

Emacs有很多不同的主模式。有些意味著不同的語言或不同的文字。如Lisp模式(Lisp m

ode), 文字模式(text mode)等等。在任何時候有且只能有一種主模式被啟用。並且它

的名字會出 現在現在顯示“Fundamental”的位置上。

每一個主模式都有些自己的命令。就象不同的程式語言的註釋看起來不同一樣。每種主

模式 插入的註釋也不同。可以用擴充套件命令切換進某種主模式。例如,M-x fundamental

-mode 是切 換進基本模式。

>> 輸入 M-x text-mode

不必擔心,沒有命令會給Emacs帶來很大改變。但是你可以看到現在M-f和M-b把省略號當

作 單詞的一部分。而先前,在基本模式裡,M-f 和M-b把省略號當成當成分隔符。

主模式通常作諸如此類微小的變化:大多數命令在每個主模式裡作“同樣的工作”,但

又有 些微小的不同。

要觀看關於你現在的主模式的文件,按C-h m。

>> 鍵入C-u C-v一次和多次使本行接近螢幕的頂端。

>> 輸入C-h m ,看看文字模式和基本模式有些什麼不同。

>> 按C-x 1 從螢幕上關掉這個文件。

主模式之所以叫做主模式是因為也存在從模式,從模式與主模式完全不同。每個從模式

可以自 己開啟或者關閉,獨立於所有其他從模式,也獨立於你的主模式。所以你可以不

用從模式或者 同時用很多種從模式。

有一種從模式很有用,特別是在編輯英文文字時。它是自動填充模式(auto fill mode)

。當這個 模式開啟的時候,當輸入的文字過寬的時候就會自動折行。

你能用M-x auto-fill-mode來開啟自動填充模式。如果此模式已經開啟M-x au

to- fill-mode則把它關閉。我們把這叫做切換開關。

>> 輸入M-x auto-fill-mode。然後插入一些“asdf”直到看到這行被分為兩行

。你 必須在中間放一些空格,只有到空格的時候才會換行。

通常邊界寬度是70,但你能用帶數字引數的C-x f 命令來改變它。

>> 鍵入帶引數20的C-x。(C-u 20 C-x f) 然後輸入一些文字看現在每行只有20個字元了

。然後用C-x f把它改回70。

如果你在一個段落的中間產生了改變,自動填充模式將不會重新填充。要想重新填充段

落, 當游標在段落裡的時候按M-q。

>> 把游標移到上一段按 M-q。

* 搜尋(SEARCHING)

-----------------------------

Emacs 能朝前和朝後搜尋字串(指相鄰的一些字元或單詞)。搜尋是一個移動游標的操

作, 它把游標移動到字串出現的下一個地方。

Emacs 的搜尋命令和其他大多數編輯器不同,它是“增量式(incremental)”的,這意味

著搜尋在你鍵入字串時就開始了。

開始一個向前搜尋的命令是C-s,C-r是往回搜尋。但等等,先別忙。

當你輸入C-s是你將注意到在回顯區域會出現一個字串“I-search”。這告訴你Emacs

開始 了一個增量搜尋,並在等待你輸入要搜尋的東西。結束查詢。

>> 現在鍵入C-s開始一個搜尋。慢慢的輸入單詞‘cousor’,在輸入每一個字母的時候

停頓一 下,注意看游標發生了什麼。

>> 再輸入一次C-s,來搜尋“cursor”出現的下一個地方。

>> 現在輸入四次看看游標移到了哪裡。

>> 輸入結束搜尋。

看到發生什麼了嗎?在Emacs的增量搜尋裡,你輸入多少字串它就試著搜尋這些字元出

現的 地方。到字串出現的下一個地方,只須再按一次C-s。要搜尋的字串不存在的

話,Emacs 會發出蜂鳴並告訴你當前的搜尋“失敗(failing)”,按 C-g 也是終止搜尋

注意:在某些系統上,輸入 C-s 會把螢幕凍結住使你從Emacs看不到更多的輸出。這 表

示這個作業系統的“特性”叫做“控制流程”,它攔截了C-s不讓它到達Emacs那裡。 要

使螢幕解凍,輸入C-q,然後看Emacs手冊裡的“Spontaneous Entry to Incremental S

earch”一節,按上面的建議來對付這種“特性”。

如果你在搜尋的過程裡按了,你將注意到要搜尋的字串的最後一個字元會被

刪除 並且游標會回到上一個被搜尋到的地方。比如,假設你鍵入了“c”,將會搜尋“

c”第一次出 現的地方。然後如果你鍵入“u”,游標將移到“ cu”第一次出現的地方

。現在鍵入。 這將從搜尋的字串裡把“u”刪掉,這時游標回到“c”第一次

出現的地方。

如果你在搜尋時按了Control或meta鍵加字元(少數幾個少數命令例外,如C-s和C-r),搜

索將被 終止。

C-s向當前游標的後面搜尋字串出現的地方。如果你需要搜尋前面文字里的東西,用C

-r來代替。 我們所介紹的C-s的每個特性C-r也支援,除了方向相反。

* 多視窗(MULTIPLE WINDOWS)

------------------------------------------------

Emacs有一個非常好的特性是能同時在螢幕上顯示不止一個的視窗。

>> 把游標移到本行上按C-u 0 C-l。

>> 現在按C-x 2,它把螢幕分裂成兩個視窗,每個視窗都顯示本教程。游標在上面的窗

口裡。

>> 按C-M-v 滾動到下面的視窗裡。(如果你沒有一個真正的Meta鍵,那麼按ESC C-v)

>> 按 C-x o (“o” 指 “其他(other)”) 把游標移到到下面的視窗裡。

>> 用 C-v 和 M-v 滾動下面視窗裡的文字。 在上面的視窗裡看本教程。

>> 再次按 C-x o 使游標回到上面的視窗裡。 現在游標象以前一樣在上面的視窗裡了。

你能一直用C-x o在視窗間切換。每個視窗都有它自己的游標位置,但僅有一個視窗能顯

示活動 的游標。所有的編輯命令都發生在那個顯示游標的視窗上。我們把這個視窗叫做

“選中視窗( selected window)”。

當你在一個視窗裡編輯文字,而用另一個視窗作參考時命令C-M-v非常有用。你總是能把

游標留 在所編輯的地方,而用C-M-v來翻閱另一視窗。

C-M-v 是 CONTROL-META 加字元的一個例子。 如果你有一個真正的META 鍵,你能同時

按住 CTRL 和 META 再按“v”來輸入C-M-v。CTRL 和 META 誰先按誰後按無所謂。

如果你沒有一個真正的META 鍵, 你可以用 ESC 來代替。這時候次序是有關係的: 你

必須讓 ESC 跟在 CTRL-v後面; 否則 CTRL-ESC v 將不工作。 這是因為 ESC 是一個有

意義的字元而不 是一個修飾字元。

>> 輸入 C-x 1 (在上面的視窗裡) 以消除下面的視窗。

(如果你在下面的視窗裡鍵入C-x 1,將會把上面的視窗去掉。可以把這個命令看作是“

只保留你 現在在的那個視窗。)

你不必一定要在兩個視窗裡顯示同樣的緩衝。如果你在一個視窗裡鍵入C-x C-f查詢檔案

,另一個 視窗的內容不會改變。你能獨立的在每個視窗裡查詢檔案。

這是讓兩個視窗顯示不同內容的另一種方法:

>> 在你輸入的檔名後再輸入C-x 4 C-f,然後用結束。會看到指定的檔案出

現在下面 的視窗裡。游標也在那裡面。

>> 鍵入C-x o 回到上面的視窗,然後輸入C-x 1刪掉下面的視窗。

* 遞迴編輯層(RECURSIVE EDITING LEVELS)

----------------------------------------------------------------

有時候你會進入“遞迴編輯層(recursive editing level)”。由模式行上的方括號指示

。它在主模式 名的括號外面。例如你也許會看到(Fundamental)變成了[(Fundamental)

]。

要退出遞迴編輯層,按ESC ESC ESC。這是一個通用的退出命令,你也可以用它除去額外

的窗 口,或者退出微型緩衝。

>> 輸入 M-x 進入一個微型緩衝; 然後用 ESC ESC ESC 離開。

你不能用C-g來退出遞迴編輯層。這是因為C-g只能取消在遞迴編輯層裡面的命令。

* 獲取更多的幫助(GETTING MORE HELP)

--------------------------------------------------------------

在本教程裡我們試著為你開始使用Emacs提供了足夠多的資訊。但是有關Emacs的資訊實

在是太 多以至於不能全部都在這裡說明。但是,你還應該學習更多有關Emacs的東西,

因為它另外還有 很多有用的特性。Emacs提供了很多讀取有關命令的文件的命令。這些

“幫助”命令都以 Control-h開頭,叫做“幫助字元”。

為了使用幫助特性,輸入字元C-h,然後再輸入一個字元來說明你需要哪種幫助。如果你

真的不知 道,輸入C-h ? 然後 Emacs會告訴你它能給你什麼樣的幫助。如果你輸入了C

-h 又覺得不需要任 何幫助,你可以用C-g來取消它。

(在有的地方,C-h的作用被改變了。如果按C-h在螢幕的底部沒有出現有關幫助的資訊的

話,試試 用F1和M-x help RET來代替。)

最基本的幫助特性是C-h c。輸入C-h,然後是字元 c,然後輸入一個命令字元和序列;

然後 Emacs 會顯示這個命令的簡潔的描述。

>> 輸入 C-h c Control-p.

顯示的訊息看起來會象這樣:

C-p runs the command previous-line

這告訴你“功能的名字”。功能的名字主要用於對Emacs的功能擴充和定製。但因為功能

的名字 指出了命令的用途,所以最好不要改動它。

C-h c後面可跟多字元命令,比如 C-x C-s 和 (如果你沒有 META 或者 EDIT 或者 ALT

鍵) v 。

要獲取有關命令的更多資訊,用C-h k 代替 C-h c。

>> 輸入 C-h k Control-p.

這將在一個Emacs視窗裡顯示命令的文件。當你讀完後可以用C-x 1除去幫助文字。如果

不想馬上 離開,你可以一邊編輯一邊參考幫助文字,然後再按C-x 1。

這是一些有用的 C-h 選項:

C-h f 描述一個功能,在你輸入了這個功能的名字後。

>> 輸入 C-h f previous-line。 將列印出C-p命令所實現的所有功能。

C-h a 命令查詢。輸入一個關鍵字,Emacs將列出所有名字裡有這個關

鍵字的命令。 包括所有以Meta-x開始的命令。對有些命令,C-h a 也將列出實現同一功

能的 幾個命令序列。

>> 輸入 C-h a file.

這將在視窗裡顯示所有名字裡有單詞“file”的M-x命令。

>> 輸入 C-M-v 來滾動幫助視窗,做上幾次。

>> 輸入 C-x 1 來刪除幫助視窗。

* 總結(CONCLUSION)

--------------------------------

記住,永遠都用C-x C-c來退出Emacs。用C-z來退到一個臨時的外殼裡,以使你過後還能

回到 Emacs

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945100/,如需轉載,請註明出處,否則將追究法律責任。

相關文章