vimの混合色構文


12

私はしばしばvimを使用してknitrでドキュメントを書いています。つまりマークダウンコードとRコードが混在しています。RチャンクにR構文の色付けを行いたいが、他のすべてのフラグメントにはマークダウンまたは色付けをしたくない。これは実行可能ですか?どうやって?


3
できると思います、vim.wikia.com
wiki /を

5
マークダウンプラグインに応じて、含まれる「コードブロック」の構文の色付けを既にサポートしている場合とサポートしていない場合があります。最初のケースでは、プラグインの構文を(ちょうど)変更して、「Rチャンク」を有効なコードブロックとして認識する必要があります。第二の場合には、おそらくあなたは、Junegunnののvimrcから、特に機能自分を鼓舞することができますs:syntax_includeし、s:file_type_handlergithub.com/junegunn/dotfiles/blob/master/vimrc
VanLaser

5
これはたまたまコードブロック内にRコードがあるマークダウンファイルですか?もしそうならg:markdown_fenced_languagesvimrc例えば、let g:markdown_fenced_languages = ['r'] `にRを追加したいかもしれません。Tim Popeが提供するデフォルトのマークダウン構文を使用していると仮定しています。フェンスで囲まれた言語の詳細
ピーターリンカー

1
Vim構文ファイルは、Vimのほとんどのものと同様に、ファイルに入れられるExコマンドのシーケンスです。1つ、2つ、3つ、または必要な数だけ含めることができます。一部のブロックを言語Aとして、他のブロックを言語Bとして強調表示する構文ファイルを作成することはそれほど難しくありません(実際、別の回答でこれを行いました)。ただし、「knitr」ドキュメントがどのように見えるかは完全にはわかりません。これは単なるマークダウンですか?または別の構文ですか?
マーティントゥルノイ

回答:


2

ピーターRinckerノート、すでに書式設定Vimの標準値下げは強調表示するためのサポートが含まr「フェンスで囲まれたコードブロック」内のコードを、そして、それを可能にするために、あなたは自分のコードでグローバル変数を設定する必要がありますvimrc

let g:markdown_fenced_languages = ['r']

ただし、そうすると、knitrコードブロックがまだ強調表示されていないことがわかります。

これは、knitr が実行されるRコードを通常のコードブロックと区別するために、Pandocの情報文字列のフォーマットを使用し、Vimの通常のマークダウンハイライトがこの1をサポートしていないためです。

これを修正する最も簡単な方法は、次の行を追加して、このタイプのコードブロックに一致する追加の構文項目を手動で追加することです。 ~/.vim/after/syntax/markdown.vim

syntax region markdownHighlightr matchgroup=markdownCodeDelimiter start=/^\s*```{r}.*$/ end=/^\s*```\ze\s*$/ keepend contains=@markdownHighlightr

Pandocの強調表示のためにVimプラグインをインストールすることも検討できます。これはおそらくこれをすぐにサポートするでしょう。

1:これは、実際にはVimのマークダウン構文ファイルの問題と見なすことはできません。オリジナルのMarkdown構文は、すべてのフェンスで囲まれたコードブロックが含まれていない、とCommonMarkスペックは、情報文字列をフォーマットする方法を定義しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.