Vim 为什么在自定义文件类型文件中加载文件类型?

Vim 为什么在自定义文件类型文件中加载文件类型?,vim,file-type,Vim,File Type,从vim wiki: 自定义filetype.vim文件应始终具有以下结构: 我想知道为什么需要if…endif部分 我认为这基本上意味着如果已经加载了文件类型,那么跳过加载这个脚本。但是在这种情况下,创建自定义文件类型文件有什么意义呢?这只是一个包含保护,以避免您的自定义文件类型被意外地多次来源 如果一切顺利,这看起来确实是多余的,但由于用户配置、插件管理器等方面的各种变化,最好是安全的。它还避免了Vim重新处理可能很大的定义列表,从而加快了启动速度 当这两次实际来源时会发生什么情况? 如果您

从vim wiki:

自定义filetype.vim文件应始终具有以下结构:

我想知道为什么需要if…endif部分


我认为这基本上意味着如果已经加载了文件类型,那么跳过加载这个脚本。但是在这种情况下,创建自定义文件类型文件有什么意义呢?

这只是一个包含保护,以避免您的自定义文件类型被意外地多次来源

如果一切顺利,这看起来确实是多余的,但由于用户配置、插件管理器等方面的各种变化,最好是安全的。它还避免了Vim重新处理可能很大的定义列表,从而加快了启动速度

当这两次实际来源时会发生什么情况?


如果您使用
:autocmd
而不是
:autocmd,所有检测将被定义两次。(请注意,此处不能使用初始的
:autocmd!
来清除所有以前的定义,因为涉及多个
文件类型.vim
文件,每个文件仅添加到现有文件中。)

如果文件类型已加载,请完成此过程,以便与c中的#ifdef类似。但是在VimWiki中,他们没有说应该先定义加载文件类型吗?是的。它仅由vim运行时的
filetype.vim
定义。你的定制只是补充。
if exists("did_load_filetypes")
  finish
endif

augroup filetypedetect
  " au! commands to set the filetype go here
augroup END