来自vim wiki:
自定义filetype.vim文件应始终具有以下结构:
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
" au! commands to set the filetype go here
augroup END
我想知道为什么if ... endif部分是必要的?
我认为这基本上意味着如果已经加载了文件类型,则跳过加载此脚本。但在这种情况下,创建自定义文件类型文件的重点是什么?
答案 0 :(得分:4)
这只是一个包含守护程序,以避免您的自定义文件类型被意外地多次获取。
如果一切顺利,这确实看起来多余,但是对于用户配置,插件管理器等的所有变化,最好是安全的。它使Vim无法重新处理潜在的大型定义列表,从而加快启动速度。
实际上两次来源会发生什么?
如果您使用:autocmd
代替:autocmd!
,则所有检测都会定义两次。 (请注意,此处不能使用初始:autocmd!
来清除所有先前的定义,因为涉及多个filetype.vim
文件,并且每个文件仅将添加到现有文件中。)