You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Emacs中记录ispell拼写替换操作并存储到文件?

ispell拼写替换操作记录实现方案

你关注的ispell-update-post-hook完全可以满足需求,无需修改ispell核心源码,该钩子运行时可直接访问ispell的全局动态变量获取错误词、替换词两个值,以下是完整实现代码:

;; 自定义替换词对日志存储路径,可根据需要修改
(defvar my-ispell-replace-log-file "~/.emacs.d/ispell-replace-log.tsv" "存储ispell拼写替换词对的日志文件路径")

(defun my-log-ispell-replace ()
  "将ispell识别的错误词、最终替换词写入日志文件"
  ;; 确保变量已绑定避免报错
  (when (and (boundp 'ispell-found-word)
             (boundp 'ispell-replace-word))
    (let* ((wrong-word ispell-found-word)
           ;; 跳过更正的场景下替换词赋值为空字符串
           (correct-word (or ispell-replace-word "")))
      ;; 以制表符分隔两个词,追加写入文件,不覆盖历史记录
      (append-to-file (format "%s\t%s\n" wrong-word correct-word)
                      nil
                      my-ispell-replace-log-file))))

;; 将自定义函数绑定到ispell更新后钩子
(add-hook 'ispell-update-post-hook #'my-log-ispell-replace)

代码说明

  • 变量ispell-found-word存储ispell当前识别到的拼写错误单词
  • 变量ispell-replace-word存储最终替换后的正确单词,用户跳过更正操作时该变量为nil,代码中统一处理为空字符串
  • 生成的日志是制表符分隔的文本格式,可直接导入表格工具、闪卡工具做后续处理
  • 覆盖所有更正场景:手动按r输入替换、从候选列表选择编号替换、跳过更正操作都会触发记录
  • 如果不需要记录跳过更正的记录,只需在let*块后添加判断(unless (string-empty-p correct-word)包裹写入逻辑即可

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:18:02