私は Jekyll でブログ投稿を書いていますが、そのために同じファイルで 3 つの異なる言語を使用することになります。投稿メタデータの先頭に YAML、本文に Markdown、コード スニペットに C++ です。
vimで3つすべてを適切に強調表示できるようにスクリプトをセットアップしようとしましたが、syntax/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 on
その後に入力すると、すべて正常に動作します。バッファを削除してファイルを再度開くと、すべてのハイライトに問題はありません。vim を閉じて再起動すると、再度実行する必要があります:syn on
。
私は何が欠けていますか?この問題をデバッグするにはどうすればよいですか?