Emacs基礎教程文檔翻譯

Emacs 快速指南
摺疊目錄

  1. 小結(SUMMARY)
  2. 基本的光標控制(BASIC CURSOR CONTROL)
  3. 如果 EMACS 失去響應(IF EMACS STOPS RESPONDING)
  4. 被禁用的命令(DISABLED COMMANDS)
  5. 窗格(WINDOWS)
  6. 插入與刪除(INSERTING AND DELETING)
  7. 撤銷(UNDO)
  8. 文件(FILE)
  9. 緩衝區(BUFFER)
  10. 命令集擴展(EXTENDING THE COMMAND SET)
  11. 自動保存(AUTO SAVE)
  12. 回顯區(ECHO AREA)
  13. 狀態欄(MODE LINE)
  14. 搜索(SEARCHING)
  15. 多窗格(MULTIPLE WINDOWS)
  16. 多窗口(MULTIPLE FRAMES)
  17. 遞歸編輯(RECURSIVE EDITING LEVELS)
  18. 獲得更多幫助(GETTING MORE HELP)
  19. 更多精彩(MORE FEATURES)
  20. 總結(CONCLUSION)
  21. 翻譯(TRANSLATION)
  22. 版權聲明(COPYING)
    Emacs 快速指南.(查看版權聲明請至本文末尾)

【注意:位於【】之間的內容是譯註,比如本行,下同。】

Emacs 鍵盤命令通常包含 CONTROL 鍵(有時候以 CTRL 或 CTL 來標示)和 META 鍵(有時候用 EDIT 或 ALT 來標示)。爲了避免每次都要寫出全名,我們 約定使用下述縮寫:

C- 表示當輸入字符 時按住 CONTROL 鍵。
因此 C-f 就表示:按住 CONTROL 鍵再輸入 f。

M- 表示當輸入字符 時按住 META(或 EDIT 或 ALT)鍵。
如果你的鍵盤上沒有 META 、EDIT 或 ALT 鍵,用下述方法也等效:
先按一下 ESC 鍵然後放開,再輸入 。我們用 來表示
ESC 鍵。
重要提示:要退出 Emacs,請用 C-x C-c(兩個連續的組合鍵)。 要退出一個正在運行中的命令,請用 C-g。 下文中左邊頂行的“: >>”字樣用來提示你嘗試鍵盤命令。比如:

[本頁當中特意留出一些空白是出於教學目的,請繼續往後閱讀]

現在輸入 C-v (查看下一屏文字)移動到下一屏。
(別緊張,在輸入字符 v 的同時注意要按住 CONTROL 鍵) 從現在開始,每讀完當前一屏你都需要這樣做一次。

值得注意的是,當你從上一屏滾到下一屏時,中間會有兩行的重複;這樣做是爲 了維持滾屏的連續性,方便你順暢、連續地閱讀。

用編輯器,開門第一件事就是學會在文字中移動。你已經知道了 C-v 可以向下移 動一屏,要往上移,請用 M-v (也就是按住 META 鍵,然後輸入v,如果你沒有 META、EDIT 或 ALT 鍵那麼就先按 再按 v)。

試試 M-v,然後再試試 C-v,來回遛幾次。
1 小結(SUMMARY)
以下命令在翻頁瀏覽時相當有用:

C-v 向前移動一屏
M-v 向後移動一屏
C-l 重繪屏幕,並將光標所在行置於屏幕的中央
(注意是 CONTROL-L,不是 CONTROL-1)

找到光標,留意其附近的文字,然後輸入 C-l。
找找光標在哪裏,你會發現其附近的文字與之前相同,位置卻變爲屏幕的中心。 如果你再次輸入 C-l ,附近的文字將移動到屏幕的頂端。再次輸入 C-l , 文字將移動到底端。

如果你的鍵盤上有 PageUp 和 PageDn,也可以用這兩個鍵來滾屏。不過使用 C-v 和 M-v 的效率要更高一些。

2 基本的光標控制(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 行。

現在試試看,輸入 C-u 8 C-v。
這個命令應該已經將文字向上滾動了 8 行。如果你想將它再次地向下滾動,你可 以給定一個參數然後執行 M-v。

如果你正在使用圖形界面,比如 X 或者微軟的 Windows,那麼在 Emacs窗 口的一邊應該有一個長方形的區域叫“滾動條”。你可以用鼠標操縱滾動條來滾動 文字。

如果你的鼠標有滾輪的話,你也可以使用滾輪來滾動。

3 如果 EMACS 失去響應(IF EMACS STOPS RESPONDING)
如果 Emacs 對你的命令失去響應,你可以用 C-g 來安全地終止這條命令。C-g 也可以終止一條執行過久的命令。

C-g 還可以取消數字參數和只輸入到一半的命令。

輸入 C-u 100 設定一個值爲 100 的數字參數,然後按 C-g。
現在再按 C-f,光標應該只會移動一個字符,因爲你已經用 C-g 取消了參數。

如果你不小心按了一下 ,你也可以用 C-g 來取消它。 【這個說法似乎有問題,因爲按照這個按鍵順序輸入的應該是 C-M-g。 取消 的正確做法是再連按兩次 。】

4 被禁用的命令(DISABLED COMMANDS)
有一些 Emacs 命令被“禁用”了,以避免初學者在不瞭解其確切功能的情況下誤 用而造成麻煩。

如果你用到了一個被禁用的命令,Emacs 會顯示一個提示消息,告訴你這個命令 到底是幹什麼的,詢問你是否要繼續,並在得到你的肯定之後再執行這命令。

如果你真的想用這條命令,在 Emacs 詢問你的時候應該按空格。一般來說,如果 你不想用,就按“n”。

試試 C-x C-l (這是一個被禁用的命令)
然後用 n 來回答詢問。

5 窗格(WINDOWS)
Emacs 可以有多個“窗格”,每個窗格顯示不同的文字。後面會介紹怎麼對付多個窗 格,現在我們先學會如何關掉多餘的窗格。其實也很簡單:

C-x 1 只保留一個窗格(也就是關掉其它所有窗格)。

也就是先按 CONTROL-x 然後再按 1。C-x 1 會保留光標所在的窗格,並將其擴大 到整個屏幕,同時關掉所有其它的窗格。

把光標移到本行然後輸入 C-u 0 C-l。
輸入 C-h k C-f。觀察當一個新窗格出現時當前窗格(用來顯示
C-f 命令的文檔)是如何縮小的。

輸入 C-x 1 關掉文檔窗格。
有一系列命令是以 CONTROL-x 開始的,這些命令許多都跟“窗格、文件、緩衝區 【緩衝區(buffer)會在後文詳細介紹】”等等諸如此類的東西有關,其中有些 命令可能包含了 2 個、3 個或者 4 個字符。

6 插入與刪除(INSERTING AND DELETING)
插入文字很簡單,直接敲鍵盤就可以了。普通的字符,比如 A、7、* 等等,會 隨着你的輸入而插入。要插入一個換行符,輸入 Return(這個鍵在鍵盤上有 時會被標註成“Enter”)。

你可以用 DEL 來刪除光標左邊的字符,這個鍵通常被標註爲“Backspace”――跟 你在 Emacs 之外的用法應該一樣,刪除最後一個輸入的字符。

你的鍵盤上可能有另外一個鍵,標註着 Delete,但那個不是我們所說的 DEL。

現在就來試試――敲點字,然後按幾下 DEL 刪除它們。
不用擔心文件被修改,你做什麼都沒關係,這裏就是專給你練習用的。

如果一行文字很長、超出了窗格的寬度,顯示不下的部分會在緊鄰的下一行繼續 顯示。如果你使用的是圖形界面,文本區域兩邊的狹窄區域(左右“邊緣”)會出 現小小的轉彎箭頭,表明這是某一行的接續顯示。如果你使用的是文本終端,接 續顯示由屏幕最右邊一列的一個反斜線來表示。

輸入文字,一直到屏幕的右邊界,然後繼續。
你會看到一個接續行出現。

用 DEL 刪掉一些文字,直到此行長度小於窗格寬度,接續行就消失了。
換行符跟其它字符一樣可以被刪除。兩行中間的換行符被刪除後,這兩行將會合 併成一行。如果合併後的這一行太長,超出了窗格寬度,它就會以一個接續行來 顯示。

移動光標到某行的開頭並輸入 DEL。
這時該行將與其前一行一起被合併爲一行。

輸入 Return 重新插入你剛纔刪除的換行符。
前面講過,大部分的 Emacs 命令都可以指定重複次數,這其中也包括輸入字符的 命令。重複執行輸入字符的命令實際上就是輸入多個相同的字符。

試試 C-u 8 *,這將會插入 ********。
好,現在你應該已經掌握了最基本的的文本插入和修改功能,其實刪除還可以 “以詞爲單位”進行,下面是一個關於“刪除”操作的小結:

DEL 刪除光標前的一個字符
C-d 刪除光標後的一個字符

M-DEL 移除光標前的一個詞
M-d 移除光標後的一個詞

C-k 移除從光標到“行尾”間的字符
M-k 移除從光標到“句尾”間的字符
【可能你已經注意到了“刪除(delete)”和“移除(kill)”的用詞區別,後 文會有詳細說明。】

注意“DEL 和 C-d”還有“M-DEL 和 M-d”是根據前述慣例從 C-f和 M-f 衍生 出來的(其實DEL不是控制字符,我們先忽略這一點)。C-k和 M-k 的關係在 某種程度上與 C-e 和 M-e 一樣――如果把“一行”和“一句”作一個類比的話。

你也可以用一種通用的辦法來移除緩衝區裏的任何一部分:首先把光標移動到你 想要移除的區域的一端,然後按 C-SPC(SPC指空格)【注意,C-SPC 往 往被中文用戶設定成輸入法熱鍵,如果這樣,C-SPC 就被系統攔截而無法傳遞 給 Emacs 了,在這種情況下可以使用C-@。】,然後將光標移動到你準備移除的 文字的另一端。這個時候, Emacs 會高亮光標和你按下 C-SPC 之間的文本。 最後,按下 C-w 。這樣就可以把位於這兩點之間的所有文字移除了。

移動光標到上一段開頭的“你”字。
輸入 C-SPC 。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)”。(就好像把別人從你身邊 移走的東西又猛力地拉回來。)你可以在你刪除文字的地方召回,也可以在別的 地方召回,還可以多次召回同樣的文字以得到它的多個拷貝。很多其它的編輯器 把移除和召回叫做“剪切”和“粘貼” (詳情可見 Emacs 使用手冊裏的術語表)。

召回的命令是 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 指定一個正的或負的參數。
7 撤銷(UNDO)
如果你修改了一段文字,又覺得改得不好,可以用 undo 命令進行撤銷:C-/。

通常 C-/ 會消除一個命令所造成的所有改變;如果你在一行中連續多次地使用 C-/,你會把以前的命令也依次撤銷。

但是有兩個例外: 1) 沒有改變文字的命令不算(包括光標移動命令和滾動命令) 2) 從鍵盤輸入的字符以組爲單位――每組最多 20 個字符――來進行處理。 (這是爲了減少你在撤銷“插入文字”動作時需要輸入 C-/ 的次數)

用 C-k 將這一行移除,然後輸入 C-/ ,它會再次出現。
C-_ 也是撤銷命令;它的作用跟 C-/ 一樣,但是它比較容易多次輸入。在 某些終端上,輸入 C-/ 實際上向 Emacs 發送的是 C-_ 。 另外, C-x u 和 C-/ 完全一樣,但是按起來有些麻煩。

數字參數對於 C-/ 、 C-_ 和 C-x u 的意義是執行撤銷的重複次數。

8 文件(FILE)
想保存工作成果就要記得存盤,否則一旦退出 Emacs 你編輯的文字就會丟失。要 存盤,就要在編輯前“尋找”到一個存盤文件。(這個過程通常也被稱爲“訪問” 文件。)

尋找到一個文件意味着你可以在 Emacs 裏查看這個文件的內容。從許多角度看, 這就等於你在直接編輯這個文件,只是你所做的修改只有在“存盤”的時候纔會 被寫入文件。也正因爲如此,你可以丟棄一個寫到一半的文件而不必把這個殘缺 文件也保存到計算機上。在存盤的時候,Emacs 會把存盤前的文件重命名保存, 以防你改完之後又想反悔。

在屏幕的下方,你應該能夠看到頭部有短線“-”的一行,行首通常是一些諸如“ -:— TUTORIAL.cn”的文字,這些文字代表了你當前正在訪問的文件。比如你現 在正在訪問的文件是對 Emacs 快速指南的一份臨時拷貝,叫做“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 TUTORIAL.cn Return 。
這將會把該指南保存爲一個名爲 TUTORIAL.cn 的文件,並且在屏幕的下方顯 示一條消息:“Wrote …TUTORIAL.cn”。

你不但可以尋找一個已有的文件來查看或編輯,還可以尋找一個不存在的文件。 實際上這正是 Emacs 創建新文件的方法:找到不存在的新文件。事實上,只有 在存盤的時候,Emacs 纔會真正創建這個文件。而在這之後的一切就跟編輯一個 已有文件沒有區別了。

9 緩衝區(BUFFER)
你可以用 C-x C-f 找到並打開第二個文件,但第一個文件仍然在 Emacs 中。要 切回第一個文件,一種辦法是再用一次 C-x C-f。這樣,你就可以在 Emacs 中同 時打開多個文件。

Emacs 把每個編輯中的文件都放在一個稱爲“緩衝區(buffer)”的地方。每尋 找到一個文件,Emacs 就在其內部開闢一個緩衝區。用下面的命令可以列出當前 所有的緩衝區:

C-x C-b 列出緩衝區

現在就試一下 C-x C-b
觀察一下緩衝區是如何被命名的,它很可能跟與其對應的文件同名。實際上,一 個 Emacs 窗格里的任何文字都是某個緩衝區的一部分。

輸入 C-x 1 離開緩衝區列表
不管存在多少緩衝區,任何時候都只能有一個“當前”緩衝區,也就是你正在編 輯的這個。如果你想編輯其它的緩衝區,就必須“切換”過去。上面講過,用 C-x C-f 是一種辦法。不過還有一個更簡單的辦法,那就是用 C-x b。用這條命 令,你必須輸入緩衝區的名稱。

通過輸入 C-x C-f foo Return 創建一個名爲“foo”的文件。
然後輸入 C-x b TUTORIAL.cn Return 回到這裏。

大多數情況下,緩衝區與跟其對應的文件是同名的(不包括目錄名),不過這也 不是絕對的。用 C-x C-b 得到的緩衝區列表總是顯示緩衝區名。

緩衝區未必有對應文件。顯示緩衝區列表的緩衝區(叫做“Buffer List”)就 是這樣。這個 TUTORIAL.cn 緩衝區起初沒有對應的文件,但是現在有了,因爲 在前一節你輸入了 C-x C-s , 將它保存成了一個文件。

Messages”緩衝區也沒有對應文件,這個緩衝區裏存放的都是在 Emacs 底部 出現的消息。

輸入 C-x b Messages Return 瞅瞅消息緩衝區裏都有什麼東西。
然後再輸入 C-x b TUTORIAL.cn Return 回到這裏。

如果你對某個文件做了些修改,然後切換到另一個文件,這個動作並不會幫你把 前一個文件存盤。對第一個文件的修改仍然僅存在於 Emacs 中,也就是在它對 應的緩衝區裏。並且,對第二個文件的修改也不會影響到第一個文件。這很有用, 但也意味着你需要一個簡便的辦法來保存第一個文件的緩衝區。先切換回那個緩 衝區,再用 C-x C-s 存盤,太麻煩了。你需要一個更簡便的方法,而 Emacs 已 經爲你準備好了:

C-x s 保存多個緩衝區
C-x s 會找出所有已被修改但尚未存盤的緩衝區,然後向你逐個詢問:是否需要 存盤?

插入一行文字,然後輸入 C-x s。
它應該會問你,是否要儲存名爲 TUTORIAL.cn 的緩衝區? 按“y”告訴它你想存盤。

10 命令集擴展(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 會在退出之前提醒你存盤的。)

如果你使用圖形界面,你不需要任何特殊的命令來切換 Emacs 和其他應用程序。 你可以使用鼠標或者窗口管理器的命令。然而,如果你使用只能同時顯示一個應 用程序的文本終端,你需要“掛起” Emacs ,以切換到其他的應用程序。

C-z 可以暫時離開 Emacs――當然,你還可以再回來。在允許 C-z 的系統中,C-z 會把 Emacs“掛起”,也就是說,它會回到 shell但不殺死 Emacs 的進程。在常 用的 shell 中,通常可以用“fg”或者“%emacs”命令再次回到 Emacs 中。

你最好在打算退出登陸的時候再用 C-x C-c。在把 Emacs 當做一個臨時的編輯 器的時候(比如被一個郵件處理程序調用),也可以用 C-x C-c 退出。

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”替換掉了。

11 自動保存(AUTO SAVE)
如果你已經修改了一個文件,但是還沒來得及存盤你的計算機就罷工了,那麼你 所做的修改就很可能會丟失。爲了避免這樣的不幸發生,Emacs 會定期將正在編 輯的文件寫入一個“自動保存”文件中。自動保存文件的文件名的頭尾各有一個 “#”字符,比如你正在編輯的文件叫“hello.c”,那麼它的自動保存文件就叫 “#hello.c#”。這個文件會在正常存盤之後被 Emacs 刪除。

所以,假如不幸真的發生了,你大可以從容地打開原來的文件(注意不是自動保 存文件)然後輸入 M-x recover file Return 來恢復你的自動保存文件。在 提示確認的時候,輸入 yes Return 。

12 回顯區(ECHO AREA)
如果 Emacs 發現你輸入多字符命令的節奏很慢,它會在窗格的下方稱爲“回顯區” 的地方給你提示。回顯區位於屏幕的最下面一行。

13 狀態欄(MODE LINE)
位於回顯區正上方的一行被稱爲“狀態欄”。狀態欄上會顯示一些信息,比如:

-: **- TUTORIAL.cn 63% L749 (Fundamental)

狀態欄顯示了 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-l C-l 將本行帶到屏幕的最上方。
輸入 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。
14 搜索(SEARCHING)
Emacs 可以向前或向後搜索字符串(“字符串”指的是一組連續的字符)。搜索命 令是一個移動光標的命令:搜索成功後,光標會停留在搜索目標出現的地方。

Emacs 的搜索命令是“漸進的(incremental)”。意思是搜索與輸入同時進行: 你在鍵盤上一字一句地輸入搜索詞的過程中,Emacs 就已經開始替你搜索了。

C-s 是向前搜索,C-r 是向後搜索。不過手別這麼快!彆着急試。

在按下 C-s 之後,回顯區裏會有“I-search”字樣出現,表明目前 Emacs 正處 於“漸進搜索”狀態,並等待你輸入搜索字串。按 Return 可以結束搜索。

輸入 C-s 開始一個搜索。注意敲慢一點,一次輸入一個字符。
慢慢輸入“cursor”這個詞,每敲一個字都停頓一下並觀察光標。 現在你應該已曾經找到“cursor”這個詞了。

再按一次 C-s,搜索下一個“cursor”出現的位置。
現在按四次 DEL ,看看光標是如何移動的。
敲 Return 結束搜索。
看仔細了麼?在一次漸進式搜索中,Emacs 會嘗試跳到搜索目標出現的位置。要 跳到下一個命中位置,就再按一次 C-s。如果找不到目標,Emacs 會發出“嗶” 的一聲,告訴你搜索失敗。在整個過程中,都可以用 C-g 來終止搜索。【你會發 現 C-g 會讓光標回到搜索開始的位置,而 Return 則讓光標留在搜索結果上, 這是很有用的功能。】

在漸進式搜索中,按 DEL 會“撤回”到最近一次搜索的命中位置。如果之前沒 有一個命中, DEL 會抹去搜索字符串中的最後一個字符。比如你已經輸入了 “c”,光標就停在“c”第一次出現的位置,再輸入“u”,光標停在“cu”第一次出現 的位置,這時再按 DEL ,“u”就從搜索字串中消失了,然後光標會回到“c”第 一次出現的位置。

另外,如果你在搜索的時候輸入了 control 或者 meta 組合鍵的話,搜索可能會 結束。(也有例外,比如 C-s 和 C-r 這些用於搜索的命令。)

前面說的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 與 C-s 相比除了搜索方向相反之外,其餘的操作都一樣。

15 多窗格(MULTIPLE WINDOWS)
Emacs 的迷人之處很多,能夠在屏幕上同時顯示多個窗格就是其中之一。

移動光標到這一行,然後輸入 C-l 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 可以遍歷所有窗格。“被選中的窗格”,也就是絕大多數的編輯 操作所發生的地方,是在你不打字時閃爍光標的那個窗格。其他的窗格有它們自 己的光標位置; 如果你在圖形界面下運行 Emacs ,這些光標是鏤空的長方形。

當你在一個窗格中編輯,但用另一個窗格作爲參考的時候,C-M-v 是很有用的命 令。無需離開被選中的窗格,你就可以用 C-M-v 命令滾動另外一個窗格中的文 字。【比如翻譯和校對就很適合用這種方式進行。】

C-M-v 是一個 CONTROL-META 組合鍵。如果你有 META (或 Alt)鍵的話,可以 同時按住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 關掉下方窗格。
16 多窗口(MULTIPLE FRAMES)
Emacs 可以創建多個窗口。窗口由許多窗格以及菜單、滾動條、回顯區等組成。 在圖形界面下,多個窗口可以同時顯示出來。在文本終端中,只能同時顯示一個 窗口。

輸入 M-x make-frame Return。
可以看到一個新的窗口出現在了你的屏幕上。

你可以在新的窗口裏做最初的窗口裏可以做的任何事情。第一個窗口沒有什麼特 別的。

輸入 M-x delete-frame Return.
這個命令將會關閉選中的窗口。

你也可以通過圖形系統來關閉某個窗口(通常是在窗口上面的某個角落裏的一個 “X”按鈕)。如果你關閉的是 Emacs 進程的最後一個窗口, Emacs 將會退出。

17 遞歸編輯(RECURSIVE EDITING LEVELS)
有時候你會進入所謂的“遞歸編輯”。遞歸編輯狀態由位於狀態欄的方括號所指 示,其中包含了用小括號來指明的模式名稱。比如說,你有時可能會看到 [(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 進行交互式替換的 時候你又用了 C-s 進行搜索,這時替換模式並沒有結束,但你又進入了搜索模式, 這就是所謂的遞歸編輯。】

離開遞歸編輯可以用 ESC ESC ESC。這是一個最通用的“離開”命令,你甚至可 以使用它來關掉多餘的窗格,或者離開小緩衝。

輸入 M-x 進入小緩衝;然後輸入 ESC ESC ESC 離開。
你不能用 C-g 退出遞歸編輯,因爲 C-g 的作用是取消“本層遞歸編輯之內”的 命令和其參數(arguments)。

18 獲得更多幫助(GETTING MORE HELP)
本快速指南的目的僅僅是幫助你在 Emacs 的海洋裏下水,不至於束手無策望洋興 嘆。有關 Emacs 的話題可謂汗牛充棟,這裏自然是難盡萬一。不過 Emacs 很理 解你求知若渴的心情,因爲它提供的強大功能實在是太多了。爲此,Emacs 提供 了一些命令來查看 Emacs 的命令文檔,這些命令都以 CONTROL-h 開頭,這個字 符也因此被稱爲“幫助(Help)字符”。

要使用幫助(Help)功能,請先輸入 C-h,然後再輸入一個字符以說明你需要什 麼幫助。如果你連自己到底需要什麼幫助都不知道,那麼就輸入 C-h ?,Emacs 會告訴你它能提供了哪些幫助。如果你按了 C-h 又想反悔,可以用 C-g 取消。

(如果你按 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 命令對應的函數名。命令的功能由函數完成,所以函數名 本身也可以被看成是最簡單的文檔――至少對於你已經學過的命令來說,它們的函 數名足以解釋它們的功能了。

多字符命令一樣可以用 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 會成爲你的主要 參考文檔。

19 更多精彩(MORE FEATURES)
想學習更多的使用技巧,Emacs 使用手冊(manual)值得一讀。你可以讀紙版的 書,也可以在 Emacs 中讀(可以從 Help 菜單進入或者按 C-h r)。提兩個你 可能會很感興趣的功能吧,一個是可以幫你少敲鍵盤的 completion(自動補全), 另一個是方便文件處理的 dired(目錄編輯)。

Completion 可以替你節省不必要的鍵盤輸入。比如說你想切換到 Message 緩 衝區,你就可以用 C-x b *M Tab 來完成。只要 Emacs 能夠根據你已經輸入的 文字確定你想要輸入的內容,它就會自動幫你補齊。Completion 也可用於命令 名和文件名。有關 Completion 的詳細說明可以在 Emacs Info 中的 “Completion”一節裏找到。

Dired 能夠在一個緩衝區裏列出一個目錄下的所有文件(可以選擇是否也列出子 目錄),然後你可以在這個文件列表上完成對文件的移動、訪問、重命名或刪除 等等操作。Dired 也在 Emacs 使用手冊中有詳細介紹,參見“Dired”一節。

Emacs 使用手冊裏還有許許多多的精彩功能等着你來了解。

20 總結(CONCLUSION)
要退出 Emacs 請用 C-x C-c。

本文完全是爲零起點新手所寫的起步教程。如果你覺得哪裏還看不明白,千萬不 要懷疑自己,那一定是我們沒有寫好。我們永遠歡迎你的不滿和抱怨。

21 翻譯(TRANSLATION)
翻譯:孫一江 [email protected] 維護:薛富僑 [email protected] 校對:水木社區(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]
對於其他沒有提到的術語,讀者可以參考 Emacs 使用手冊裏的術語表。

22 版權聲明(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 is a part of GNU Emacs. It is copyrighted and comes with permission to distribute copies on certain conditions:

Copyright © 1985, 1996, 1998, 2001-2014 Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see http://www.gnu.org/licenses/.

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 © 1985, 1996, 1998, 2001-2014 Free Software Foundation, Inc.

本文件爲 GNU Emacs 的一部分。

GNU Emacs 爲自由軟件;您可依據自由軟件基金會所發表的GNU通用公共授權 條款,對本程序再次發佈和/或修改;無論您依據的是本授權的第三版,或 (您可選的)任一日後發行的版本。

GNU Emacs 是基於使用目的而加以發佈,然而不負任何擔保責任;亦無對適 售性或特定目的適用性所爲的默示性擔保。詳情請參照GNU通用公共授權。

您應已收到附隨於 GNU Emacs 的GNU通用公共授權的副本;如果沒有,請參照 http://www.gnu.org/licenses/.

敬請閱讀文件“COPYING”,然後向你的朋友們分發 GNU Emacs 拷貝。讓我們以使 用、編寫和分享自由軟件的實際行動來共同祛除軟件障礙主義(所謂的“所有 權”)!

再次感謝Richard Stallman以及所有爲Emacs做出貢獻的人!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章