1. 程式人生 > >Emacs 快速指南(中文翻譯)

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-<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-g。 下文中左邊頂行的“: >>”字樣用來提示你嘗試鍵盤命令。比如: [本頁當中特意留出一些空白是出於教學目的,請繼續往後閱讀] >> 現在輸入 C-v (檢視下一屏文字)移動到下一屏。 (別緊張,在輸入字元 v 的同時注意要按住 CONTROL 鍵) 從現在開始,每讀完當前一屏你都需要這樣做一次。 值得注意的是,當你從上一屏滾到下一屏時,中間會有兩行的重複;這樣做是為 了維持滾屏的連續性,方便你順暢、連續地閱讀。 用編輯器,開門第一件事就是學會在文字中移動。你已經知道了 C-v 可以向下移 動一屏,要往上移,請用 M-v (也就是按住 META 鍵,然後輸入v,如果你沒有 META、EDIT 或 ALT 鍵那麼就先按 <ESC> 再按 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 取消了引數。 如果你不小心按了一下 <ESC>,你也可以用 C-g 來取消它。 【這個說法似乎有問題,因為按照這個按鍵順序輸入的應該是 C-M-g。 取消 <ESC> 的正確做法是再連按兩次 <ESC>。】

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 了,在這種情況下可以使用[email protected]。】,然後將游標移動到你準備移除的 文字的另一端。這個時候, 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 快速指南中文翻譯

  Emacs 快速指南 目錄 1. 小結(SUMMARY)

vue-cli簡介中文翻譯

註冊 custom 默認 ebp 不能 元數據 sim tar template vue-cli是一個簡單的vuejs腳手架命令行工具。 安裝 準備:Node.js(>=4.x,推薦6.x版本),npm版本3以上和Git。 $npm install -g vue-c

BCI Competition 2008 - Graz data set B中文翻譯

R. Leeb 1 , C. Brunner 1 , G. R. M uller-Putz 1 , A.Schlogl 2 , and G.Pfurtscheller 1          

RTMP協議v1.0中文翻譯

摘要   此備忘錄描述了 Adobe公司的實時訊息傳輸協議(RTMP),此協議從屬於應用層,被設計用來在適合的傳輸協議(如TCP)上覆用和打包多媒體傳輸流(如音訊、視訊和互動內容)。 目錄 1.簡介 1.1.術語 2.貢獻者 3.定義 4.位元組序,對齊,和時間格式 5.RTMP塊流 5

ASoC 概述中文翻譯 / ASoC Overview

    本文為 ASoC 框架的概述性文件,翻譯自 Linux 核心原始碼文件中的 Documentation/sound/alsa/soc/overview.txt,遵循 GPL 協議。     文中如有翻譯不當的地方,請不吝指正。 【譯文正文】 ASoC層 ====

部分opencv中的GPU加速函式中文翻譯

由於專案需要,翻譯了一部分可以用於我現在專案的opencv函式,記錄於此,原始英文文件來自於http://blog.csdn.net/mtt_sky/article/details/42607839。 getCudaEnableDeviceCount:返回已安裝CUDA裝置的數量;

DAPM 概述中文翻譯/ dapm.txt

    本文為 DAPM (Dynamic Audio Power Management,動態音訊電源管理)的概述性文件,翻譯自 Linux 核心原始碼文件中的 Documentation/sound/alsa/soc/dapm.txt,遵循 GPL 協議。    

Android Studio 2.0 正式版公布啦 首次中文翻譯

2.0 play user attribute ast 調試 iou osi watermark Android Studio 2.0 公布了,添加了一些新特性: 1. 更加完好的 Instant Run 2. 更快的 A

RabbitMQ消息隊列本人親自中文翻譯

col 學習 解釋 ont color font 英文解釋 中文註釋 spa 最近幾天會盡快把RabbitMQ學習完畢,在這之後會把消息隊列的英文註釋全部手打翻譯成純中文註釋,讀者就不用自己再去讀英文解釋了!RabbitMQ消息隊列(本人親自中文翻譯)

DPDK快速上手指南18.02

DPDKDPDK快速上手(linux) 本文檔主要來自linux_gsg-18.02.pdf的翻譯,翻譯肯定有不妥之處,請批評指正,我會隨後修改,不勝感激。 1. 介紹 本文檔包含有關DPDK(Data Plane Development Kit的縮寫)軟件的安裝和配置的說明,目的就是讓用戶快

Tmocat的service.xml配置文件詳解中文翻譯

bean ssl eth call 項目 redirect 類型 describe update Tmocat的service.xml配置文件 英文原版 中文手譯 <?xml version=‘1.0‘ encoding=‘utf-8‘?&g

Vue.js 3.0 PPT附部分中文翻譯

Evan You 剛剛釋出了最新的 Vue 3 和他在 Vue Toronto 的演講內容: Tweet PPT Vue 3.0 將會發生什麼? 更快 更小 更易維護 更易於原生 讓開發者更爽

Atmel Studio 7.0 快速上手指南基於ASF

就在最近,Atmel終於推出了新版本IDE——Atmel Studio 7.0,該版本採用了微軟最新的 Visual Studio 2015 平臺,在速度、效能和程式碼視覺風格上都體現的淋淋盡致,用起來非常順手,下面將結合例項,介紹AtmelStudio 7.0 的使用方法。  

Android官方技術文件翻譯——Gradle 外掛使用者指南1-3

不知道是什麼網路問題,上午一直髮不了部落格,其他頁面基本正常,就是在寫部落格這裡,每次開啟都是響應超時。剛才用了VPN,順便試了一下,居然可以編輯。想是CDN之類的問題吧。 這次翻譯的是Gradle 外掛使用者指南,也就是Gradle上的Android外掛的官方文件。文件很

Java font.properties 配置檔案中文/翻譯中。。。

The Java 2 platform defines five logical font names that every implementation must support: Serif, SansSerif, Monospaced, Dialog, and Dial

ASP.NET Core 中文文件 第二章 指南4.10檢查自動生成的Detail方法和Delete方法

開啟 Movie 控制器並檢視 Details 方法: // GET: Movies/Details/5 public async Task<IActionResult> Details(int? id) { if (id == null) { return No

ASP.NET Core 中文文件 第二章 指南4.1ASP.NET Core MVC 與 Visual Studio 入門

這篇教程將告訴你如何使用 Visual Studio 2015 構建一個 ASP.NET Core MVC Web 應用程式的基礎知識。 安裝 Visual Studio 和 .NET Core 安裝 Visual Studio Community 2015。選擇 Community 下載並執行預設安裝

ASP.NET Core 中文文件 第二章 指南4.6Controller 方法與檢視

我們已經初步的建立了一個 movie 應用程式,但是展示並不理想。我們不希望看到 release date 欄位顯示時間並且 ReleaseDate 應該是兩個單詞。 開啟 Models/Movie.cs 檔案並新增下面高亮的程式碼行: public class Movie { public in

ASP.NET Core 中文文件 第二章 指南4.5使用 SQL Server LocalDB

ApplicationDbContext 類負責連線資料庫並將 Movie 物件和資料記錄進行對映。 Startup.cs 檔案中,資料庫上下文是在 ConfigureServices 方法中用 Dependency Injection 容器進行註冊的。 // This method gets called

SAPUI5教程——最全中文學習指南必看

前言 技術的變革日新月異,求知的迫切與日俱增,現如今雲端計算,大資料,虛擬現實,無一不充斥著我們的眼簾,這一切的宗旨,旨在為憑藉更高的體驗,滿足更多的需求,追求更高的價值,創造更多的利益。 那麼我們今天要講的是SAP公司所推出的一個革新的使用者體驗——SAP