gpt4 book ai didi

r - 我可以在 R 标记中使用 vim 高亮代码吗?

转载 作者:行者123 更新时间:2023-12-04 10:44:46 27 4
gpt4 key购买 nike

假设我有一个这样的 .Rmd 文件:

The total number of steps per day can also be calculated
using `tapply`.
```{r}
tapply(d$steps, INDEX=d$date, FUN=sum)[1:5]
```
What seems to be different is that, per default, `xtabs`
returns 0 for `NA` values and `tapply` returns `NA`.

在我的终端窗口中,这看起来像这样:

如果我能以某种方式通知 vim R 块实际上是 R 代码,就像在实际的 .R 文件中工作时一样,它可以突出显示,那就太好了。

这可能吗?

最佳答案

是的你可以。此代码取自 here

将其放在 ~/.vim/r.vim 文件中(如果这些文件中的任何一个不存在,请创建它们)

function! TextEnableCodeSnip(filetype,start,end,textSnipHl) abort
let ft=toupper(a:filetype)
let group='textGroup'.ft
if exists('b:current_syntax')
let s:current_syntax=b:current_syntax
" Remove current syntax definition, as some syntax files (e.g. cpp.vim)
" do nothing if b:current_syntax is defined.
unlet b:current_syntax
endif
execute 'syntax include @'.group.' syntax/'.a:filetype.'.vim'
try
execute 'syntax include @'.group.' after/syntax/'.a:filetype.'.vim'
catch
endtry
if exists('s:current_syntax')
let b:current_syntax=s:current_syntax
else
unlet b:current_syntax
endif
execute 'syntax region textSnip'.ft.'
\ matchgroup='.a:textSnipHl.'
\ start="'.a:start.'" end="'.a:end.'"
\ contains=@'.group
endfunction

现在你可以使用
:call TextEnableCodeSnip(  'r',   '```{r}',   '```', 'SpecialComment')

只要有 r.vim 语法文件。

您也可以在每次打开 .Rmd 文件时自动调用此方法:
autocmd BufNewFile,BufRead *.Rmd :call TextEnableCodeSnip(  'r',   '```{r}',   '```', 'SpecialComment')

如果您想用 r 后跟任意数量的字符突出显示,您可以使用正则表达式:
:call TextEnableCodeSnip(  'r',   '```{r.*}',   '```', 'SpecialComment')

或者在你的 .vimrc 中:
autocmd BufNewFile,BufRead *.Rmd :call TextEnableCodeSnip(  'r',   '```{r.*}',   '```', 'SpecialComment')
.* 正则表达式表示任何重复字符。所以 r.* 意味着 r 后跟任意数量的字符。

因此,这将与
```{r whatever you want to put here}`
Some r code here
```

关于r - 我可以在 R 标记中使用 vim 高亮代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com