我如何告诉 Vim 使用适合文件路径通配符 glob 的 any/all 字典文件?

How do I tell Vim to use any/all dictionary files that fit a filepath wildcard glob?

我正在尝试在文件名 glob 中使用通配符来设置字典选项(以允许自动完成我选择的某些单词),如下所示:

:set dict+=$VIM/dict/dict*.lst

希望的是,通过最初来源的 .vimrc 中的这一行(或者,在我的 Windows 10,_vimrc 的情况下),我可以将不同的字典文件添加到我的 $VIM/dict目录,并且 Vim 的每次新调用都将使用这些字典文件,而无需修改我的 .vimrc 设置。 但是,一条错误消息说没有这样的文件。当我给出一个特定的文件名时(如 :set dict+=$VIM/dict/dict01.lst ),它就可以工作了。 问题是,我可以发誓这曾经有效。自从我开始使用 Vim 7.1 以来,我的 .vimrc 文件中就有这个设置,直到最近我才想起任何这样的错误消息。现在它出现在我的 Linux 笔记本电脑以及 Windows 7 和 Windows 10 笔记本电脑上。我不记得这是什么时候开始发生的。

是的,我尝试使用反斜杠(如 :set dict+=$VIM\dict\dict*.lst )以防出现 Windows 兼容性问题,但这仍然无效。 (这也发生在我的 Linux 笔记本电脑上,并且不使用反斜杠作为文件路径。)

我要老了吗?还是有其他神秘力量在起作用?

现在假设它是 Vim 最新版本的更改,是否有某种方法可以指定“使用适合此 glob 的所有字典文件”?

-- 2021-02-14 编辑 06:17:07

我还检查了是否是因为有多个文件符合通配符 glob。 (我认为如果我有多个符合通配符的文件,则 glob 将变成两个文件名,相当于说 dict+=$VIM/dict/dict01.lst dict02.lst 这在语法上是无效的。)但是在删除额外文件后它仍然不起作用这样只有一个文件适合我的路径名 $VIM/dict/dict*.lst 。 (我之前在这里放了另一个附录,很高兴地解释说这就是我解决问题的方法,但结果为时过早。)

您必须在设置选项之前扩展通配符。多个文件名必须用逗号分隔。例如,

let &dictionary = tr(expand("$VIM/dict/dict*.lst"), "\n", ",")

如果给非空选项加值,别忘了加逗号(letset更通用,所以不太宽容):

let &dictionary .= "," . tr(expand(...)...)