您应该检查它是如何在rails.vim中完成的,这是Tim Pope 的 Rails 插件,它是这样工作的。
如果您正在编辑 Rails 项目中的 *.rb(Ruby 文件),则启用某些特定的 Rails 配置。但如果您正在编辑非 Rails ruby 文件,则不会。
您应该自己检查源代码,但检测的入口点如下:
augroup railsPluginDetect
autocmd!
autocmd BufNewFile,BufRead * call s:Detect(expand("<afile>:p"))
autocmd VimEnter * if expand("<amatch>") == "" && !exists("b:rails_root") | call s:Detect(getcwd()) | endif | if exists("b:rails_root") | silent doau User BufEnterRails | endif
autocmd FileType netrw if !exists("b:rails_root") | call s:Detect(expand("<afile>:p")) | endif | if exists("b:rails_root") | silent doau User BufEnterRails | endif
autocmd BufEnter * if exists("b:rails_root")|silent doau User BufEnterRails|endif
autocmd BufLeave * if exists("b:rails_root")|silent doau User BufLeaveRails|endif
autocmd Syntax railslog if s:autoload()|call rails#log_syntax()|endif
augroup END
基本上s:Detect
所做的是找到 Rails 项目的根并检查是否存在./config/environment.rb
,如果是这种情况,它会创建一个事件BufEnterRails
,silent doau User BufEnterRails
并且在发生 BufEnterRails 的情况下还有另一个自动命令。
您的插件必须遵循相同的路径。在打开缓冲区时,您应该尝试在您正在编辑的 html 文件路径中找到特定的 Django 文件或目录,然后确定您是否在 Django 项目中。
由于我不了解 Django,因此我无法确定要查找哪个文件,但每个 Django 项目可能都有一个通用的项目配置文件。