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

如何配置Aspell使其搜索多个路径下的字典文件?

如何配置Aspell使其搜索多个路径下的字典文件?

我完全懂你的感受——已经靠符号链接搞定了自定义字典的加载,但总觉得用绝对路径或者软链有点“凑活”,想找个更原生的方法让Aspell同时搜索多个字典路径对吧?

先复盘下你当前的实现:你在/my/custom/en_GB-foo.multi里配置加载自定义的foo.rws和系统的en_GB.multi,一开始用绝对路径觉得麻烦,后来建了软链/my/custom/base指向系统字典目录/usr/lib64/aspell-0.60,调用时用aspell --lang=en_GB --variety=foo --dict-dir=/my/custom check file.txt就能正常工作,而且Aspell加载基础字典后还会自动用系统路径解析后续相对路径,这点确实很省心。

回到你的核心问题:有没有“正规”的方法让Aspell搜索两个路径的字典文件?其实Aspell本身没有直接支持同时指定多个--dict-dir的参数,但有几个更优雅的原生替代方案,比软链更合适:

  • 用自定义配置文件指定双路径
    你可以创建一个Aspell配置文件(比如/my/custom/aspell.conf),在里面同时设置自定义字典路径和系统字典路径:

    dict-dir /my/custom
    data-dir /usr/lib64/aspell-0.60
    

    之后调用Aspell时指定这个配置文件就行:

    aspell --conf=/my/custom/aspell.conf --lang=en_GB --variety=foo check file.txt
    

    这样Aspell会同时在dict-dir(你的自定义目录)和data-dir(系统字典目录)里查找需要的字典文件,你的.multi文件就能直接写add foo.rwsadd en_GB.multi,不用再依赖软链。

  • 通过环境变量传递多路径配置
    不想单独建配置文件的话,直接用ASPELL_CONF环境变量一次性传递路径配置:

    ASPELL_CONF="dict-dir /my/custom; data-dir /usr/lib64/aspell-0.60" aspell --lang=en_GB --variety=foo check file.txt
    

    效果和配置文件一样,Aspell会同时检索两个路径下的字典文件。

  • 把自定义字典放到Aspell默认搜索路径
    Aspell默认会搜索用户主目录下的.aspell文件夹,你可以把en_GB-foo.multifoo.rws放到~/.aspell/目录下,这样调用时连--dict-dir都不用指定:

    aspell --lang=en_GB --variety=foo check file.txt
    

    你的.multi文件里直接写add foo.rwsadd en_GB.multi就行,Aspell会自动先在用户目录找自定义文件,再去系统目录找基础字典。

另外补充下你之前踩的坑:local-data-dir主要是用来指定本地语言数据文件的路径,和字典文件的搜索路径不是一回事;而多次指定--dict-dir的话,Aspell只会生效最后一个路径,所以才没起作用。

总的来说,上面这几个方法都是更“正规”的原生方案,不用依赖软链就能实现多路径字典搜索的需求。

备注:内容来源于stack exchange,提问作者Tim

火山引擎 最新活动