Emacs 的其它相关事项

这章所谈的内容较为纷杂,但都环绕在加强 EMACS 的编辑功能 为核心。所谈的内容包括 register、 bookmark、 错字的自动侦测以及如何在EMACS 中使用绘图功能。 现在就开始讨论 register 和 bookmark。


Registers and Bookmarks

EMACS 的 register 是一个可将文件与游标位置 ( point loaction)暂时存放其间的地方。 register 有它的缺失,那就是一旦离开目前所使用的 EMACS,所有存於 register 中的资料,也会随著消失。 若想再使用这些放於 register 中的文件或游标位置时, 必需重新将资料存入 register 中。所以 register 只适合暂时性的储存,若想永久使用文件或游标位置, 必需仰赖 bookmark的帮助了。 bookmark 与 register 相似,它们都用来 储存物件,但在相似中又有不一样的地方。二者不同的地方 如下:

现在就分别介绍 register 与 bookmark 二者的用法。首先讨论 register 的用法。 register 可存放的内容有,游标的位置、一般文件与长方形文件的内容、 档案的名称以及本文未曾讨论的视窗资料等等。现在就一一 来介绍这些内容如何存放,以及存放後如何将其取出用, 与视窗有关的 register 在此依然不予讨论。

谈完了 register ,接下来介绍 bookmark 。 bookmark 的一些基本概念,已在前面略做介绍了,现在就进一步详述它。 bookmark 与 register 在记录游标位置的功能是一样的, 但在对 register 的命名方面二者就显得有差异了。 bookmark 的命名可以由一个以上的字元组成。换言之,它可以有一个较长的名字, 但 register 就只能由一个字元来命名。而且以 bookmark 设定的资料,可永久储存起来,即使离开EMACS, bookmark 的资料也不会就此消失。所以想要永久保存的资料,只有借重 bookmark 了。 以下就是 bookmark 的使用方法。

  1. 以 `` Ctrl-x r m bookmark ''指令,将游标所在的
  2. 位置做上记号(mark),此记号就称为 bookmark。 当第一次使用 `` Ctrl-x r m'' 指令时, echo area 会出现 ``Set bookmark (visited-filename) :'' 的讯息。此时,若不输入任何 字元只键入 RET ,系统会以所访问的档名做为 bookmark 的名称。若输入其它的字串,则 bookmark 就以此字串命名之。
  3. 以 `` Ctrl-x r b bookmark RET'' 指令,来移动游标的位置。
  4. 键入 ``Ctrl-x r b'' 时, echo area 会出现

    ``Jump to bookmark (bookmark-name) :'',

    括号内的名称为系统的预设值。若所给予的预设值不是心中所爱, 可以在 `:' 之後输入想要的 bookmark 名称。

资料以 bookmark 的方式储存时,使用者若不另行指定 储存的档名,系统会将有的讯息存入一个名为 ``~/.emacs-bkmrks''\index.emacs-bkmrks 的档案中。 接下来,讨论一个使 EMACS 的编辑功能更强化的议题 - Fixing Typos 。


文字的勘误

EMACS 所提供的这项功能,并不是内建於 EMACS 的。 EMACS 只是提供使用 UNIX 拼字工具的介面,使用者可以借由此一介面, 使用 UNIX 的拼字工具。 UNIX 环境,较常使用的拼字检查工具程式 (spelling checker program)有 spell 与 ispell。二者又以 ispell 较为方便好用。虽然如此,并不是所有的 UNIX 系统都 提供有 ispell 与 spell 等工具程式。使用者可以 `` which''、 `` find'' 等指令,在 shell 下查阅 UNIX 系统所提供的工具为何。 不清楚如何使用 which 或 find 等指令的使用者, 请查看 man page 。

EMACS 提供的拼字检查介面,是针对 ispell 的使用法 为主。透过 EMACS 的介面,使用者可使用 UNIX 系统所安装的 ispell。若系统没有安装 ispell,可以 ftp到适当的地方得取。 (Ispell is available via anonymous ftp from ftp.cs.ucla.edu in the directory /pub/ispell.)
ispell 除了会自动侦察文件的拼字错误外,还提供可能 修改的讯息,供使用者参考。 ispell 的除错范围,可以侦察 一个字,也可以侦察一个区域或整个的缓冲区。 使用 ispell 时,程式会根据所检查的内容做出适当的回应。 如果检查无误, echo area 会出现无误的讯息。如果所检查 的字有误, ispell 会另开一个视窗,将所有可能的勘误组合 显示出来,以利使用者做评估。若在显示的视窗找到合适的取代文字, 可直接键入文字的编号来完成勘误的程序。
ispell 使用了两种不同的字典,一种是由 ispell 所提供的标准字典(standard dictionary)。另一种是使用者自已 建构的私有字典(private dictionary)。标准字典是系统所提供的; 使用者字典是在编辑文件时,因需要而随时加入的。当标准字典无法 找到的字,使用者可随时将新增的字加入私有字典中。系统所使用的 标准字典,可依使用者的需要来指定。当然,若不指定标准字典, 系统会使用预定的字典。若想改变预定的字典,可使用如下的指令来设定:

ESC-x ispell-change-dictionary

若想查阅所使用的标准字典为何,可查阅变数``ispell-dictionary'' 来得到相关讯息。如下是笔者以 `` Ctrl-h v'' 指令查阅此变数 所得的结果。若已淡忘变数的查询,请参考 4.4 节。 ispell-dictionary's value is nil Documentation: If non-nil, a dictionary to use instead of the default one. This is passed to the ispell process using the "-d" switch and is used as key in ispell-dictionary-alist (which see). You should set this variable before your first call to ispell (e.g. in your .emacs), or use the M-x ispell-change-dictionary command to change it, as changing this variable only takes effect in a newly started ispell process. 现在就讨论 ispell 的使用方法。

以上所谈的是透过 EMACS 所提供的介面,使用 UNIX 的拼字检查的 工具( ispell)。如果所使用的系统无法提供此工具软体时, 请以 ftp 取得软体後再自行装置 ispell。否则,就算 EMACS 提供了使用 ispell 的介面,也是无济於事的。 除了以上所谈的以软体来修正错误外,还有其它的方法可以修正所 发生的错误,详述如下:

接下来所要讨论的议题是,如何使用 EMACS 的编辑器来绘制简单的图形。

图形的编辑

EMACS 的绘图模式所能提供的绘图功能并不多,它只予许以键盘 上出现的字元,来构思图形,也就是只能以 ASCII 的字元, 来编辑所要的图形。EMACS 的图形模式可以与任何其它的模式 一起搭配使用。所以,只要有编辑图形的需要,都可以切换至 图形模式,将所要的图形编辑出来。

EMACS 的绘图功能,主要是由八个控制游标移动方向 的指令来完成。这八个方向也是EMACS 构图的主体, 它们依序是,东、南、西、北、东南、西南、西北以及东北。 虽然可以设定八种游标移动的方向,但一次只能设定一个方向, 若想使游标移动的方向改变,必需重新设定游标移动的方向。 设定这八个游标移动方向的指令分别是:

这八个指令似乎颇为复杂,但如配合图形的解释,就可了 这八个指令的由来。因为,每个指令的表示法与所要表达的方向 有著密切关系。 北(rignt) C-c ^ . 西北(nw) . 东北(ne) C-c ` . C-c ' . . . . . . . . . ... C-c < ................... C-c > 西(left) ... 东(right) . . . . . . . . . C-c / . C-c \ 西南(sw) . 东南(se) . C-c . 南(down) 从以上的图示,不知能否看出这八个控制方向的指令与所表达 的方向有著密不可分的关连性。例如,往东的方向则以 「>」来表示, 往西的方向则以 「<」,往北的方向则以 「^」 来表示等等。 基本上,从使用的指令就可知道所代表的方向为何。当然,其原意 并不是要以指令来猜方向,而是用方向来诠释指令。所以,只要 掌握西南方的方向,就知道使用 「/」 来表示。

图形模式可以在编辑的过程中随时使用的。使用图形模式的 方法很简单,只要将其唤起即可。唤起图形模式的方法是: `` ESC-x edit-picture''。 当进入图形模式後, mode line 会将使用图形模式的讯息 显示出来。进入图形模式後,也可以随时离开此模式,而回到 唤起此模式前的状态。回到先前模式的方法是`` Ctrl-c Ctrl-c。
进入图形模式後,就可利用设定游标移动方向的八个指令, 来控制输入字元出现的方向,而绘制出合适的图样。当选定了 游标的移动方向後, mode line 会将游标移动的方向显示出来。 此时,键入任何一个键盘上的字元,字元会依照所设定的方向出现在萤幕上。
图形模式所采用的是覆盖模式,这是有其道理的。绘图就是 要在特定的地方绘上所欲的图样,如果使用插入的模式,就会破坏整体 的设计。所以,使用覆盖模式是较合理的安排。
图形模式除了设定游标移动方向的指令外,还有其它的指令 是针对编辑功能而设。例如,字或列的删减,空白列的增加等等, 都是在绘图时,不可或缺的编辑指令。现在就来讨论与绘图有关 的编辑指令。绘图的编辑指令与一般编辑的指令大同小异, 为了避免将一般的编辑指令与绘图时所使用的编辑指令混淆, 现将二者的差异整理列举如下:
Keystrokes Text Mode Picture Mode
RET 加入一行空白列 使游标向下移动,若要加入空白列,
则使 用
``Ctrl-o'' 指令。
Ctrl-d 删除一个字元後,文件会向左移动 将游标所在处的字元以空白取代,
但文件不会向左移动。若要删除字元,必需使用
"Ctrl-c Ctrl-d" 指令。
SPACE 输入空白且将文件移向右边 游标向右移动,同时游标所到之处,均将
文字以空白覆盖。此时若想输入空白,则
必需回到
Text Mode,在text Mode
的状态输入空白 。
Ctrl-k 删除所在列的内容,使用两次
Ctrl-k 则删除内容与此空白列。
删除内容但不会删除列。欲删除列只有
回到
Text Mode
TAB 输入 TABs 且将文件向右移动 只以TAB 的距离移动游标,但它所经过之
处并不会输入
TABs 。
Ctrl-n 游标移至下一列,但游标所在的栏
位则视情形而定。
游标移至下一列,但栏位与上一列相同。
Ctrl-p 游标移至上一列,但游标所在的栏
位则视情形而定。
游标移至上一列,但栏位与下一列相同。
Ctrl-f 游标向前移动一个字元。 游标向右移动一个字元。
Ctrl-b 游标往回移动一个字元。 游标向左移动一个字元。
除了以上所谈的种种功能之外,图形模式亦可与长方形 编辑相配合。长方形编辑是专用来编辑区块文件,而图形模式 的编辑,从某个角度来看,就是区块的组合。所以,长方形编辑 的运作,就可用在图形模式的剪贴上。因此,任何可以使用在 长方形编辑的指令,都可用在图形模式中。不熟悉长方形的编辑者, 可参考本文的 5.4 节。
图形模式除了可使用长方形编辑的指令外,图形模式 本身,也提供了适用於此模式的专门指令。现就一一为各位介绍。

长方形指令的使用在图形模式中非常有用。因为,图形的构成就是 一块块的区域。所以善用长方形指令会使图形的编辑更加灵活。


回主选单