有關Emacs的一點資料

來源:互聯網
上載者:User
Emacs 的線上輔助說明

EMACS 是一個整合的工作環境,初次使用 EMACS 或不熟悉 EMACS 的人,常會不知所措。所以,EMACS 提供了非常便捷 且功能強大的線上輔助說明(on-line help),來協助使用 EMACS 。

Emacs 的基本知識

在未討論 EMACS 的線上輔助說明時,先談談如何啟動 EMACS。 啟動EMACS 的方法很簡單,只要在螢幕的提示下鍵入 ``emacs'' 即可;離開 EMACS, 只要鍵入``Ctrl-x Ctrl-c''即可離開 EMACS 。 鍵入 ``Ctrl-x Ctrl-c'' 的方法是,先按住鍵盤上的 Ctrl 鍵不放再按下 英文字的 ``x'' 即可。鍵入 ``Ctrl-c'' 的方法一樣,先按住鍵盤上的 Ctrl 鍵不放再按下英文字的 ``c'' 即可。當然進入與離開 EMACS 的方法還有多種,這裡只是介紹一種方法,讓使用者可以很快的使用 EMACS 的線上輔助說明,至於其它的方法會在以下各章節中陸續提及。

除了進入與離開 EMACS 的方法必須知道外,還有一個指令非常用那就是 ``Ctrl-g''。 ``Ctrl-g'' 可用來取消鍵入的指令,如果不想執行所鍵入 的指令,可以隨時將其取消。

EMACS 鍵入指令的方法有二種:

Ctrl 鍵
Meta 鍵
所有 EMACS 的指令都可以 Meta 鍵表示出來,鍵盤上若無
Meta 鍵,則可以 ESC 鍵來取而代之。常用的 EMACS 指令通常
會有一個 Hotkey 與之連結。 Hotkey 的構成,通常是以 Ctrl 為
開頭的型態出現。例如 ``Ctrl-x Ctrl-c'' 這一個 Hotkey,則代表了
EMACS 指令的 ``save-buffers-kill-emacs'' 。若要使用 Meta 鍵
來表達與 Ctrl-x Ctrl-c 相同的效果 ,則必須鍵入

``ESC-x save-buffers-kill-emacs''。

使用 Meta 鍵,可以利用 EMACS completion 的功能。因為 completion 可以讓 使用者鍵入最少的字,就可使系統喚起所欲執行的命令。以下 就介紹 EMACS的 completion。

EMACS completion的意思是,只要鍵入字串的部份, EMACS 會將其餘的部份自動填入其應在的位置。如果所給予的 字串不足以決定其餘的部份,EMACS 會將所有可能的結果都列出來, 以供使用者來決定所需要的字串名稱。 completion 所適用的範圍如下:

指令
特定目錄下的檔案
緩衝區
EMACS 的變數
至於何謂特定目錄下的檔案、緩衝區以及 EMACS 的變數,會在
以後的章節中陸續談及。此處討論completion ,只是為了
使用 completion 於 EMACS 的線上輔助說明。

使用 EMACS 的 completion 有三種方法:

TAB 儘可能將其餘的字串填滿。
SPACE 將 puncutation 字元之前的字填滿,填充的字不會超過一個字以上。
? 將所有可能的 completions 選擇都列出來。
使用completion 的做法是將部份字串鍵入後,再按下 TAB、
SPACE 或 ? 即可。例如,鍵入 ``M-x au TAB'' ,則螢幕的最
下方會出現 ``鍵入 TAB 則螢幕會在另一個視窗出現:

    Possible completions are:
    auto-fill-mode                  auto-lower-mode
    auto-raise-mode                 auto-save-mode

若鍵入 ``M-x au SPACE'',則螢幕的最下方也會出現 ``M-x auto-''。
若鍵入 SPACE ,則螢幕的另一個視窗也會出現如下的命令:

    Possible completions are:
    auto-fill-mode                 auto-lower-mode
    auto-raise-mode                 auto-save-mode

這似乎意味著 TAB 與 SPACE 的功能一樣,其實不然,二者的差異
可從下一個例子看出。鍵入 ``M-x auto-f TAB'',可得
``M-x auto-fill-mode'';但鍵入 ``M-x auto-f SPACE'',只能得到
``M-x auto-fill-'' ,欲得到 ``M-x auto-fill-mode'',則必須再鍵入一次
SPACE。這就是前面所說的 ``SPACE'' 一次只填一個 ``puncutation''
之前的一個字的意思;而 TAB 則是儘可能的將所有可以判斷出來的
字串呈現出來,其顯示字串的長度並不以一個 ``puncutation'' 為限。
鍵入 ? 的作用,是在 EMACS 的另一個視窗上顯示所有可能的字串,
此時使用者可根據視窗上的訊息鍵入適當的命令。例如鍵入 ``M-x au ?'' ,
螢幕上出現另一個視窗顯示如下的資訊:

    Possible completions are:
    auto-fill-mode                   auto-lower-mode
    auto-raise-mode                 auto-save-mode

鍵入 ``M-x au ?'' 的地方,則不會執行 completion 的動作,
這是 ? 與 TAB 、SPACE 最大不同的地方。

若視窗的內容太多無法一次窮盡,此時就必需捲動視窗。捲動視窗
可以用 ``Ctrl-v'' 與 ``Meta-v'' 二個指令來使視窗做上下的移動。

Emacs 的自學教材

想快速瞭解 EMACS 的人,可以參考 EMACS 的自學教材(tutorial)。 使用 EMACS 自學教材的方法很簡單,只要鍵入 ``Ctrl-h t'' (help-with-tutorial) 即可進入 EMACS 的自學的狀態了。

EMACS 的自學教材可分成以下幾部份:

介紹 EMACS 指令的鍵入方法,即介紹 Ctrl 與 Meta 鍵 。
viewing screenfuls
basic cursor control
Ctrl-g 的用法
EMACS 的 window 與 multiple windows
inserting and deleting
undo
EMACS 檔案的處理
EMACS 的 buffers
extending the command set
簡介 EMACS 的 mode line 與 echo area
searching
recursive editing levels
getting more help
leaving EMACS
有關 EMACS 的著作權問題
EMACS 的自學教材是以編輯功能的介紹為主。雖然 EMACS 的功能
不只如此, 但編輯是 EMACS 的最基礎的功能,要瞭解 EMACS
當然要從它的基本著手。所以 EMACS的自學教材也以編輯的介紹
為主,至於 EMACS 其它的工件環境,是無法從 此自學教材中得知。
所以,本文會在第三章簡介 EMACS 的工作環境。

Ctrl-h 的用法

EMACS 除了自學教材可供參考外,它還提供了其它的線上輔助說明 功能,讓使用者可以隨時查閱需要的相關訊息。 EMACS 的線上輔助說明都是以 ``Ctrl-h'' 為開端,其種類 有以下二種:

Ctrl-h
Ctrl-h Ctrl-h

鍵入 Ctrl-h (help-command),螢幕的最下端會出現 如下的訊息: C-h(Type ? for further options)- 此時的 ``Ctrl-h'' 只是用做前置字(prefix key),它是用來等候 使用者輸入其它的指令。若輸入 ``?'',則螢幕的下方會出現所有 可使用的選擇,使用者可根據需要來選擇合適的選項。 若鍵入兩次的 ``Ctrl-h''Ctrl-h (felp-for-help),螢幕下方 會出現: type one of the options listed or Space to scroll 此時 EMACS 會另外開啟一個視窗,將所有與求助的選項都列出來, 且會做一簡要的說明,要捲動此視窗則鍵入 Space。此新開啟的 視窗共有二十一個選項,包括: a b c f C-f i k C-k l m n p s t v w C-c C-d C-n C-p C-w. 使用這二十一個選擇項的方法非常簡單,只要在 ``Ctrl-h'' 之後 輸入任一個選擇就可以了。例如,要選擇 ``a'' ,則執行 ``Ctrl-h a'' 即可。

現在將 EMACS 常用的線上輔助說明一一作解釋。EMACS 常用的 線上輔助說明有:

Ctrl-h c
Ctrl-h k
Ctrl-h w
Ctrl-h a
Ctrl-h v
Ctrl-h i
``Ctrl-h c'' 與 ``Ctrl-h k'' 的功能相似, 二者都是在尋求與 Hotkey
有關的訊息。二者唯一的差別,就在於對指令的解釋詳細與否而已。
`` Ctrl-h c'' 是簡述與 Hotkey 連結的命令,而 ``Ctrl-h k''則詳述連結
Hotkey 的命令。二者都有一個前題的預設,那就是都是Crowdsourced Security Testing道
Hotkey 為何,而想進一步知道此 Hotkey 所使用命令的名稱。今舉
``Ctrl-x Ctrl-c'' 的例子來說明二者的差別。

鍵入 ``Ctrl-h c RET'' (RET,亦即鍵盤上的 Enter 鍵。任何一個指令輸入完畢時,必需 緊跟著一個 Enter。此作用是用以告知系統,指令輸入已經結束, 可以開始執行相關的動作了。) 則螢幕下方會出現 Describe key briefly: - 在 ``:'' 的後面鍵入 ``Ctrl-x Ctrl-c'',則在原先出現 Describe key briefly: - 的地方則出現 C-x C-c runs the command save-buffers-kill-emacs'' 鍵入 ``Ctrl-h k RET'',則螢幕下方出現 Describe key: - 在 ``:'' 的後面鍵入 ``Ctrl-x Ctrl-c'',則 EMACS 會另以一個 視窗顯示如下的訊息: save-buffers-kill-emacs: Offer to save each buffer, then kill this emacs process. With prefix arg, silently save all file-visiting buffers, then kill. 此訊息的第一行是 Hotkey 所連結命令的全名,以後的行數則是 對此命令的詳細說明。 `` Ctrl-h w''w (where-is) 的用法與 `` Ctrl-h c'' 和 `` Ctrl-h k'' 正好相反。 `` Ctrl-h w'' 是在知道EMACS 的命令而欲知是否有相對應的 Hotkey 時所使用的。例如鍵入 ``Ctrl-h w'',螢幕的下方會出現

where is command:

在 ``:'' 之後鍵入 ``save-buffers-kill-emacs'',則在原處會出現

save-buffers-kill-emacs is on C-x C-c 所以想知道命令是否有相對應的 Hotkey,可以此方法查知。 ``Ctrl-h w'' 可以使用 EMACS 的 completion ,但其最大的 不便處,就是必需給予指令的第一個字元。如 ``save-buffers-kill-emacs'', 必需先給予以 s 開頭的子字串,才能逐步使用 EMACS 的 completion 。若不鍵入 s 開頭的子串,而鍵入 s 之後的 任何字串,則無法找到相對應的指令,所以使用 ``Ctrl-h w'' 必需要記著指令的第一個字。除此之外, EMACS 的線上輔助說明 還提供了另一種協助,可讓使用者鍵入任意的子字串,都可以找到 相對應的指令,那就是 `` Ctrl-h a''。 鍵入 ``Ctrl-h a'' 則螢幕的下方會出現 command-apropos (regexp): 此時只要給予與命令相關的任一子字串或 `` regular expression'' 6.3 節會討論何謂 regular expression)再按下 RET, EMACS 會另開一個視窗,將所有涵蓋此子字串或 regular expression 的指令全列出來。 此指令與 `` Ctrl-h w'' 最大不同處如下:

使用 `` Ctrl-h a'' 所鍵入的子字串,並不限於指令的第一個字元, 而 `` Ctrl-h w'' 則必需以指令的第一個字為起始字。 使用 `` Ctrl-h a'',可給予指令中任何位置的子字串。
 
`` Ctrl-h a'' 無法使用 completion,而 `` Ctrl-h w'' 可使用 completion。
 
`` Ctrl-h a'' 主要的目的是當使用者無法正確的鍵入指令的 第一個字元時,可以藉此將所有包含使用者記得的部份子字串 的指令都列舉出來。
EMACS 除了以上幾個常用的線上輔助說明之外, 還有一個非常實用的資料查閱中心,那就是 `` Ctrl-h i''。 `` Ctrl-h i'' 執行 ``Info program'' ,它主要是用來瀏 已建構成 樹狀結構的檔案檔案。目前所有與 EMACS 有關的檔案檔案都可 透過 Info 來閱覽,最終所有與 GNU 有關的檔案資料,將可以由此 而窺得其檔案檔案全貌。
使用 info 模式(info mode)的方法很簡單,只要鍵入 ``Ctrl-h i'' 就可查閱所有與 EMACS 相關的檔案資料。進入了 info 之後要如何 有效使用它呢?會在下一節詳細討論。
以上所談的,就是較常使用的線上輔助說明種類。 若線上輔助說明的訊息,是以另一個視窗顯示出來,此時的訊息 又無法一「幕」瞭然。想參考其它部份的資料,就必需捲動視窗。 視窗捲動的指令,可參考如下的方法:
Ctrl-x 1 (delete-other-windows)
(本文所有與 Hotkey 相對應的指令都放於括弧中。 保留遊標所在的視窗,而將其它的視窗關閉。
Ctrl-x o (other-window)
可使遊標在不同的視窗間切換。換言之,如果遊標在工作的視窗, 可以此指令將遊標移出顯示線上輔助說明訊息的視窗,反之亦然。
Ctrl-v (scroll-up)
將螢幕向上卷,如此則可看清螢幕下方的訊息。
Meta-v (scroll-down)
螢幕向下卷,如此可以重複參考已經看過的資料。

Emacs 的 info 使用說明

前已略述 info 的使用法,現在就更進一步詳述之。在 EMACS 的線上輔助說明功能中,info 的內容可說是最為豐富的。因為, 任何線上輔助說明的檔案都可在 info 模式中找到。因為,info 就是用來放置整個 EMACS 手冊。

info 對於 EMACS 檔案的安排是採取樹狀的結構, 所以是以根部(root)為出發點。info 執行 info program, 使用 info program 的方法有二:
Ctrl-h i
ESC-x info
info 對於檔案的編排,是以 Hypertext 的方法來處理所有的 相關檔案。當鍵入 ``Ctrl-h i'' 或 ``ESC-x info'' 後,會先進入 info 樹狀(tree)結構的最頂端。如下就是進入 info 時的第一個畫面: -*- Text -*- This is the file .../info/dir, which contains the topmost node of the Info hierarchy. The first time you invoke Info you start off looking at that node, which is (dir)Top. ? File: dir Node: Top This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "d" returns here, "q" exits, "?" lists all INFO commands, "h" gives a primer for first-timers, "mTexinfo" visits Texinfo topic, etc. --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) --- * Menu: The list of major topics begins on the next line. * Info: (info). Documentation browsing system. * Emacs: (emacs). The extensible self-documenting text editor. * VIP: (vip). A VI-emulation for Emacs. * Texinfo: (texi.info). With one source file, make either a printed manual (through TeX) or an Info file (through texinfo). Full documentation in this menu item. * Termcap: (termcap). The termcap library, which enables application programs to handle all types of character-display terminals. * Regex: (regex). The GNU regular expression library. * Cpp: (cpp.info). C pre-processor. * Gcc: (gcc.info). GNU C Compiler --- an ANSI C Compiler developed by FSF. * Gzip: (gzip.info). GNU zip program --- an compress package developed by FSF. * Ispell: (ispell.info). A spelling checker. * Libg++: (libg++.info). G++ libraries. * Gmake: (make.info). A make utility developed by FSF. * Bison: (bison.info). GNU Yacc. * Gawk: (gawk.info). GNU awk --- pattern scanning and processing language. * Gdb: (gdb.info). GNU debugger. * Info-stnd: (info-stnd.info). Stand along GNU info. * Makeinfo: (makeinfo.info). Program for producing *.info file from *.texi file. * Graphics: (graphics.info). A set programs for producing plot files and display them on Tektronix 4010, PostScript, and X window system compatible output devices. * m4: (m4.info). m4 is macro processor, in the sense that it copies its input to the output, expending macros as it goes. GNU m4 is mostly compatible with system V, Release 3 version. * Hyperbole: (hypb.info). GNU Emacs-based everyday information management system. Use {C-h h d d} for a demo. Include Smart Key context-sensitive mouse or keyboard key support, a powerful rolodex, and extensible hypertext facilities including hyper-links in mail and news messages. * Standards Coding Style:(standards.info). GNU Coding Style. 此時,出現在螢幕的第一列是標題(header),它包含此結點 (node)的基本訊息。表頭所提供的訊息,最多可有五件事情:
結點所在的檔案(File)
結點的名稱(node)
此結點的下一個結點(Next)
此結點的上一個結點(Prev)
此結點的上一層結點(up)

此時的畫面,只顯示了二件事情,是因為此畫面為 info 樹狀結構 的最上層。

在表頭之下的資訊,是用來告知如何用 info 。它提供了五件事情,現一一說明。

h
不知如何使用 info 模式者,可在進入 info 模式後,使用 info 的線上 輔助說明。欲使用 info 的線上輔助說明,只要在進入 info 模式後,鍵入 ``h'' 即可。此不只是一個線上輔助說明,還是一個教學指引。跟隨著它的說 明,即可明了如何使用 info 模式.
d
``Ctrl-h i'' 指令,會先進入 info 樹狀結構的根部。任何情況下, 可鍵入 ``d'' 回到此根部。
?
想知所有與 info 有關的指令,只要鍵入 ``?'',就可以得知所有 指令的全貌。
q
欲離開 info,只要鍵入 ``q'' ,就可以離開 info 而回到先前的 緩衝區。
m Texinfo< Return >
這一個指令是用來使用 info 的 Menu Item。使用的方法如下:
鍵入 ``m'' 。
鍵入所欲參考的檔案名稱,也可使用 completion 的功能來簡化輸入的工作。
鍵入 RET。

何為 Menu Item 會再解釋。

在這五個指令之下的是,此結點可以使用的 Menu Item。 使用者可以直接至所要參考的 Menu 之下,鍵入 ``RET''。此時, info 會將此 Menu 的相關檔案顯示在螢幕上。 使用 info 除了以上的指令之外,還有幾個必需知道的指令。 現介紹如下:
n
將結點移至下一個與此結點相連的結點。
p
將結點移至上一個與此結點相連的結點。
u
將結點移至上一層的結點。
m
以上結點間移動的指令,必需結點間有相串連的關係。 若想做跨越的移動,這幾個指令是無法做到的。此時,必需透過 Menu 來做誇越結點的檔案閱讀。 使用 Menu 的方式有二:
``mTexinfo''
這種使用 menu 的方法,在進入 info 的第一個畫面就可以看到了。 此方法由三件事共同組成:
m 鍵入 m 是使用 menu 的指令。
Texinfo 鍵入 m 時,minibuffer 會出現
menu item: 此時,可在其後輸入所欲閱 的檔案名稱。所以,Texinfo 意 指檔案的名稱。此時,就可以鍵入畫面上以 ``*'' 為開頭 的名稱。如果是剛進入 info ,可使用的 Texinfo 名稱有: Info、 Emacs、 VIP、 Forms、 GNUS、 CL、 Gcc、 Cpp、 Makeinfo、 Info-stnd、 Texi、 Hyperbole、 Octave
RET
待檔案名稱輸入完畢後,要按下 RET ,以告知系統檔案名稱已經 輸入完成了,可以開始執行的動作了。
直接鍵入 ``RET''
如果在閱 某一個結點時,檔案中出現以 ``* Menu:'' 為首的 文字,就表示此列以下若有以 ``*'' 為開頭的列,均為一個 可以使用的 Menu Item 。此時,可以直接鍵入 ``RET'' 參考 另一個結點的檔案。

使用 Menu 有些條件,就是所要使用的 Menu,必需在此結點 的檔案中有明列出來的才可以使用。要使用其它結點的 Menu, 必需先到有要使用的 Menu 的結點,才可以使用它的 Menu。 Menu 有其一定的結構。所有 Menu 的第一列,都是以 `` Menu:'' 為開端。如下所示: * Menu: The list of major topics begins on the next line. 此列之後的所有列,只要以 `` *'' 為開始的列,就表示一個可以 使用的 item。 Menu Item 的標記法如下所述: * Info: (info). Documentation browsing system. 它主要由四個部份主成:

*
每一個 Menu Item 都是以 ``*'' 為開頭。
Subtopic:
``*'' 之後就是 Subtopic 的名稱,再加上一個 ``:''。 info 就是根據此 Subtopic 找到所對應的結點名。此例子的 Subtopic 的名稱就是 ``Info''。 如果要以指令 ``m'' 的方式, 使用Menu Item 所要給予的 Texinfo 的名稱就是此 Subtopic 的名稱。
node name
在 Subtopic : 之後就是所使用的結點名。一般為了使用上 的方便,會儘可能的使用相同的 Subtopic 和結點的名稱。 若二者的名字相同時,在Subtopic 後的結點名會省略而以 兩個 ``:''表示之。如 ``* Info::''。
node description
結點後面的內容是選擇性,它主要是用來概略描述此結點。
l
如果想要回到前一個(last)所參考過的結點,可以使用指令 l 一步一步的往回走。
b
指令 b 可以使遊標移至檔案的最前端。
SPC
若檔案太長可鍵入空白鍵( SPC)來捲動螢幕。
Ctrl-g
任何時候想要取消所鍵入的指令,可鍵入 Ctrl-g

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.