为什么要检查自定义文件类型文件中的did_load_filetypes?

时间:2014-09-22 13:21:37

标签: vim file-type

来自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部分是必要的?

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

1 个答案:

答案 0 :(得分:4)

这只是一个包含守护程序,以避免您的自定义文件类型被意外地多次获取。

如果一切顺利,这确实看起来多余,但是对于用户配置,插件管理器等的所有变化,最好是安全的。它使Vim无法重新处理潜在的大型定义列表,从而加快启动速度。

实际上两次来源会发生什么?

如果您使用:autocmd代替:autocmd!,则所有检测都会定义两次。 (请注意,此处不能使用初始:autocmd!来清除所有先前的定义,因为涉及多个filetype.vim文件,并且每个文件仅添加到现有文件中。)