Как отмечает Питер Ринкер , стандартное форматирование разметки Vim уже включает поддержку выделения r
кода внутри «блока выделенного кода», и для его включения вам просто нужно установить глобальную переменную с кодом в вашем vimrc
:
let g:markdown_fenced_languages = ['r']
Однако после этого вы обнаружите, что ваши блоки кода knitr все еще не выделены.
Это связано с тем, что knitr использует форматирование информационных строк в Pandoc , чтобы отличить код R, который должен быть запущен, от обычного блока кода , а регулярное выделение Markdown в Vim не поддерживает это 1 .
Самый простой способ исправить это - вручную добавить дополнительный элемент синтаксиса, соответствующий блоку кода этого типа, добавив следующую строку в ~/.vim/after/syntax/markdown.vim
syntax region markdownHighlightr matchgroup=markdownCodeDelimiter start=/^\s*```{r}.*$/ end=/^\s*```\ze\s*$/ keepend contains=@markdownHighlightr
Вы также можете рассмотреть возможность установки плагина Vim для подсветки Pandoc, который предположительно будет поддерживать это из коробки.
1: Это не может считаться проблемой в файле синтаксиса уценки Vim. Оригинальный синтаксис Markdown не включает огорожен блоки коды на всех, и CommonMark спецификация не определяет , как информацию строка должна быть отформатирована.