#1 楼
正如Peter Rincker所指出的那样,Vim的标准markdown格式已经包含了对在“限制代码块”中突出显示r
代码的支持,并且要启用它,您只需在vimrc
中设置代码中的全局变量即可: > let g:markdown_fenced_languages = ['r']
但是,这样做之后,您会发现您的knitr代码块仍然没有突出显示。区别将要从常规代码块运行的R代码,而Vim的常规Markdown高亮不支持this1。
解决此问题的最简单方法是手动添加一个额外的语法项来匹配此代码通过在
~/.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语法文件中,这实际上不是一个问题。原始的Markdown语法根本不包含受防护的代码块,CommonMark规范也没有定义信息字符串的格式。
评论
我认为可以,请尝试查看vim.wikia.com/wiki/…根据您的markdown插件,您可能已经支持或可能不支持对包含的“代码块”的语法着色。在第一种情况下,您将(仅)必须更改插件的语法以将“ R块”识别为有效的代码块。在第二种情况下,也许您可以从Junegunn的vimrc中得到启发,尤其是函数s:syntax_include和s:file_type_handler:github.com/junegunn/dotfiles/blob/master/vimrc
这是一个Markdown文件,恰巧在代码块中包含R代码吗?如果是这样,您可能需要在vimrc中的g:markdown_fenced_languages中添加R,例如让g:markdown_fenced_languages = ['r']`。我假设您使用的是Tim Pope提供的默认markdown语法。有关受限制语言的更多信息
像Vim中的大多数东西一样,Vim语法文件只是文件中放置的一系列Ex命令。您可以根据需要添加一个,两个,三个或任意多个。创建一个语法文件来突出显示某些块(如语言A)和另一些块(如语言B)并不难(实际上,我只是在另一个答案中做到了这一点)。但是,我不完全确定“编织”文档的外观如何?这就是Markdown吗?还是其他语法?