관리-도구
편집 파일: rmd.vim
" markdown Text with R statements " Language: markdown with R code chunks " Homepage: https://github.com/jalvesaq/R-Vim-runtime " Last Change: Sat Jan 28, 2017 10:06PM " " CONFIGURATION: " To highlight chunk headers as R code, put in your vimrc (e.g. .config/nvim/init.vim): " let rmd_syn_hl_chunk = 1 " " For highlighting pandoc extensions to markdown like citations and TeX and " many other advanced features like folding of markdown sections, it is " recommended to install the vim-pandoc filetype plugin as well as the " vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc. " " TODO: " - Provide highlighting for rmarkdown parameters in yaml header if exists("b:current_syntax") finish endif " load all of pandoc info, e.g. from " https://github.com/vim-pandoc/vim-pandoc-syntax runtime syntax/pandoc.vim if exists("b:current_syntax") let rmdIsPandoc = 1 unlet b:current_syntax else let rmdIsPandoc = 0 runtime syntax/markdown.vim if exists("b:current_syntax") unlet b:current_syntax endif " load all of the yaml syntax highlighting rules into @yaml syntax include @yaml syntax/yaml.vim if exists("b:current_syntax") unlet b:current_syntax endif " highlight yaml block commonly used for front matter syntax region rmdYamlBlock matchgroup=rmdYamlBlockDelim start="^---" matchgroup=rmdYamlBlockDelim end="^---" contains=@yaml keepend fold endif if !exists("g:rmd_syn_langs") let g:rmd_syn_langs = ["r"] else let s:hasr = 0 for s:lng in g:rmd_syn_langs if s:lng == "r" let s:hasr = 1 endif endfor if s:hasr == 0 let g:rmd_syn_langs += ["r"] endif endif for s:lng in g:rmd_syn_langs exe 'syntax include @' . toupper(s:lng) . ' syntax/'. s:lng . '.vim' if exists("b:current_syntax") unlet b:current_syntax endif exe 'syntax region rmd' . toupper(s:lng) . 'Chunk start="^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" end="^[ \t]*```$" contains=@' . toupper(s:lng) . ',rmd' . toupper(s:lng) . 'ChunkDelim keepend fold' if exists("g:rmd_syn_hl_chunk") && s:lng == "r" " highlight R code inside chunk header syntax match rmdRChunkDelim "^[ \t]*```{r" contained syntax match rmdRChunkDelim "}$" contained else exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" contained' endif exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```$" contained' endfor " also match and syntax highlight in-line R code syntax region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend " I was not able to highlight rmdrInline inside a pandocLaTeXCommand, although " highlighting works within pandocLaTeXRegion and yamlFlowString. syntax cluster texMathZoneGroup add=rmdrInline " match slidify special marker syntax match rmdSlidifySpecial "\*\*\*" if rmdIsPandoc == 0 syn match rmdBlockQuote /^\s*>.*\n\(.*\n\@<!\n\)*/ skipnl " LaTeX syntax include @LaTeX syntax/tex.vim if exists("b:current_syntax") unlet b:current_syntax endif " Inline syntax match rmdLaTeXInlDelim "\$" syntax match rmdLaTeXInlDelim "\\\$" syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup " Region syntax match rmdLaTeXRegDelim "\$\$" contained syntax match rmdLaTeXRegDelim "\$\$latex$" contained syntax match rmdLaTeXSt "\\[a-zA-Z]\+" syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXRegDelim keepend syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXRegDelim keepend hi def link rmdBlockQuote Comment hi def link rmdLaTeXSt Statement hi def link rmdLaTeXInlDelim Special hi def link rmdLaTeXRegDelim Special endif for s:lng in g:rmd_syn_langs exe 'syn sync match rmd' . toupper(s:lng) . 'SyncChunk grouphere rmd' . toupper(s:lng) . 'Chunk /^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\)/' endfor hi def link rmdYamlBlockDelim Delim for s:lng in g:rmd_syn_langs exe 'hi def link rmd' . toupper(s:lng) . 'ChunkDelim Special' endfor hi def link rmdInlineDelim Special hi def link rmdSlidifySpecial Special let b:current_syntax = "rmd" " vim: ts=8 sw=2