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水木清华站∶精华区