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 可以让
使用者键入最少的字,就可使系统唤起所欲执行的命令。以下
就介绍 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 指令的键入方法,即介绍
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 的工作环境。
EMACS 除了自学教材可供参考外,它还提供了其它的线上辅助说明
功能,让使用者可以随时查阅需要的相关讯息。 EMACS 的线上辅助说明都是以
``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 的命令。二者都有一个前题的预设,那就是都是先知道
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)
- 萤幕向下卷,如此可以重复参考已经看过的资料。
前已略述 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)的基本讯息。表头所提供的讯息,最多可有五件事情:
- 结点所在的档案(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 除了以上的指令之外,还有几个必需知道的指令。
现介绍如下:
回主画面