BBS水木清华站∶精华区
文字的勘误
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 的使用方法。
* 一般文件使用 { ispell 检查错误所使用的指令,
可依所检查的□围分成如下三种:
o 检查「字」的 ispell指令如下:
ESC-\$
o 检查「区域」(region)的 ispell 指令如下:
ESC-x ispell-region\index{ESC-x ispell-region
使用区域的检查以前,要先将区域的□围界定清础,再使用
此指令来做区域的检查。
o 检查「缓冲区」(buffer)的 ispell 指令如下:
ESC-x ispell-buffer
检查整个缓冲区内的文字内容。
* 信件中使用 ispell 检查错误的指令
ESC-x ispell-message
* 以 ispell 检查文字内容时, echo area 会有回应
的讯息出现。若有错误发生时,会另开一个视窗,将所有的修改
可能显示出来。如何使用 ispell 来修改错误,就是现在
的话题了。
o 若检查的□围只是一个字时,此时,所检查的字若正确无误,
echo area 会出现
word is correct
o 若 ispell 认为所检查的英文字有误时,会另开视窗,
将 ispell 认为可能的正确字列举出来。使用者可参照所显示
的字,来做出合适的回应。回应的方式如下:
+ SPC
保留现状而不更改错误,但将游标移至下一个发生错误的地方。
+ digit
当有错误出现时, ispell 会将可能的正确字一一编上号码,
供使用者参考。 若所显示的字就是所要更改的字,此时只要
键入编号,缓冲区的错误即可获得修正。
例如,检查 dictionory 这个字是否的正确时,视窗上会出现
`` (0)dictionary '' 的提示,此时若想修改错误的字,只需键入提示
的数字 `0' 即可。
+ r new RET
将目前找到的错字以新字 new 取而代之。文章中其它地方
若有相同的错误,不会因此而有变动。
+ R new RET
除了将目前出错的地方修正外,同时还进行 ``query-replace'' 的
动作,将所有相同错误的地方也一并修正。
+ a
将找出来的错误,将错就错视为是正确的。此错误适合所有目前
此 EMACS 下的所有缓冲区,但离□EMACS 後就恢复原状,
错还是错。
+ A
大写的 ``A'' 与前一个小写的 ``a'',唯一差别的地方就是,
将错就错的地方,只适用於目前所使用的这一个缓冲区。
+ i
ispell 所使用的字典有二种,一种是标准字典,另一种
是使用者自行订定的私有字典。将标准字典中所没有的字加入
私有字典中就是靠指令 ``i'' 了。
ispell 在检查字的正确与否时,是根据标准字典来判断对错。
此标准字典对於专有术语的搜集,并不是很周延。为了弥补此缺失,
私有字典就应运而生了。使用者可将标准字典中没有的字,
加入私有字典中,使这些原本被视为「错」的字得以正名。
当 ispell 检查出「错字」时,键入 ``i'' ,就可将此错字
纳入私有字典中,而成为「正确」的字。。从此若再出现此字时,
ispell 就会将其视为「正确」的字。纵使离开 EMACS 後再进入
EMACS,此字也会是「正确」的字。 若想使新字加入私有字典时,
echo area 能将加入的新字回应出来,则必需使用 "m'' 指令,
而非 `` i'' 指令。
以上所谈的是透过 EMACS 所提供的介面,使用 UNIX 的拼字检查的
工具( ispell)。如果所使用的系统无法提供此工具软体时,
请以 ftp 取得软体後再自行装置 ispell。否则,就算 EMACS
提供了使用 ispell 的介面,也是无济於事的。
除了以上所谈的以软体来修正错误外,还有其它的方法可以修正所
发生的错误,详述如下:
* Transposing Text
o Ctrl-t (transpose-chars)
游标前後两个字元(character)互调。
o ESC-t(transpose-words)
游标前後两个字(word)互调。但两个中间的标点符号 (punctuation)
则不会移动。例如, transposing,text 则互换成 text,transposing
而不是 text transposing,。
o Ctrl-x Ctrl-t(transpose-lines)
前後两列互换。将游标所在的列与其上一列互换。
* Case Conversion
o ESC-l
将一个字的字元改成小写的字元。键入指令 ESC-l 会将游标所在
处之後的所有字元换成小写的字元,其□围只限於游标所在处的
那一个字。
o ESC-u
将一个字的字元改成大写的字元。键入指令 ESC-l 会将游标所在
处之後的所有字元换成大写的字元,其□围只限於游标所在处的
那一个字。
o ESC-c
将游标所在处的字元换成大写的字元(capital),所以如果要使
一个字以大写为开始可以使用此指令。
接下来所要讨论的议题是,如何使用 EMACS 的编辑器来绘制简单的图形。
BBS水木清华站∶精华区