26

私は 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

私は何が欠けていますか?この問題をデバッグするにはどうすればよいですか?

4

1 に答える 1

3

簡単な修正:syntax onの最後の行に追加します。これは、ライブ セッションでの .vimrc設定と同じです。:syn on

それほど速くない:

のデフォルトの構文ファイルと一緒にカスタムの「jekyll」構文をインストールしたようです$VIMRUNTIME

カスタム構文に関する Vim wiki セクションによると、すべての個人的なカスタマイズを .xml 内に保持することをお勧めします~/.vim。たとえば、jekyll.vim構文をに入れます~/.vim/syntax/

アップグレード中に上書きされるため、Vim で配布されたファイルを含むディレクトリは使用しないでください (特に、$VIMRUNTIME ディレクトリは使用しないでください)。

Vimの構文 docs では、 ' :
:syntax enablesource $VIMRUNTIME/syntax/DEFAULT_SYNTAX.vim' を実行します。
:syn on(または:syntax on)「デフォルトで設定を上書き」します。

したがって、設定:syntax onによってカスタム構文が機能する場合は、デフォルトの構文セットに含まれている必要があります。

すべてのカスタム項目を保持してみて、~/.vim問題が解決するかどうかを確認してください。

于 2013-10-09T23:00:00.120 に答える