我如何告诉Vim使用适合文件路径通配符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+=$VIMdictdict*.lst),以防它是一个Windows兼容性问题,但这仍然不起作用。(这也发生在我的Linux笔记本电脑上,它不使用反斜杠作为文件路径。)

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

假设现在这是最新版本Vim的一个变化,是否有一些方法来指定"使用所有适合这个全局的字典文件"?

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

我还检查了它是否由于有多个文件适合通配符glob。(我认为,如果我有多个适合通配符的文件,那么全局变量将变成两个文件名,相当于说dict+=$VIM/dict/dict01.lst dict02.lst,这在语法上是无效的。)但它仍然没有工作后,删除额外的文件,所以只有一个文件适合我的路径名$VIM/dict/dict*。低水位体系域。(我之前在这里写了另一个附录,愉快地解释了我是如何解决我的问题的,但结果证明它为时过早。)

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

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

如果向非空选项添加值,不要忘记也添加逗号(letset更通用,所以它不太容易原谅):

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

相关内容

最新更新