初入Emacs,還是要入鄉隨俗的,基于Unix的程序還是在鍵盤命令上下了很大的功夫,但這樣的通用性也得到了極大的提高。下面是拷貝Emacs的快速指南的中譯版本,只是記錄一下,沒有別的意思。呵呵
提供一下Windows平臺Emacs的安裝方式:
1、下載Emacs基于Windows的安裝包,我是從ftp://ftp.keystealth.org/pub/gnu/gnu/emacs/windows/emacs-22.2-bin-i386.zip這個地址下載而來的。如果該地址失效或者有更新版本的話,請直接上其官方網站獲取最新版本。
官方FTP列表地址:http://www.gnu.org/prep/ftp.html
2、下載后將其解壓到任意文件夾(建議路徑均為英文),在其bin目錄下點擊addpm.exe可以安裝emacs至“開始”菜單。您也可以打開runemacs.exe或者emacs.exe文件直接打開。
在網上找到這么一篇級別很高的博客,《在Windows下使用Emacs》http://learn.tsinghua.edu.cn:8080/2004211031/publish/GNU/ntemacs.html
相關資源:
1、《GNU Emacs FAQ For MS Windows》 http://www.gnu.org/software/emacs/windows/index.html
快速指南:
Emacs 快速指南.(查看版權聲明請至本文末尾)
【注意:位于【】之間的內容是譯注,比如本行,下同。】
Emacs 鍵盤命令通常包含 CONTROL 鍵(有時候以 CTRL 或 CTL 來標示)和
META 鍵(有時候用 EDIT 或 ALT 來標示)。為了避免每次都要寫出全名,我們
約定使用下述縮寫:
C-<chr> 表示當輸入字符 <chr> 時按住 CONTROL 鍵。
因此 C-f 就表示:按住 CONTROL 鍵再輸入 f。
M-<chr> 表示當輸入字符 <chr> 時按住 META(或 EDIT 或 ALT)鍵。
如果你的鍵盤上沒有 META 、EDIT 或 ALT 鍵,用下述方法也等效:
先按一下 ESC 鍵然后放開,再輸入 <chr>。我們用 <ESC> 來表示
ESC 鍵。
重要提示:要退出 Emacs,請用 C-x C-c(兩個連續的組合鍵)。下文中左邊頂
行的“>>”字樣用來提示你嘗試鍵盤命令。比如:
[本頁當中特意留出一些空白是出于教學目的,請繼續往后閱讀]
>> 現在輸入 C-v (查看下一屏文字)移動到下一屏。
(別緊張,在輸入字符 v 的同時注意要按住 CONTROL 鍵)
從現在開始,每讀完當前一屏你都需要這樣做一次。
值得注意的是,當你從上一屏滾到下一屏時,中間會有兩行的重復;這樣做是為
了維持滾屏的連續性,方便你順暢、連續地閱讀。
用編輯器,開門第一件事就是學會在文字中移動。你已經知道了 C-v 可以向下移
動一屏,要往上移,請用 M-v (也就是按住 META 鍵,然后輸入v,如果你沒有
META、EDIT 或 ALT 鍵那么就先按 <ESC> 再按 v)。
>> 試試 M-v,然后再試試 C-v,來回遛幾次。
* 小結(SUMMARY)
-----------------
以下命令在翻頁瀏覽時相當有用:
C-v 向前移動一屏
M-v 向后移動一屏
C-l 重繪屏幕,并將光標所在行置于屏幕的中央
(注意是 CONTROL-L,不是 CONTROL-1)
>> 找到光標,留意其附近的文字,然后輸入 C-l。
找找光標在哪里,你會發現其附近的文字并沒有變化。
如果你的鍵盤上有 PageUp 和 PageDn,也可以用這兩個鍵來滾屏。不過使用
C-v 和 M-v 的效率要更高一些。
* 基本的光標控制(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 N B F”四個字母分別代表了四個詞,用這四個詞記憶這些組合鍵會更容易:
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)。滾動使得光標可以被移動到文字中的任何位置,并且還
不會讓光標跑到屏幕外邊去。
>> 用 C-n 將光標下移,一直越過屏幕邊界,同時觀察發生了什么變化。
如果你嫌一個字符一個字符地挪光標太慢,你還可以一個詞一個詞地跳。M-f
(META-f) 可以將光標往前移動一個詞,而 M-b 則是往后移。【這里的“詞”指
英文單詞,對中文來說,則是指移動到下一個標點符號。】
>> 試試 M-f 和 M-b。
如果光標停在一個詞的中間,M-f 會移動到這個詞的末尾。如果光標處于詞與詞
之間的空白處,M-f 會移動到下一個詞的末尾。M-b 的功能類似,只是方向相反。
>> 按幾次 M-f 和 M-b,中間夾雜一些 C-f 和 C-b。
你可以觀察到 M-f 和 M-b 在不同位置上所表現出來的不同行為。
請注意 C-f 、C-b 和 M-f 、M-b 兩對之間的類比關系。通常的慣例是:META 系
列組合鍵用來操作“由語言定義的單位(比如詞、句子、段落)”,而 CONTROL
系列組合鍵用來操作“與語言無關的基本單位(比如字符、行等等)”。
類似的慣例在“行”與“句子”之間也同樣適用: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-comma(META 逗號)。
>> 試一試 M-< ,移到本快速指南的最開始。
然后再按幾次 C-v 回到這里。
>> 試一試 M-> ,移到本快速指南的最末尾。
然后再按幾次 M-v 回到這里。
如果你的鍵盤上有方向鍵的話,也可以用它們來移動光標。不過我們有三個理由
推薦你學習 C-b 、C-f 、C-n 、和 C-p:(1)它們在任何鍵盤上都能用。(2)
當你熟練使用 Emacs 之后,你會發現用這些組合鍵比用方向鍵要快得多,因為你
的手不需要離開打字區。(3)一旦你習慣了使用這些組合鍵,你也可以很容易地
適應其它更高級的光標移動命令。
大部分的 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 8 C-v 將屏幕向下滾動 8 行,
而不是 8 屏。
>> 現在試試看,輸入 C-u 8 C-v。
這個命令應該已經將文字向上滾動了 8 行。如果你想將它再次地向下滾動,你可
以給定一個參數然后執行 M-v。
如果你正在使用一個窗口系統,比如 X11 或者微軟的 Windows,那么在 Emacs
窗口的邊緣應該有一個長方形的區域叫“滾動條”,你可以用鼠標操縱滾動條來
滾動文字。
>> 試著在“滾動條內的反白區域”上按一下鼠標中鍵。
文字應該會滾動到鼠標所指示的位置。
>> 當按住中鍵時,試著將鼠標上下移動。
你會看到文字隨著鼠標的移動而上下滾動。
【Windows 版本符合 Windows 程序的傳統操作習慣,上述操作不適用。】
* 在 EMACS 失去響應的時候(WHEN EMACS IS HUNG)
-----------------------------------------------
如果 Emacs 對你的命令失去響應,你可以用 C-g 來安全地終止這條命令。C-g
也可以終止一條執行過久的命令。
C-g 還可以取消數字參數和只輸入到一半的命令。
>> 輸入 C-u 100 設定一個值為 100 的數字參數,然后按 C-g。
現在再按 C-f,光標應該只會移動一個字符,因為你已經用 C-g 取消了參數。
如果你不小心按了一下 <ESC>,你也可以用 C-g 來取消它。
【這個說法似乎有問題,因為按照這個按鍵順序輸入的應該是 C-M-g。
取消 <ESC> 的正確做法是再連按兩次 <ESC>。】
* 被禁用的命令(DISABLED COMMANDS)
-----------------------------------
有一些 Emacs 命令被“禁用”了,以避免初學者在不了解其確切功能的情況下誤
用而造成麻煩。
如果你用到了一個被禁用的命令,Emacs 會顯示一個提示消息,告訴你這個命令
到底是干什么的,詢問你是否要繼續,并在得到你的肯定之后再執行這命令。
如果你真的想用這條命令,在 Emacs 詢問你的時候應該按空格。一般來說,如果
你不想用,就按“n”。
>> 試試 C-x C-l (這是一個被禁用的命令)
然后用 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 關掉文檔窗格。
這個命令跟先前學過的命令不太一樣,因為它包含了兩個字符,以 CONTROL-x 開
始。有一系列命令都是以 CONTROL-x 開始的,這些命令許多都跟“窗格、文件、
緩沖區【緩沖區(buffer)會在后文詳細介紹】”等等諸如此類的東西有關,其
中有些命令可能包含了 2 個、3 個或者 4 個字符。
* 插入與刪除(INSERTING AND DELETING)
--------------------------------------
插入文字很簡單,直接敲鍵盤就可以了。你能看到的字符,比如 A、7、* 等等,
都被 Emacs 視為文字并且可以直接插入。敲 <Return>(回車鍵)會插入一個換
行符。
你可以用 <Delback> 來刪除最后輸入的一個字符,這個跟你在 Emacs 之外的用
法應該一樣。一般來說 <Delback> 就是位于 <Return> 鍵上方某處的一個大塊頭
的鍵,通常被標示為“Delete”、“Del”或者“Backspace”。
如果你找到了“Backspace”鍵,那么它應該就是 <Delback>;這時哪怕你又在別
的地方找到了一個“Del”鍵,那么它也應該不是 <Delback>。
一種更通用的說法是,<Delback> 將刪除位于光標前的一個字符。
>> 現在就來試試――敲點字,然后按幾下 <Delback> 刪除它們。
不用擔心文件被修改,你做什么都沒關系,這里就是專給你練習用的。
如果一行文字很長、超出了窗格的寬度,顯示不下的部分會在緊鄰的下一行繼續
顯示。這時會有一個反斜線(在控制臺下是反斜線,如果你用圖形窗口系統,則
應該是一個小小的轉彎箭頭)顯示在右邊沿,表明這是某一行的接續顯示。
>> 輸入文字,一直到屏幕的右邊界,然后繼續,你會看到一個接續行出現。
>> 用 <Delback> 刪掉一些文字,直到此行長度小于窗格寬度,接續行就消失了。
換行符跟其它字符一樣可以被刪除。兩行中間的換行符被刪除后,這兩行將會合
并成一行。如果合并后的這一行太長,超出了窗格寬度,它就會以一個接續行來
顯示。
>> 移動光標到某行的開頭并輸入 <Delback>。
這時該行將與其前一行一起被合并為一行。
>> 輸入 <Return> 重新插入你剛才刪除的換行符。
前面講過,大部分的 Emacs 命令都可以指定重復次數,這其中也包括輸入字符的
命令。重復執行輸入字符的命令實際上就是輸入多個相同的字符。
>> 試試 C-u 8 *,這將會插入 ********。
好,現在你應該已經掌握了最基本的的文本插入和修改功能,其實刪除還可以
“以詞為單位”進行,下面是一個關于“刪除”操作的小結:
<Delback> 刪除光標前的一個字符
C-d 刪除光標后的一個字符
M-<Delback> 移除光標前的一個詞
M-d 移除光標后的一個詞
C-k 移除從光標到“行尾”間的字符
M-k 移除從光標到“句尾”間的字符
【可能你已經注意到了“刪除(delete)”和“移除(kill)”的用詞區別,后
文會有詳細說明。】
注意“<Delback> 和 C-d”還有“M-<Delback> 和 M-d”是根據前述慣例從 C-f
和 M-f 衍生出來的(其實<Delback>不是控制字符,我們先忽略這一點)。C-k
和 M-k 的關系在某種程度上與 C-e 和 M-e 一樣――如果把“一行”和“一句”
作一個類比的話。
你也可以用一種通用的辦法來移除緩沖區里的任何一部分:首先把光標移動到你
想要移除的區域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意,
C-SPC 往往被中文用戶設定成輸入法熱鍵,如果這樣,C-SPC 就被系統攔截而無
法傳遞給 Emacs 了,因此這里還是推薦使用C-@。】,然后將光標移動到另一端,
再按 C-w 就可以把位于這兩點之間的所有文字移除了。
>> 移動光標到上一段開頭的“你”字。
>> 輸入 C-@ 。Emacs 應該會在屏幕的下方顯示一個“Mark set”的消息。
>> 移動光標到第二行中的“端”字。
>> 輸入 C-w,從“你”開始到“端”之前的文字被全部移除。
注意,“移除(kill)”和“刪除(delete)”的不同在于被移除的東西可以找回
來,而被刪除的就不行了。【實際上,移除掉的東西雖然看起來“消失”了,但
實際上被 Emacs 記錄了下來,因此還可以找回來;而刪除掉的東西雖然也可能還
在內存里,但是已經被 Emacs“拋棄”了,所以就找不回來了。】重新插入被移
除的文字稱為“召回(yank)”。一般而言,那些可能消除很多文字的命令會把
消除掉的文字記錄下來(它們被設定成了“可召回”),而那些只消除一個字符
或者只消除空白的命令就不會記錄被消除的內容(自然你也就無法召回了)。
>> 移動光標到一非空白行的行頭,然后輸入 C-k 移除那一行上的文字。
>> 再次 C-k,你可以看到它移除了跟在那一行后面的換行符。
注意,單獨的 C-k 會把一行的內容移除,而第二個 C-k 則會移除換行符,并使
其后所有的行都向上移動。C-k 處理數字參數的方式很特別,它會把參數指定的
那么多行連同其后的換行符一起移除,而不僅僅是重復 C-k 而已。比如 C-u 2
C-k 會把兩行以及它們的換行符移除;而如果只是輸入 C-k 兩次顯然不是這個結
果。
將被移除的文字恢復的動作稱為“召回(yanking)”。(就好像把別人從你身邊
移走的東西又猛力地拉回來。)你可以在你刪除文字的地方召回,也可以在別的
地方召回,還可以多次召回同樣的文字以得到它的多個拷貝。
召回的命令是 C-y。它會在光標所在處插入你最后移除的文字。
>> 試試看,輸入 C-y 將文字召回。
如果你一次連按了好幾下 C-k,那么所有被移除的行會被存儲在一起,只要一個
C-y 就可以把它們都召回。
>> 在這里試試,連續按幾次 C-k。
現在再來恢復剛剛被我們移除的文字:
>> 按 C-y。然后把光標往下移動幾行,再按一次 C-y。
現在你應該知道怎么復制文字了。
C-y 可以召回最近一次移除的內容,那如何召回前幾次移除的內容呢?它們當然
沒有丟,你可以用 M-y 來召回它們。在用 C-y 召回最近移除的文字之后,緊接
著再按 M-y 就可以召回再前一次被移除的內容,再按一次 M-y 又可以召回再上
一次的……連續使用 M-y 直到找到你想要召回的東西,然后什么也不用做,繼續
編輯就行了。
如果連續按 M-y 很多次,你可能會回到起始點,也就是最近移除的文字。
【看得出這實際上是一個環。】
>> 移除一行,移動一下光標,然后再移除另外一行。
按 C-y 將第二次移除的那行召回來。
緊接著再按 M-y,它將會被第一次移除的那行取代。
試著再按幾下 M-y 看看會發生什么。
再繼續,直到第二行被召回來,然后再做個幾次。
如果感興趣,你可以試著給 M-y 指定一個正的或負的參數。
* 撤銷(UNDO)
--------------
如果你修改了一段文字,又覺得改得不好,可以用 undo 命令進行撤銷:
C-x u。
通常 C-x u 會消除一個命令所造成的所有改變;如果你在一行中連續多次地使用
C-x u,你會把以前的命令也依次撤銷。
但是有兩個例外:
1) 沒有改變文字的命令不算(包括光標移動命令和滾動命令)
2) 從鍵盤輸入的字符以組為單位――每組 20 個字符――來進行處理。
(這是為了減少你在撤銷“插入文字”動作時需要輸入 C-x u 的次數)
>> 用 C-k 將這一行移除,然后輸入 C-x u ,它會再次出現。
C-_ 也是撤銷命令;它的作用跟 C-x u 一樣,但是它比較容易多次輸入。C-_ 的
缺點是在某些鍵盤上可能不太容易按,這也正是我們同時提供 C-x u 的原因。在
某些終端上,你可以按住 CONTROL 再按“/”來輸入 C-_。
數字參數對于 C-_ 和 C-x u 的意義是執行撤銷的重復次數。
* 文件(FILE)
--------------
想保存工作成果就要記得存盤,否則一旦退出 Emacs 你編輯的文字就會丟失。要
存盤,就要在編輯前“尋找”到一個存盤文件。(這個過程通常也被稱為“訪問”
文件。)
尋找到一個文件意味著你可以在 Emacs 里查看這個文件的內容。從許多角度看,
這就等于你在直接編輯這個文件,只是你所做的修改只有在“存盤”的時候才會
被寫入文件。也正因為如此,你可以丟棄一個寫到一半的文件而不必把這個殘缺
文件也保存到計算機上。在存盤的時候,Emacs 會把存盤前的文件重命名保存,
以防你改完之后又想反悔。
在屏幕的下方,你應該能夠看到頭尾都是短線“-”的一行,行首通常是一些諸如
“--:-- TUTORIAL.cn”的文字,這些文字代表了你當前正在訪問的文件。比如你
現在正在訪問的文件叫“TUTORIAL.cn”,它只是一個給你臨時使用的拷貝。每當
Emacs 尋找到一個文件,文件名就會出現在這個位置。
尋找文件的命令有一個特點,那就是你必須給出文件名。我們稱這個命令“從終
端讀入了一個參數”(在這里,這個參數顯然就是文件名)。在你輸入這條命令
之后:
C-x C-f 尋找一個文件
Emacs 會提示你輸入文件名。你輸入的文件名會出現在屏幕最底端的一行,這一
行被稱為小緩沖(minibuffer),在小緩沖里你可以使用通常的 Emacs 編輯命令
來編輯文件名。
在小緩沖里輸入文件名(其實輸入其它東西也一樣)時可以用 C-g 取消。
>> 輸入 C-x C-f,然后輸入 C-g
這會關掉小緩沖,同時也會取消使用小緩沖的 C-x C-f 命令。
當然了,你也沒有找任何文件。
用 <Return> 結束文件名的輸入。這之后 C-x C-f 命令開始工作并找到你指定的
文件。小緩沖在 C-x C-f 命令結束之后也會消失。
眨眼間文件就被顯示在屏幕上,你可以開始編輯了。存盤用這條命令:
C-x C-s 儲存這個文件
這條命令把 Emacs 中的文字存儲到文件中。第一次存盤的時候 Emacs 會將原文
件重命名以備份。重命名的規則通常是在原文件名之后添加一個“~”字符。
【對許多人來說,這是一個煩人的特性,關掉文件備份可以用如下命令:
M-x customize-variable <Return> make-backup-files <Return>】
存盤結束后,Emacs 會顯示寫入文件的文件名。你最好養成經常存盤的習慣,這
可以減少系統崩潰和死機給你帶來的損失。
>> 輸入 C-x C-s 把本快速指南存下來。
你會在屏幕的下方看到一條消息:“Wrote
TUTORIAL.cn”。
你不但可以尋找一個已有的文件來查看或編輯,還可以尋找一個不存在的文件。
實際上這正是 Emacs 創建新文件的方法:找到不存在的新文件。只有在存盤的時
候,Emacs 才會真正創建這個文件。而在這之后的一切就跟編輯一個已有文件沒
有區別了。
* 緩沖區(BUFFER)
------------------
你可以用 C-x C-f 找到并打開第二個文件,但第一個文件仍然在 Emacs 中。要
切回第一個文件,一種辦法是再用一次 C-x C-f。這樣,你就可以在 Emacs 中同
時打開多個文件。
>> 用 C-x C-f foo <Return> 的方式建立一個名為“foo”的文件。
輸入一些文字,再用 C-x C-s 保存文件“foo”。
最后,輸入 C-x C-f TUTORIAL.cn <Return> 回到這里。
Emacs 把每個編輯中的文件都放在一個稱為“緩沖區(buffer)”的地方。每尋
找到一個文件,Emacs 就在其內部開辟一個緩沖區。用下面的命令可以列出當前
所有的緩沖區:
C-x C-b 列出緩沖區
>> 現在就試一下 C-x C-b
觀察一下緩沖區是如何被命名的,它很可能跟與其對應的文件同名。實際上,一
個 Emacs 窗格里的任何文字都是某個緩沖區的一部分。
>> 輸入 C-x 1 離開緩沖區列表
不管存在多少緩沖區,任何時候都只能有一個“當前”緩沖區,也就是你正在編
輯的這個。如果你想編輯其它的緩沖區,就必須“切換”過去。上面講過,用
C-x C-f 是一種辦法。不過還有一個更簡單的辦法,那就是用 C-x b。用這條命
令,你必須輸入緩沖區的名稱。
>> 輸入 C-x b foo <Return> 以回到文件“foo”的緩沖區。
然后輸入 C-x b TUTORIAL.cn <Return> 回到這里。
大多數情況下,緩沖區與跟其對應的文件是同名的(不包括目錄名),不過這也
不是絕對的。用 C-x C-b 得到的緩沖區列表總是顯示緩沖區名。
你在 Emacs 窗格里看到的“任何”文字都一定屬于某個緩沖區。然而,緩沖區未
必有對應文件:比如顯示緩沖區列表的緩沖區就是這樣。再比如“*Messages*”
緩沖區也沒有對應文件,這個緩沖區里存放的都是在 Emacs 底部出現的消息。
>> 輸入 C-x b *Messages* <Return> 瞅瞅消息緩沖區里都有什么東西。
然后再輸入 C-x b TUTORIAL.cn <Return> 回到這里。
如果你對某個文件做了些修改,然后切換到另一個文件,這個動作并不會幫你把
前一個文件存盤。對第一個文件的修改仍然僅存在于 Emacs 中,也就是在它對應
的緩沖區里。并且,對第二個文件的修改也不會影響到第一個文件。這很有用,
但是也挺麻煩:因為如果你想要存儲第一個文件,還需要先 C-x C-f 切換回去再
用 C-x C-s 存盤。你需要一個更簡便的方法,而 Emacs 已經為你準備好了:
C-x s 保存多個緩沖區
C-x s 會找出所有已被修改但尚未存盤的緩沖區,然后向你逐個詢問:是否需要
存盤?
>> 插入一行文字,然后輸入 C-x s。
它應該會問你,是否要儲存名為 TUTORIAL.cn 的緩沖區?
按“y”告訴它你想存盤。
* 命令集擴展(EXTENDING THE COMMAND SET)
-----------------------------------------
Emacs 的命令就像天上的星星,數也數不清。把它們都對應到 CONTROL 和 META
組合鍵上顯然是不可能的。Emacs 用擴展(eXtend)命令來解決這個問題,擴展
命令有兩種風格:
C-x 字符擴展。 C-x 之后輸入另一個字符或者組合鍵。
M-x 命令名擴展。M-x 之后輸入一個命令名。
很多擴展命令都相當有用,雖然與你已經學過的命令比起來,他們可能不那么常
用。我們早已經見過一些擴展命令了,比如用 C-x C-f 尋找文件和用 C-x C-s
保存文件;退出 Emacs 用的 C-x C-c 也是擴展命令。(不用擔心退出 Emacs 會
給你帶來什么損失,Emacs 會在退出之前提醒你存盤的)
在控制臺下,C-z 可以暫時離開 Emacs――當然,你還可以再回來。
在允許 C-z 的系統中,C-z 會把 Emacs“掛起”,也就是說,它會回到 shell
但不退出 Emacs。在常用的 shell 中,通常可以用“fg”或者“%emacs”命令再
次回到 Emacs 中。
在沒有提供掛起功能的系統中,C-z 會在 Emacs 之下創建一個子 shell 來讓你
運行其它程序,并且再次“回到”Emacs 中――雖然我們并沒有真正離開過。這
種情況下,通常用 shell 命令“exit”從子 shell 回到 Emacs。
你最好在打算退出登陸的時候再用 C-x C-c。在 Emacs 被諸如郵件處理程序之類
的外部程序調用之后,也可以用 C-x C-c 退出。不過一般來講,如果你不想退出
登錄,最好還是把 Emacs 掛起而不是退出。
C-x 的擴展命令有很多,下面列出的是你已經學過的:
C-x C-f 尋找文件。
C-x C-s 保存文件。
C-x C-b 列出緩沖區。
C-x C-c 離開 Emacs。
C-x 1 關掉其它所有窗格,只保留一個。
C-x u 撤銷。
用命令名擴展的命令通常并不常用,或只用在部分模式下。比如 replace-string
(字符串替換)這個命令,它會在全文范圍內把一個字符串替換成另一個。在輸
入 M-x 之后,Emacs 會在屏幕底端向你詢問并等待你輸入命令名。如果你想輸入
“replace-string”,其實只需要敲“repl s<TAB>”就行了,Emacs 會幫你自動
補齊。輸入完之后按 <Return> 。
字符串替換命令需要兩個參數――被替換的字符串和用來替換它的字符串。每個
參數的輸入都以換行符來結束。
>> 將光標移到本行下面第二行的空白處,然后輸入
M-x repl s<Return>changed<Return>altered<Return>。
【以下保留一行原文,以應練習之需:】
Notice how this line has changed: you've replaced
請注意這一行的變化:在光標之后的范圍內,你已經將“changed”這個詞――不
論它在哪里出現――全部用“altered”替換掉了。
* 自動保存(AUTO SAVE)
-----------------------
如果你已經修改了一個文件,但是還沒來得及存盤你的計算機就罷工了,那么你
所做的修改就很可能會丟失。為了避免這樣的不幸發生,Emacs 會定期將正在編
輯的文件寫入一個“自動保存”文件中。自動保存文件的文件名的頭尾各有一個
“#”字符,比如你正在編輯的文件叫“hello.c”,那么它的自動保存文件就叫
“#hello.c#”。這個文件會在正常存盤之后被 Emacs 刪除。
所以,假如不幸真的發生了,你大可以從容地打開原來的文件(注意不是自動保
存文件)然后輸入 M-x recover file<Return> 來恢復你的自動保存文件。在提
示確認的時候,輸入 yes<Return>。
* 回顯區(ECHO AREA)
---------------------
如果 Emacs 發現你輸入多字符命令的節奏很慢,它會在窗格的下方稱為“回顯區”
的地方給你提示。回顯區位于屏幕的最下面一行。
* 狀態欄(MODE LINE)
---------------------
位于回顯區正上方的一行被稱為“狀態欄”。狀態欄上會顯示一些信息,比如:
--:** TUTORIAL.cn (Fundamental)--L670--54%----------------
狀態欄顯示了 Emacs 的狀態和你正在編輯的文字的一些信息。
你應該知道文件名的意思吧?就是你找到的那個文件嘛。-NN%-- 顯示的是光標在
全文中的位置。如果位于文件的開頭,那么就顯示 --Top-- 而不是 --00%--;如
果位于文件的末尾,就顯示 --Bot--。如果文件很小,一屏就足以顯示全部內容,
那么狀態欄會顯示 --All--。
“L” 和其后的數字給出了光標所在行的行號。
最開頭的星號(*)表示你已經對文字做過改動。剛剛打開的文件肯定沒有被改動
過,所以狀態欄上顯示的不是星號而是短線(-)。
狀態欄上小括號里的內容告訴你當前正在使用的編輯模式。缺省的模式是
Fundamental,就是你現在正在使用的這個。它是一種“主模式”。
Emacs 的主模式林林總總。有用來編輯程序代碼的――比如 Lisp 模式;也有用
來編輯各種自然語言文本的――比如 Text 模式。任何情況下只能應用一個主模
式,其名稱會顯示在狀態欄上,也就是現在顯示“Fundamental”的地方。
主模式通常會改變一些命令的行為。比方說,不管編輯什么語言的程序代碼,你
都可以用一個相同的命令來添加注釋。但是在不同的語言中注釋的語法往往是不
同的,這時不同的主模式就會用各自不同的語法規則來添加注釋。主模式都是可
以用 M-x 啟動的擴展命令,M-x fundamental-mode 就可以切換到 Fundamental
模式。
編輯自然語言文本――比如現在――應該用 Text 模式。
>> 輸入 M-x text mode<Return>。
別擔心,什么都沒變。不過細心一些可以發現,M-f 和 M-b 現在把單引號(')
視為詞的一部分了。而在先前的 Fundamental 模式中,M-f 和 M-b 都將單引號
視為分隔單詞的符號。
主模式通常都會搞一些類似的小動作,因為很多命令其實完成的是“相同的工
作”,只是在不同環境下會有不同的工作方式而已。【所謂“求同存異”,在
Emacs 里得到了很好的體現】
用 C-h m 可以查看當前主模式的文檔。
>> 用 C-u C-v 將本行帶到屏幕的最上方。
>> 輸入 C-h m,看看 Text 模式與 Fundamental 模式有哪些不同。
>> 輸入 C-x 1 關掉文檔窗格。
主模式之所以稱之為“主(major)”模式,是因為同時還有“輔模式”(minor
mode)存在。輔模式并不能替代主模式,而是提供一些輔助的功能。每個輔模式
都可以獨立地開啟和關閉,跟其它輔模式無關,跟主模式也無關。所以你可以不
使用輔模式,也可以只使用一個或同時使用多個輔模式。
有一個叫做自動折行(Auto Fill)的輔模式很有用,特別是在編輯自然語言文本
的時候。啟用自動折行后,Emacs 會在你打字超出一行邊界時自動替你換行。
用 M-x auto fill mode<Return> 啟動自動折行模式。再用一次這條命令,自動
折行模式會被關閉。也就是說,如果自動折行模式沒有被開啟,這個命令會開啟
它;如果已經開啟了,這個命令會關閉它。所以我們說,這個命令可以用來“開
關(toggle)”模式。
>> 現在輸入 M-x auto fill mode<Return>。然后隨便敲點什么,直到你看到它
分成兩行。你必須敲一些空格,因為 Auto Fill 只在空白處進行斷行。
【輸入空格對英文來說是必須的,而對中文則不必。】
行邊界通常被設定為 70 個字符【這里指英文字符】,你可以用 C-x f 命令配合
數字參數來重新設定它。
>> 輸入 C-x f 并傳遞參數 20: C-u 2 0 C-x f。
然后輸入一些文字,觀察 Emacs 的自動折行動作
最后再用 C-x f 將邊界設回 70。
如果你在段落的中間做了一些修改,那么自動折行模式不會替你把整個段落重新
折行,你需要用 M-q 手動折行。注意,光標必須位于你需要折行的那一段里。
>> 移動光標到前一段中,然后輸入 M-q。
* 搜索(SEARCHING)
-------------------
Emacs 可以向前或向后搜索字符串。搜索命令是一個移動光標的命令:搜索成功
后,光標會停留在搜索目標出現的地方。
Emacs 的搜索命令的獨特之處在于,它是“漸進的(incremental)”。意思是搜
索與輸入同時進行:你在鍵盤上一字一句地輸入搜索詞的過程中,Emacs 就已經
開始替你搜索了。
C-s 是向前搜索,C-r 是向后搜索。不過手別這么快!別著急試。
在按下 C-s 之后,回顯區里會有“I-search”字樣出現,表明目前 Emacs 正處
于“漸進搜索”狀態,并等待你輸入搜索字串。按 <Return> 可以結束搜索。
>> 輸入 C-s 開始一個搜索。注意敲慢一點,一次輸入一個字符。
慢慢輸入“cursor”這個詞,每敲一個字都停頓一下并觀察光標。
現在你應該已曾經找到“cursor”這個詞了。
>> 再按一次 C-s,搜索下一個“cursor”出現的位置。
>> 現在按四次退格鍵,看看光標是如何移動的。
>> 敲 <Return> 結束搜索。
看仔細了么?在一次漸進式搜索中,Emacs 會嘗試跳到搜索目標出現的位置。要
跳到下一個命中位置,就再按一次 C-s。如果找不到目標,Emacs 會發出“嗶”
的一聲,告訴你搜索失敗。在整個過程中,都可以用 C-g 來終止搜索。【你會發
現 C-g 會讓光標回到搜索開始的位置,而 <Return> 則讓光標留在搜索結果上,
這是很有用的功能。】
注意:在某些終端下,輸入 C-x C-s 會凍結屏幕【屏幕沒有任何輸出】,使你看
不到 Emacs 的任何變化。其原因是操作系統的“流量控制”功能攔截了 C-s 并
凍結了屏幕。用 C-q 可以解除屏幕凍結。要解決這個問題,請參考 Emacs 手冊
里的“Spontaneous Entry to Incremental Search”一節【Emacs 手冊可能還沒
有中文翻譯】,那里提供了一些有用的建議。
在漸進式搜索中,按退格鍵會刪除目標字符串的最后一個字符,并且光標會回到
最近一次搜索的命中位置。比如你已經輸入了“c”,光標就停在“c”第一次出
現的位置,再輸入“u”,光標停在“cu”第一次出現的位置,這時再按退格鍵,
“u”就從搜索字串中消失了,然后光標會回到“c”第一次出現的位置。
另外,如果你在搜索的時候輸入了 CONTROL 或者 META 組合鍵的話,搜索可能會
結束。(也有例外,比如 C-s 和 M-r 這些用于搜索的命令。)
前面說的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 與 C-s
相比除了搜索方向相反之外,其余的操作都一樣。
* 多窗格(MULTIPLE WINDOWS)
----------------------------
Emacs 的迷人之處很多,能夠在屏幕上同時顯示多個窗格就是其中之一。
>> 移動光標到這一行,然后輸入 C-u 0 C-l。
>> 現在輸入 C-x 2,它會將屏幕劃分成兩個窗格。
這兩個窗格里顯示的都是本篇快速指南,而光標則停留在上方的窗格里。
>> 試試用 C-M-v 滾動下方的窗格。
(如果你并沒有 META 鍵,用 ESC C-v 也可以。)
【向上滾動是 C-M-S-v,也就是同時按住 CONTROL、META 和 SHIFT 再按 v】
>> 輸入 C-x o(“o”指的是“其它(other)”),
將光標轉移到下方的窗格。
>> 在下方的窗格中,用 C-v 和 M-v 來滾動。
同時繼續在上方的窗格里閱讀這些指導。
>> 再輸入 C-x o 將光標移回到上方的窗格里。
光標會回到它在上方窗格中原本所在的位置。
連續使用 C-x o 可以遍歷所有窗格。每一個窗格都有它自己的光標位置,但是只
有一個窗格會真正顯示這個光標。【其它窗格在控制臺下不會顯示光標,在圖形
窗口下缺省顯示為鏤空光標。】一般所有的編輯命令都作用于這個光標所在的窗
格,我們稱這個窗格為“被選中的窗格”。
當你在一個窗格中編輯,但用另一個窗格作為參考的時候,C-M-v 是很有用的命
令。你可以始終處于編輯窗格中,然后用 C-M-v 命令滾動另外一個窗格。【比如
翻譯和校對就很適合用這種方式進行。】
C-M-v 是一個 CONTROL-META 組合鍵。如果你有 META 鍵的話,可以同時按住
CONTROL 和 META 鍵并輸入 v。CONTROL 和 META 鍵先按哪個都可以,因為它們
只是用來“修飾(modify)”你輸入的字符的。
如果你并沒有 META 鍵,你也可以用 ESC 來代替,不過這樣的話就要注意按鍵順
序了:你必須先輸入 ESC ,然后再輸入 CONTROL-v。CONTROL-ESC v 是沒用的,
因為 ESC 本身是一個字符鍵,而不是一個修飾鍵(modifier key)。
>> (在上方窗格里)輸入 C-x 1 關掉下方窗格。
(如果你在下方的窗格里輸入 C-x 1,那么就會關掉上方的窗格。你可以把這個
命令看成是“只保留一個窗格”――就是我們正在編輯的這個。)
不同的窗格可以顯示不同的緩沖區。如果你在一個窗格里用 C-x C-f 打開了一個
文件,另一個窗格并不會發生什么變化。任何一個窗格里都可以用來打開文件。
用下面的方法可以在一個新開窗格里打開文件:
>> 輸入 C-x 4 C-f,緊跟著輸入一個文件名,再用 <Return> 結束。
可以看到你指定的文件出現在下方的窗格中,同時光標也跳到了那里。
>> 輸入 C-x o 回到上方的窗格,然后再用 C-x 1 關掉下方窗格。
* 遞歸編輯(RECURSIVE EDITING LEVELS)
--------------------------------------
有時候你會進入所謂的“遞歸編輯”。遞歸編輯狀態由位于狀態欄的方括號所指
示,其中包含了用小括號來指明的模式名稱。比如說,你有時可能會看到
[(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 進行交互式替換的
時候你又用了 C-s 進行搜索,這時替換模式并沒有結束,但你又進入了搜索模式,
這就是所謂的遞歸編輯。】
離開遞歸編輯可以用 ESC ESC ESC。這是一個最通用的“離開”命令,你甚至可
以使用它來關掉多余的窗格,或者離開小緩沖。
>> 輸入 M-x 進入小緩沖;然后輸入 ESC ESC ESC 離開。
你不能用 C-g 退出遞歸編輯,因為 C-g 的作用是取消“本層遞歸編輯之內”的
命令和其參數(arguments)。
* 獲得更多幫助(GETTING MORE HELP)
-----------------------------------
本快速指南的目的僅僅是幫助你在 Emacs 的海洋里下水,不至于束手無策望洋興
嘆。有關 Emacs 的話題可謂汗牛充棟,這里自然是難盡萬一。不過 Emacs 很理
解你求知若渴的心情,因為它提供的強大功能實在是太多了。為此,Emacs 提供
了一些命令來查看 Emacs 的命令文檔,這些命令都以 CONTROL-h 開頭,這個字
符也因此被稱為“幫助(Help)字符”。
要使用幫助(Help)功能,請先輸入 C-h,然后再輸入一個字符以說明你需要什
么幫助。如果你連自己到底需要什么幫助都不知道,那么就輸入 C-h ?,Emacs
會告訴你它能提供了哪些幫助。如果你按了 C-h 又想反悔,可以用 C-g 取消。
(有些主機改變了 C-h 的意義,這種以己度人外加一刀切的做法確實不太好,不
過倒是讓你可以義正辭嚴地抱怨他們的系統管理員。話說回來,如果你按 C-h 之
后沒有任何幫助信息顯示出來,那么試試 F1 鍵或者 M-x help <Return> 。)
最基本的幫助功能是 C-h c。輸入 C-h c 之后再輸入一個組合鍵,Emacs 會給出
這個命令的簡要說明。
>> 輸入 C-h c C-p。
顯示的消息應該會是這樣:
C-p runs the command previous-line
這條消息顯示了 C-p 命令對應的函數名,函數名主要用來定制和擴展 Emacs。命
令的功能由函數完成,所以函數名本身也可以被看成是最簡單的文檔――至少對
于你已經學過的命令來說,它們的函數名足以解釋它們的功能了。
多字符命令一樣可以用 C-h c 來查看。
想得到更多的信息,請把 C-h c 換成 C-h k 試試看。
>> 輸入 C-h k C-p。
上面的命令會新打開一個 Emacs 窗格以顯示函數的名稱及其文檔。你讀完之后可
以用 C-x 1 關掉這個幫助窗格。當然你并不需要立即這樣做,你完全可以先在編
輯窗格里做點別的事情,然后再關掉幫助窗格。
還有一些其它有用的 C-h 命令:
C-h f 解釋一個函數。需要輸入函數名。
>> 試試看,輸入 C-h f previous-line<Return>。
Emacs 會給出它所知道的所有有關“實現 C-p 命令功能的函數”的信息。
C-h v 用來顯示 Emacs 變量的文檔。Emacs 變量可以被用來“定制 Emacs 的行
為”。同樣,你需要輸入變量的名稱。
C-h a 相關命令搜索(Command Apropos)。
輸入一個關鍵詞然后 Emacs 會列出所有命令名中包含此關鍵詞
的命令。這些命令全都可以用 M-x 來啟動。對于某些命令來說,
相關命令搜索還會列出一兩個組合鍵。
>> 輸入 C-h a file<Return>。
Emacs 會在另一個窗格里顯示一個 M-x 命令列表,這個列表包含了所有名稱中含
有“file”的命令。你可以看到像“C-x C-f”這樣的組合鍵顯示在“find-file”
這樣的命令名的旁邊。
>> 用 C-M-v 來回滾動 help 窗格,多試幾次。
>> 輸入 C-x 1 來刪除 help 窗格。
C-h i 閱讀聯機手冊(也就是通常講的 Info)。
這個命令會打開一個稱為“*info*”的特殊緩沖區,在那里,
你可以閱讀安裝在系統里的軟件包使用手冊。要讀 Emacs 的使
用手冊,按 m emacs <Return> 就可以了。如果你之前從沒用
過 Info 系統,那么請按“?”,Emacs 會帶你進入 Info 的使
用指南。在看完本快速指南之后,Emacs Info 會成為你的主要
參考文檔。
* 更多精彩(MORE FEATURES)
---------------------------
想學習更多的使用技巧,Emacs 使用手冊(manual)值得一讀。你可以讀紙版的
書,也可以看電子版的聯機手冊(可以從 Help 菜單進入或者按 F10 h r)。提
兩個你可能會很感興趣的功能吧,一個是可以幫你少敲鍵盤的 completion(自動
補全),另一個是方便文件處理的 dired(目錄編輯)。
Completion 可以替你節省不必要的鍵盤輸入。比如說你想切換到 *Message* 緩
沖區,你就可以用 C-x b *M<Tab> 來完成。只要 Emacs 能夠根據你已經輸入的
文字確定你想要輸入的內容,它就會自動幫你補齊。有關 Completion 的詳細說
明可以在 Emacs Info 中的“Completion”一節里找到。
Dired 能夠在一個緩沖區里列出一個目錄下的所有文件(可以選擇是否也列出子
目錄),然后你可以在這個文件列表上完成對文件的移動、訪問、重命名或刪除
等等操作。Dired 也在 Emacs Info 中有詳細介紹,參見“Dired”一節。
Emacs 使用手冊里還有許許多多的精彩功能等著你來了解。
* 總結(CONCLUSION)
--------------------
記住,要退出 Emacs 請用 C-x C-c。要暫時切換到 shell 并且稍后再回到
Emacs 里來,請用 C-z。【切換到 shell 僅對控制臺下的 Emacs 有效】
本文完全是為零起點新手所寫的起步教程。如果你覺得哪里還看不明白,千萬不
要懷疑自己,那一定是我們沒有寫好。我們永遠歡迎你的不滿和抱怨。
* 翻譯(TRANSLATION)
---------------------
翻譯:孫一江 <sunyijiang@gmail.com>
校對:水木社區(www.newsmth.net)Emacs 板眾多網友及眾多 Emacs 中文用戶
Emacs 快速指南(Tutorial)早有兩個劉昭宏的中文譯本,繁簡各一。其簡體版本
(TUTORIAL.cn)基本由繁體版本(TUTORIAL.zh)經詞語替換而得。然而繁簡中文
不僅在用詞習慣上有所不同,更有諸多表達方式與句法方面的差異,因此一直以來
用戶使用 TUTORIAL.cn 都會略覺生硬和晦澀。這次重新翻譯 TUTORIAL.cn 的動機
正是源于這種體驗,希望我們的工作能夠讓本文更好地發揮其作用。TUTORIAL.zh
的譯文質量很高,在翻譯過程中給予過我們許多借鑒和參考,在此對劉昭宏的工作
表示感謝。
翻譯過程中最大的挑戰莫過于術語譯詞的選擇了。經過水木社區 Emacs 板熱心網
友小范圍內的討論,我們選擇了現在的譯法。用戶的廣泛參與是自由軟件生命力
的源泉,所以如果你有任何建議、勘誤或想法,請用你喜歡的方式向我們提出。
你可以通過電子郵件直接聯系譯者,也可以放到 GNU Emacs 的開發郵件列表或者
水木社區的 Emacs 板上進行討論。
下面列出主要術語的譯詞對照,并給出注釋說明:
command 命令
cursor 光標
scrolling 滾動
numeric argument 數字參數
window 窗格 [1]
insert 插入
delete 刪除 [2]
kill 移除 [2]
yank 召回 [2]
undo 撤銷
file 文件
buffer 緩沖區
minibuffer 小緩沖
echo area 回顯區
mode line 狀態欄
search 搜索
incremental search 漸進式搜索 [3]
[1] “window”一詞在計算機相關的領域一般都被譯為“窗口”。但是在 Emacs
中,還有一個“frame”的概念。在被廣泛使用的 X 窗口系統和微軟的視窗
(Windows)系列操作系統中,Emacs 的一個“frame”就是一個“窗口”,因
此把 Emacs 中的“frame”譯成“窗口”更加符合通常的習慣。這樣,Emacs
中的“window”就只能譯成“窗格”了。我們認為 Emacs 中 window 和
frame 的關系用窗格和窗口來類比是十分形象的。
《學習GNU Emacs》(第二版)一書對“window”和“frame”的翻譯與本教程
剛好相反(分別譯作“窗口”和“窗格”)。在此特別注明,以消除可能產生
的疑惑。(感謝李旭章 <lixuzhang@gmail.com> 指出)
[2] 對于“delete”和“kill”的區別,正文已經給出了詳細的說明。“刪除”和
“移除”相比較起來,前者更多地隱含著“破壞”和“不可恢復”的意思,而
后者更多地隱含著“被轉移”和“可恢復”的意思。因此分別選擇它們作為上
述兩詞的譯詞,希望能夠體現出區別。“yank”在中文文檔中鮮有對應譯詞出
現,翻譯的困難較大。究其本意是:“a strong sudden pull”(參見韋氏詞
典),即“猛然拉回”。在原文檔中 yank 被引申為“將先前移除的東西再移
回來”這個意思,所以我們選擇了“召回”一詞與其對應。
[3] “incremental”一詞在計算機著作中廣泛出現,被廣泛接受的中文譯詞有兩
個:“增量的”和“漸進的”。“incremental search”翻譯成“增量式搜索
”或者“漸進式搜索”都講得通,且都有各自的形象之處。還是參考原文對其
的解釋:“
means that the search happens while you type in the
string to search for”。意思是之所以稱其為“incremental search”,是
因為“在你輸入搜索字符串的過程中,搜索就已經在進行了”。我們認為“增
量的”更加強調在現有基礎上的變化(比如“增量備份”,“增量編譯”);
而“漸進的”更加強調過程的逐漸發展,也更加符合原文的意思。因此我們選
擇將“incremental search”譯作“漸進式搜索”。
* 版權聲明(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, 1998, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008 Free Software Foundation, Inc.
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!
【下面為版權聲明的譯文,僅供參考。實際法律效力以英文原文為準。】
本快速指南沿襲自歷史悠久的 Emacs 快速指南,可上溯至 Stuart Cracraft 為最
初的 Emacs 所作的版本。
本篇文檔與 GNU Emacs 一樣擁有版權,并允許在下列條件的約束下發行其拷貝:
Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008 Free Software Foundation, Inc.
本文檔允許在不變更文檔內容的情況下由任何人發布在任何媒體上,同時必須
完整保留版權和許可聲明,且需給予受眾與發行者完全相同的、如本聲明所允
許的再次發行本文檔的權利。
本聲明允許在與上述條件相同的情況下發布經過修改的全部或部分文檔,同時
必須附帶顯要的文字以申明文檔的最后修改者。
Emacs 自身的版權問題雖比本文檔要復雜一些,但也基于相同的精神。敬請閱讀文
件“COPYING”,然后向你的朋友們分發 GNU Emacs 拷貝。讓我們以使用、編寫和
分享自由軟件的實際行動來共同祛除軟件障礙主義(所謂的“所有權”)!
;;; Local Variables:
;;; coding: chinese-iso-8bit
;;; End:
;;; arch-tag: 46a53d82-a85a-46b6-bdc7-583aca063578