我使用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 [email protected]
" 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 [email protected]
let b:current_syntax='jekyll'
我還設置了一個文件檢測腳本將ft
設置爲此語法。
它差不多的作品。當我打開一個被檢測爲這種類型的文件時,我會得到一切正確的,除了用於C++高亮。但是,如果在此之後輸入:syn on
,則一切正常。我可以刪除緩衝區並再次打開文件,所有高亮都可以。如果我關閉vim並重新啓動它,我需要再次運行:syn on
。
我錯過了什麼?我該如何調試這個問題?
你有沒有運行':verbose se ft?語法?'?你可以找出(使用':debug'?)加載cpp緩衝區時哪個(Syntax)自動命令按順序被觸發?添加':語法同步fromstart'是否會改變事物? – sehe 2013-04-24 21:39:45
可能的重複[如何用不同的語法語法突出顯示文件的一部分?](http://stackoverflow.com/questions/16162221/how-to-syntax-highlight-a-part-of-file-in -a-different-syntax) – Makoto 2013-04-26 05:50:26
聽起來像是我的加載順序問題。如果我不得不猜測,我會說在cpp.vim之後加載了一些東西,導致它第二次運行。您可以嘗試添加cpp.vim,之後可能會告訴您這是否是加載順序問題。你也可能想做:verbose set eventignore?除了ft?和語法?否則,你可以使用echom和:messages來調試它。 – doliver 2013-10-01 04:13:53