Я часто пишу документы в knitr, используя vim, что означает, что у меня есть код уценки, смешанный с R-кодом. Я хотел бы иметь раскраску синтаксиса R для фрагментов R, но уценку или отсутствие раскраски для всех остальных фрагментов. Это выполнимо? Как?
syntax-highlighting
январь
источник
источник
s:syntax_include
иs:file_type_handler
: github.com/junegunn/dotfiles/blob/master/vimrcg:markdown_fenced_languages
в свой,vimrc
например, let g: markdown_fenced_languages = ['r'] `. Я предполагаю, что вы используете синтаксис уценки по умолчанию, предоставленный Тимом Папой. Подробнее об огороженных языкахОтветы:
Как отмечает Питер Ринкер , стандартное форматирование разметки Vim уже включает поддержку выделения
r
кода внутри «блока выделенного кода», и для его включения вам просто нужно установить глобальную переменную с кодом в вашемvimrc
:Однако после этого вы обнаружите, что ваши блоки кода knitr все еще не выделены.
Это связано с тем, что knitr использует форматирование информационных строк в Pandoc , чтобы отличить код R, который должен быть запущен, от обычного блока кода , а регулярное выделение Markdown в Vim не поддерживает это 1 .
Самый простой способ исправить это - вручную добавить дополнительный элемент синтаксиса, соответствующий блоку кода этого типа, добавив следующую строку в
~/.vim/after/syntax/markdown.vim
Вы также можете рассмотреть возможность установки плагина Vim для подсветки Pandoc, который предположительно будет поддерживать это из коробки.
1: Это не может считаться проблемой в файле синтаксиса уценки Vim. Оригинальный синтаксис Markdown не включает огорожен блоки коды на всех, и CommonMark спецификация не определяет , как информацию строка должна быть отформатирована.
источник