You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Emacs 拼写检查:如何一次性标记文档中所有拼写错误?

当然可以!在Emacs里实现一次性标记所有拼写错误,同时自动忽略代码段的需求完全没问题,我来给你一步步说明具体做法:

一、一次性查看/标记所有拼写错误

Emacs自带的拼写检查工具里,有两个实用的命令可以帮你全局定位所有拼写错误:

  • flyspell-list:直接执行这个命令,Emacs会打开一个新的缓冲区,把当前文档里所有的拼写错误列出来,每条错误都包含错误单词、所在行号和上下文。你可以直接在这个列表里点击错误条目跳转到对应位置,还能批量处理(比如统一替换某个错误单词、添加到个人词典等)。
  • ispell-buffer:这个命令会扫描整个缓冲区,逐个提示拼写错误,同时也会在缓冲区里实时标记出错误位置。不过相比flyspell-list,它更偏向交互式逐个处理,但也能让你全局了解所有错误分布。

如果你的文档已经开启了flyspell-mode(实时拼写检查),其实默认就会给所有拼写错误加上波浪线标记,flyspell-list相当于把这些标记整理成了可操作的列表,用起来更高效。

二、配置忽略代码段

要让拼写检查自动跳过代码区域,我们可以通过设置ispell-skip-region-alist来定义需要排除的区块规则,针对不同的文件模式(比如Markdown、Org、LaTeX等)做针对性配置:

示例1:Markdown模式下跳过```代码块

在你的Emacs配置里添加这段代码:

(add-hook 'markdown-mode-hook
          (lambda ()
            (setq ispell-skip-region-alist
                  '(("^```" . "^```")))))

这段配置会让拼写检查忽略所有以^```开头^```结尾的代码块区域。

示例2:Org模式下跳过代码块和示例区块

如果是用Org-mode写文档,你可以这样配置:

(add-hook 'org-mode-hook
          (lambda ()
            (setq ispell-skip-region-alist
                  '(("^#\\+BEGIN_SRC" . "^#\\+END_SRC")
                    ("^#\\+BEGIN_EXAMPLE" . "^#\\+END_EXAMPLE")))))

它会自动跳过Org里的#+BEGIN_SRC#+END_SRC代码块,以及示例区块。

通用规则

你可以根据自己常用的文件模式,按照(起始正则表达式 . 结束正则表达式)的格式,添加到ispell-skip-region-alist里,实现对任意代码/特殊区块的忽略。

三、额外优化:自定义错误标记样式

如果你觉得默认的波浪线不够明显,可以自定义flyspell-incorrect这个face的样式,比如改成红色粗波浪线:

(set-face-attribute 'flyspell-incorrect nil
                    :underline '(:color "red" :style wave :weight bold))

这样配置好之后,你打开文档时,拼写检查会自动跳过代码段,同时用flyspell-list就能一次性查看所有拼写错误,完全满足你的需求啦!

内容的提问来源于stack exchange,提问作者Ralf

火山引擎 最新活动