什么时候使用after /目录?


14

我了解这是放置最终决定权且不会被其他消息覆盖的地方,但是我不清楚如何决定何时放置(例如)~/.vim/after/ftplugin/而不是~/.vim/ftplugin/

人们通常会使用~/.vim/ftplugin/并仅~/.vim/after/ftplugin/在观察到不良行为的情况下才将其放入其中,还是只是将其全部放入后目录中?

Answers:


20

通常,如果您要添加自己的插件,或自己的插件替换标准插件,则应输入~/.vim/plugin~/.vim/ftplugin。相反,如果您想保留现有插件的功能但将其添加到其中,或者仅更改其所做的一些设置,则您的插件将进入~/.vim/after/plugin~/.vim/after/ftplugin


由于某种原因,我一直以为Vim会搜索运行时路径并提供与搜索条件相匹配的每个文件,而不是仅仅寻找它找到的第一个匹配项。听起来好像后目录中的内容得到了这种“加法”处理,但也许其他所有内容都像Unix PATH变量那样被处理,第一个匹配项获胜?
伊凡

5
Vim 会提供与搜索条件相匹配的每个文件,但是编写正确的插件会在表格顶部附近进行测试if exists("g:loaded_<plugin name>") finish endif let g:loaded_<plugin name> = 1。首先通过finish命令退出已加载的第一个“ wins”插件和随后的同名插件。~/.vim/plugin例如,这就是目录中的插件可以阻止插件$VIMRUNTIME/plugin完全加载的方式。该测试包含在after插件文件中。
garyjohn

好吧,我想我明白了。由于所有匹配文件都将被获取,因此finish当您只想加载第一个匹配项时,请使用一个保护子句;而当您需要覆盖一个受另一个影响的设置时,请使用后目录(finish保护子句)资料来源。
伊凡(Ivan)

1

如果vanilla vim可以识别某种文件类型,并且您想修改传送的行为,则您自己的设置将 ~/.vim/after/ftplugin/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.