分类: LINUX
2011-11-03 21:02:43
简介: 本文简单介绍一下在 Emacs 里实现单词拼写检查的原理,详细介绍了基于 Aspell 的 flyspell 的基本使用方法,详细说明 flyspell 是如何通过使用 Aspell 来为 Emacs 提供单词拼写检查的功能。
发布日期: 2010 年 5 月 20 日
级别: 初级
访问情况 : 2914 次浏览
评论:
如果经常要用 Emacs 来写英文文章和邮件(例如 使用 Gnus 来上新闻组及收发邮件),作为一个文本编辑器,那么一个英文单词的拼写检查工具就必不可少了。幸运的是,Emacs 提供了 来对拼写作出检查。
flyspell 只是一个 Emacs 的前端,需要配合其它拼写检查程序如 、 或是 来工作,即 flyspell 模式提供了桥接 Emacs 与其它拼写检查程序的管道。
推荐使用 作为拼写检查程序,不推荐使用 Ispell,因为它太老了。本文就简单介绍一下基于 Aspell 的 flyspell 的基本使用方法,看看 flyspell 是如何通过使用 Aspell 来为 Emacs 提供单词拼写检查的功能。
不论是在 Linux 下或是 Windows 下,安装 Aspell 都需要安装 Aspell 本身以及指定语言的词典。
在 Linux 下安装 ,非常简单,下面几个命令就足够了:
1) 安装 Aspell
./configure && make make install |
2) 如果 Aspell 已经正确安装好了,我们就可以安装 了:
./configure make make install |
顺利安装后就可以使用了。
在 Windows 下安装 Aspell,推荐使用二进制版本进行安装,主要步骤有两步:
1) 下载 并安装;
2) 再安装你需要的词典,Aspell 提供了大概有二十几种语言的词典,下载你需要的词典并安装到你的 Aspell 的安装目录,词典就会被解压到相应的位置。
如果需要在 Emacs 里使用 Aspell 进行拼写检查,我们仍然需要进行适当的设置。
把下面这一行添加到 .emacs 文件,让 flyspell 模式使用你安装好的 Aspell 程序来进行语法检查:
(setq-default ispell-program-name "aspell") |
重启 Emacs 后,我们就可以用 M-x flyspell-mode 进行语法检查了。
我们还可以进一步让某些模式自动启用语法检查功能。例如,如果我需要让所有的 text 模式自动启用语法检查功能,可以把下面这行添加到 .emacs 文件,这样当你以 text 模式打开一个文件的时候,就会自动启用语法检查功能了。
(setq text-mode-hook '(lambda() (flyspell-mode t) )) |
不过从速度角度考虑,不推荐这样使用。
现在,我们就可以用 M-x flyspell-mode 来启动 ispell 的拼写检查功能了。
注意:如果你在用命令 M-x flyspell-mode 启动拼写检查时,Emacs 提示如下错误:
Starting new Ispell process [default] ... Enabling Flyspell mode gave an error |
则很有可能是你第一步里的词典文件没有正确安装。
如果你觉得你正确配置了 Flyspell 但却仍然无法使用它,这时可能需要重启一下你的电脑。
flyspell 模式的用法,在 里有着详细的叙述。在这里,并不推荐 on the fly 的使用方法,因为这样很有可能会让你的 Emacs 运行得非常卡( Emacs 和外部程序的通信与数据交换总是会浪费大量的时间)。
最好的使用方法是,平时不开 flyspell,等你写完了文章需要语法检查一下的时候,把这个 region mark 起来,然后使用命令 M-x ispell-region 就可以查出当前 region 有什么错误。
当 然,如果你要对当前文章整篇进行检查,你可以直接用命令 M-x ispell-buffer 来对当前文章进行人机交互的单词拼写检查 ( interactive spell checking )。运行这两个命令后,flyspell 如果检查到它认为有拼写错误的单词,就会提示你进行核对,常用的命令如表 1 所示。
命令 | 解释 |
---|---|
digit(数字) | 屏幕的一半会显示出可以替换的正确单词,并用数字编号,输入这个数字编号就可以选择提示单词,并且用来替换当前错误拼写的单词。 |
| 跳过当前单词的拼写检查,承认其错误,但是在这里并不改正。 |
r new | 用一个新输入的单词替换当前拼写错误的单词 |
R new | 用一个新输入的单词替换当前拼写错误的单词,并且 flyspell 会提示是否替换文章中其它地方出现的类似拼写错误。 |
a | 在当前编辑区域里,把当前提示错误的拼写当作正确的拼写。 |
A | 在当前的 buffer 里,把当前提示错误的拼写当作正确的拼写。 |
i | 把当前的单词插入到你的私人字典文件里,这样以后 Aspell 或 Ispell 或 Hunspell 就会把它当作正确的单词来对待了。 |
m | 与 i 命令的操作相同,但是我们可以提供更多的补充信息 |
u | 插入当前单词的小写形式到字典里。 |
l word | 在词典里查找与该单词匹配的单词,这些单词会成为新的候选单词,我们可以通过数字来选择它们中的其中一个作为替换。可以用 * 号来作为通配符。 |
C-g X | 退出交互式的拼写检查操作,鼠标停留在当前被检查的单词上,可以用命令 C-u M-$ 来重新进行单词拼写检查。 |
x | 退出单词拼写检查并把光标返回到拼写检查开始前的位置。 |
q | 退出交互式拼写检查,并且结束 Aspell/Ispell/Hunspell 等子进程。 |
? | 显示帮助信息 |
flyspell 的词典,并没有太多的计算机词汇,对于一些缩写,也经常当作错误的单词,例如 exe src 等。 如果你按第三步里的方法,用 i 来插入自己的词汇后,默认情况下,flyspell 会在 home 目录给你新建一个字典。但这并不是我们想要的方式,我们更希望能够严格地管理自己的词典,哪怕是放的位置。这个时候,我们可以建一个自己的词典,方便 flyspell 去检索我们自己的词汇,,有兴趣的读者可以自己进行配置。
通过上述命令配合 M-x ispell-buffer 或 M-x ispell-region,我们就可以很方便地对单词进行拼写检查。作为一个文本编辑器,没有单词拼写检查的功能,实在是一件很难想像的事。用好 ispell 模式,尽量少让单词拼写错误出现在你的文档里,方便与他人的交流与沟通。
林 绪虹,有着 5 年开发经验并有着 7 年 Emacs 使用经验,过去的 7 年时间里,他利用 Emacs 进行写文档、个人知识管理以及基本的编程工作,Emacs 使他能高效地完成他的工作。他拥有机械电子工程专业硕士学位,技术兴趣广泛并喜欢技术写作,并拥有自己的技术博客。