复杂的ftdetect插件

shy*_*kov 3 syntax vim syntax-highlighting

我想为自定义编程语言创建vim语法高亮文件.即C/AL,它是Dynamics NAV系统的内部.

问题是通过文件扩展名无法检测到.历史上,C/AL使用*.TXT文件.突出显示所有*.TXT文件也不好,因为其中一些文件可能包含C/AL代码.

我知道VIM不仅可以通过扩展来检测语言,还可以通过文件内容来检测语言.我在官方手册中找到了一些例子.然而,它表明我可以使用第一种方法,或第二种方法.

是否有可能将它们组合在一起?我在哪里可以找到这种行为的例子?

先感谢您!

Tim*_*imK 5

您可以使用getline根据文件内容优化检测.例如,这会检测.tmp文件中的XML:

autocmd! BufNewFile,BufRead *.tmp
    \ if getline(1) =~ '<?\s*xml.*?>' |
    \     setfiletype xml |
    \ endif
Run Code Online (Sandbox Code Playgroud)

另一种方法是添加一个模式行至每一个C/AL文件.