Emacs 的其它相关事项

这章所谈的内容较为纷杂,但都环绕在加强 EMACS 的编辑功能 为核心。所谈的内容包括 registerbookmark、 错字的自动侦测以及如何在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 节。
图形模式除了可使用长方形编辑的指令外,图形模式 本身,也提供了适用於此模式的专门指令。现就一一为各位介绍。

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


回主选单