vim – 混合两个语法高亮脚本
我写Jekyll的博客文章,为此我最终在同一个文件中使用三种不同的语言:YAML在开始的帖子元数据,Markdown在正文中,C代码片段。
我试图设置一个脚本,以便我可以使vim高亮显示所有三个适当的我,结果在这样的语法/ jekyll.vim中: " Build upon Markdown syntax runtime! syntax/markdown.vim " pretend there's no syntax loaded unlet b:current_syntax " Bring in YAML syntax for front matter syntax include @Yaml syntax/yaml.vim syntax region yamlFrontmatter start=/%^---$/ end=/^---$/ keepend contains=@Yaml " pretend there's no syntax loaded unlet b:current_syntax " Bring in C++11 syntax for code snippets syntax include @Cpp syntax/cpp.vim syntax region cppCodeSnippet matchgroup=Comment start=/^{% highlight cpp %}$/ end=/^{% endhighlight %}$/ keepend contains=@Cpp let b:current_syntax='jekyll' 我还设置了一个文件检测脚本来将ft设置为此语法。 几乎可以工作当我打开一个被检测为这种类型的文件时,除了C的亮点之外,我得到一切正确。但是,如果我键入:syn之后,一切都正常。我可以删除缓冲区并再次打开文件,所有的高亮都可以。如果我关闭vim并重新启动,我需要再次运行:syn。 我缺少什么?如何调试此问题?
快速修复:将语法附加到.vimrc的最后一行,这与在实时会话中设置:syn相同。
不是那么快: 看起来您可能已经在$ VIMRUNTIME中安装了默认语法文件中的自定义’jekyll’语法。 根据Vim wiki section on custom syntax,最好将所有个人定制保存在?/ .vim中。例如,将你的jekyll.vim语法放在?/ .vim / syntax /中。
在Vim syntax docs: 因此,如果设置:syntax on使您的自定义语法工作,它必须包含在默认语法集中。 尝试保留所有的自定义的东西在?/ .vim,看看是否解决了问题。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |