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 键入指令的方法有二种:

所有 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 可以让 使用者键入最少的字,就可使系统唤起所欲执行的命令。以下 就介绍 EMACScompletion

EMACS completion的意思是,只要键入字串的部份, EMACS 会将其余的部份自动填入其应在的位置。如果所给予的 字串不足以决定其余的部份,EMACS 会将所有可能的结果都列出来, 以供使用者来决定所需要的字串名称。 completion 所适用的范围如下:

至於何谓特定目录下的档案、缓冲区以及 EMACS 的变数,会在
以後的章节中陆续谈及。此处讨论completion ,只是为了
使用 completion EMACS 的线上辅助说明。

使用 EMACS completion 有三种方法:

 
使用completion 的做法是将部份字串键入後,再按下 TABSPACE ? 即可。例如,键入 ``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 的自学教材可分成以下几部份:

  1. 介绍 EMACS 指令的键入方法,即介绍 Ctrl Meta 键 。
  2. viewing screenfuls
  3. basic cursor control
  4. Ctrl-g 的用法
  5. EMACS window multiple windows
  6. inserting and deleting
  7. undo
  8. EMACS 档案的处理
  9. EMACS buffers
  10. extending the command set
  11. 简介 EMACS mode line echo area
  12. searching
  13. recursive editing levels
  14. getting more help
  15. leaving EMACS
  16. 有关 EMACS 的版权问题
EMACS 的自学教材是以编辑功能的介绍为主。虽然 EMACS 的功能
不只如此, 但编辑是 EMACS 的最基础的功能,要了解 EMACS
当然要从它的基本著手。所以 EMACS的自学教材也以编辑的介绍
为主,至於 EMACS 其它的工件环境,是无法从 此自学教材中得知。
所以,本文会在第三章简介 EMACS 的工作环境。

Ctrl-h 的用法

EMACS 除了自学教材可供参考外,它还提供了其它的线上辅助说明 功能,让使用者可以随时查阅需要的相关讯息。 EMACS 的线上辅助说明都是以 ``Ctrl-h'' 为开端,其种类 有以下二种:

键入 Ctrl-h (help-command),萤幕的最下端会出现 如下的讯息: C-hType ? 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'' 的功能相似, 二者都是在寻求与 Hotkey
有关的讯息。二者唯一的差别,就在於对指令的解释详细与否而已。
`` Ctrl-h c'' 是简述与 Hotkey 连结的命令,而 ``Ctrl-h k''则详述连结
Hotkey 的命令。二者都有一个前题的预设,那就是都是先知道 
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)再按下 RETEMACS 会另开一个视窗,将所有涵盖此子字串或 regular expression 的指令全列出来。 此指令与 `` Ctrl-h w'' 最大不同处如下:

  1. 使用 `` Ctrl-h a'' 所键入的子字串,并不限於指令的第一个字元, `` Ctrl-h w'' 则必需以指令的第一个字为起始字。 使用 `` Ctrl-h a'',可给予指令中任何位置的子字串。
  2.  
  3. `` Ctrl-h a'' 无法使用 completion,而 `` Ctrl-h w'' 可使用 completion
  4.  
`` Ctrl-h a'' 主要的目的是当使用者无法正确的键入指令的 第一个字元时,可以借此将所有包含使用者记得的部份子字串 的指令都列举出来。
EMACS 除了以上几个常用的线上辅助说明之外, 还有一个非常实用的资料查阅中心,那就是 `` Ctrl-h i''`` Ctrl-h i'' 执行 ``Info program'' ,它主要是用来浏 已建构成 树状结构的文件档案。目前所有与 EMACS 有关的文件档案都可 透过 Info 来阅览,最终所有与 GNU 有关的文件资料,将可以由此 而窥得其文件档案全貌。
使用 info 模式(info mode)的方法很简单,只要键入 ``Ctrl-h i'' 就可查阅所有与 EMACS 相关的文件资料。进入了 info 之後要如何 有效的使用它呢?会在下一节详细讨论。
以上所谈的,就是较常使用的线上辅助说明种类。 若线上辅助说明的讯息,是以另一个视窗显示出来,此时的讯息 又无法一「幕」了然。想参考其它部份的资料,就必需卷动视窗。 视窗卷动的指令,可参考如下的方法:

Emacs info 使用说明

前已略述 info 的使用法,现在就更进一步详述之。在 EMACS 的线上辅助说明功能中,info 的内容可说是最为丰富的。因为, 任何线上辅助说明的文件都可在 info 模式中找到。因为,info 就是用来放置整个 EMACS 手册。

info 对於 EMACS 文件的安排是采取树状的结构, 所以是以根部(root)为出发点。info 执行 info program, 使用 info program 的方法有二:
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)的基本讯息。表头所提供的讯息,最多可有五件事情:
  1. 结点所在的档案(File
  2. 结点的名称(node
  3. 此结点的下一个结点(Next
  4. 此结点的上一个结点(Prev
  5. 此结点的上一层结点(up

此时的画面,只显示了二件事情,是因为此画面为 info 树状结构 的最上层。

在表头之下的资讯,是用来告知如何用 info 。它提供了五件事情,现一一说明。

在这五个指令之下的是,此结点可以使用的 Menu Item。 使用者可以直接至所要参考的 Menu 之下,键入 ``RET''。此时, info 会将此 Menu 的相关文件显示在萤幕上。 使用 info 除了以上的指令之外,还有几个必需知道的指令。 现介绍如下:

回主画面