10

当我在文本模式下使用 flyspell-mode 时尝试加载“german8”拼写字典时收到此错误消息:

Error in post-command-hook (flyspell-post-command-hook): (error "Error: The file "/usr/lib/aspell/deutsch\" can not be opened for reading.")

我检查过,没有 /usr/lib/aspell/deutsch。Ubuntu synaptic 软件包管理器为我提供了“aspell-de”,但并没有清除它。

这是我的 .emacs 中引发问题的代码:

;;switch dictionaries between German and English with F8 key
(defun fd-switch-dictionary()
      (interactive)
      (let* ((dic ispell-current-dictionary)
         (change (if (string= dic "deutsch8") "english" "deutsch8")))
        (ispell-change-dictionary change)
        (message "Dictionary switched from %s to %s" dic change)
        ))

(global-set-key (kbd "<f8>")   'fd-switch-dictionary)

我可以通过简单地启动 flyspell-mode 然后尝试执行 ispell-change-dictionary 来重复同样的错误。提供了 German8,但消息再次出现:

 Error enabling Flyspell mode:
(Error: The file "/usr/lib/aspell/german" can not be opened for reading.)
4

4 回答 4

7

我遇到了完全相同的问题,但我找到了一个非常简单的解决方法。我假设

  • 您的 Emacs 拼写检查器设置为 aspell,即(setq-default ispell-program-name "aspell")

  • 安装了适当的 aspell 字典,例如通过apt-get install aspell-de.

出于某种原因,在拼写为“sees”的字典列表中似乎存在一个错误,即执行时可用的字典列表ispell-change-dictionary。选择“deutsch”时,它会尝试加载"/usr/lib/aspell/deutsch\". 但是看起来 aspell 字典名称已更改,因为aspell-de现在包含名为de_DE*. 我想@Daniel Ralston 的答案是解决这个问题,但这对我不起作用。我也尝试将实际的字典名称传递给ispell-change-dictionary,但不知何故,它坚持要从自己的列表中获取字典,我永远无法说服它我的字典确实是正确的。

对我有用的是一个简单的符号链接修复。起初我不确定我应该符号链接什么,因为错误看起来像是试图从名为“deutsch”的目录加载字典。但事实证明,它实际上是在寻找一个典型的 aspell.alias文件。所以通过使用这个符号链接

sudo ln -s /usr/lib/aspell/de_DE.alias /usr/lib/aspell/deutsch.alias

我现在可以简单地在ispell-change-dictionary.

于 2015-07-16T15:18:22.190 回答
1

Arch Linux我在安装字典时遇到了同样的问题,aspell-ru但是当我ispell-change-dictionary russian在 emacs 中这样做时(russian作为字典的建议名称),它返回了

Error: The file \"/usr/lib/aspell-0.60/russian\" can not be opened for reading.

所以我做pacman -Ql aspell-ru了,结果证明这ru是字典的名称,而不是russian. 所以,ispell-change-dictionary ru工作得很好。

检查字典文件的实际名称。

于 2015-03-05T14:55:13.557 回答
1

最近,一些旧的和经常使用的字典别名似乎已从德语 aspell 包中删除。这使得 emacs 的德语词典定义过时了。尝试将此添加到您的.emacs

(eval-after-load "ispell"
  '(add-to-list 'ispell-dictionary-alist
                '("deutsch8"
                   "[a-zA-ZäöüßÄÖÜ]" "[^a-zA-ZäöüßÄÖÜ]" "[']" t
                  ("-C" "-d" "de_DE-neu.multi")
                  "~latin1" iso-8859-1)))
于 2013-03-13T17:19:11.953 回答
1

Elementary OS 中的相同问题相同的解决方案安装包 aspell-es 和 aspell-eu-es:

sudo apt-get install aspell-es aspell-eu-es

一切正常。

于 2016-05-21T09:48:17.450 回答