Emacs用戶手冊中文版

譯者: con Copyright (c) 1985 Free Software Foundation, Inc; See end for conditions.
You are looking at the Emacs tutorial.

Emacs 的命令通常包括控制鍵(就是上面標有 Ctrl或Ctl的那個)或者是META鍵(上面標有ED99v或ALT)。爲了方便起見我們將用下面的縮寫來代替這些鍵的全稱:

C- 意思是當敲入字符 時同時按住控制鍵,因此,C-f表 示:按住控制鍵並且按 f 。 M- 表示當鍵入 時按住META或ALT或ED99v鍵。如果沒有META 或ALT或ED99v鍵,則用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,使光標移動到下一行。

當你移動超過屏幕的頂部或底部,光標回移動到下一屏的中間,這叫做“滾屏 (scrolling)”。它使得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小於),它移動光標到整個文本的開頭,M-> (Meta大於)它移動光標到整個文本的末尾。
在多數終端上,“<”在逗號的上面,所以你必須用Shift鍵來輸入它。在這些終端上,你也必須用Shift鍵來輸入M-<;沒有Shift鍵,你可以輸入M-逗號。
>> 現在就試試M-<,移動到本教程的開頭,然後再用C-v移回這裏。 現在就試試M->,移動到本教程的末尾,然後再用M-v移回這裏。

你也可以用方向鍵來移動光標,如果你的終端有方向鍵的話。我們建議學習C-b, C-f,C-n和C-p有三個原因。第一,它們能在所有類型的終端上工作。第二,你獲得了使用Emacs的鍛鍊,你將會發現輸入這些CTRL加字符比按方向鍵要快(因爲你不必把你的手從鍵盤上移開)。第三,一旦你養成了使用這些CTRL加字符的命令的習慣,你就能一樣容易的學習其他高級的光標移動命令。
大多數Emacs命令接收一個數字參數;對大多數命令來說,這表示命令重複的次數。輸入重複命令次數的方法是在輸入命令之前按C-u和數字。如果你有 META(或ED99v或 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 會立即把它們插入。鍵入 (回車鍵)插入一個換行符。
你能用 刪除你輸入的最後一個字符。 就是鍵盤上標着“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也會把原始文件換個名字保留下來,以防過後你發現對文件的改動是錯誤的。


如果你觀察屏幕的你將看見一個開始和結尾都是破折號的行,並且以“--:**-- TUTORIAL”或之類的東西開始。屏幕的這部分通常顯示你正在訪問的文件的名字。現在,一個叫做“TUTORAL”的文件,它是你的Emacs教程的個人拷貝。當你用Emacs 查找一個文件,文件名會出現在同樣的位置。


查找和保存文件命令不像前面學的那些命令。它們都以字符Control-x開始。以 Control-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 Incremental 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會把命令補全。用 來結束命令。


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


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





* 自動保存(AUTO SAVE)
------------------------------------



當你改動了一個文件還未存盤的話,所作的改動也許會由於系統崩潰而丟失。爲防止這種情況發生,Emacs在編輯時爲每個文件提供了“自動保存(auto save)”。自動保存的文件的文件名前後都有一個#號;例如,如果你編輯的文件名叫“hello.c”,自動保存的文件的文件名就叫 “#hello.c#”。當你正常的保存了文件後,Emacs會刪除這個自動保存的文件。如果遇到死機,你能打開那個文件後按M-x recover file 來恢復你的編輯,(是你編輯的文件而不是自動保存的文件)。當提示確認時,輸入yes 來繼續恢復自動保存的數據。




* 回顯區域(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 mode),文本模式(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 auto- 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 Search”一節,按上面的建議來對付這種“特性”。
如果你在搜索的過程裏按了,你將注意到要搜索的字符串的最後一個字符會被刪除並且光標會回到上一個被搜索到的地方。比如,假設你鍵入了“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 ED99vING 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 或者 ED99v 或者 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。
本教程儘量讓所有的初學者都能理解,如果你發現有些東西不清楚的話,別責備你自己-抱怨吧!


(拷貝與版權)COPYING
---------------------------------

This tutorial descends from a long line of Emacs tutorials starting with the one written by Stuart Cracraft for the original Emacs.


This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions:

Copyright (c) 1985, 1996 Free Software Foundation


Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
copyright notice and permission notice are preserved,
and that the distributor grants the recipient permission
for further redistribution as permitted by this notice.


Permission is granted to distribute modified versions
of this document, or of portions of it,
under the above conditions, provided also that they
carry prominent notices stating who last altered them.



The conditions for copying Emacs itself are more complex, but in the same spirit. Please read the file COPYING and then do give copies of GNU Emacs to your friends. Help stamp out software obstructionism ("ownership") by using, writing, and sharing free software!  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章