除了进入与离开 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 的变数,会在 以後的章节中陆续谈及。此处讨论completion ,只是为了 使用 completion 於 EMACS 的线上辅助说明。 使用 EMACS 的 completion 有三种方法:
使用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 的最基础的功能,要了解 EMACS 当然要从它的基本著手。所以 EMACS的自学教材也以编辑的介绍 为主,至於 EMACS 其它的工件环境,是无法从 此自学教材中得知。 所以,本文会在第三章简介 EMACS 的工作环境。
键入 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'' 的功能相似, 二者都是在寻求与 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'' 最大不同处如下:
此时的画面,只显示了二件事情,是因为此画面为 info 树状结构 的最上层。
在表头之下的资讯,是用来告知如何用 info 。它提供了五件事情,现一一说明。
何为 Menu Item 会再解释。
使用 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. 它主要由四个部份主成: