我正在创建一个非常简单的插件,以便在Vim中更好地突出显示baan语法(基本上是语法/baan.vim的一个改进版本)。
这是我的插件目录。

baan.vim文件夹中的一个文件。它看起来像这样。
au BufRead,BufNewFile *.bc set filetype=baan语法文件夹中的文件;baan.vim。在Vim中的语法文件夹中,它几乎与baan.vim相同。在语法高亮显示中使用一行更改。
我的问题是,当我打开任何带有.bc扩展名的文件时,会调用另外两个语法文件;一个在我自己的插件语法文件之前,另一个在后面。

我想,bc.vim语法文件已经从filetyp.vim调用了。因为我想设置的文件类型是带有扩展.bc的语法。这是第一个问题。第二,我将文件类型设置为“baan”,但Vim正在查找和查找所有baan.vim文件。但是,一旦baan.vim从myplugin获得资源,它仍在从Vim自己那里采购。如何在不使用/after目录的情况下很好地解决这些问题?
发布于 2021-04-29 05:19:51
这很正常。请考虑以下几点。
$VIMRUNTIME/filetype.vim在接近尾声的时候提供了ftdetect/*.vim脚本。此时,setf bc已经被执行,第一个FileType事件被触发和处理。顺便说一下。这就是为什么迟来的set ft=baan起作用,但setf baan不再起作用的原因。但是,应该不是问题,因为:syn clear是在$VIMRUNTIME/syntax/synload.vim中自动执行的。不,除非您修补/替换filetype.vim.,否则您不能对此做任何事情
synload.vim有意获取所有匹配的文件(:runtime!)。这就是他们尊重b:current_syntax变量的原因。第一个设置它获胜,另一个通过在顶部执行:finish而让位。尽管如此,它们都是来源并进入:scriptnames。注意,这也意味着用after/syntax扩展现有语法(同时不尊重b:current_syntax)通常更可取。https://stackoverflow.com/questions/67308336
复制相似问题