【问题标题】:Teaching vim to fold RStudio-like sections using foldexpr教 vim 使用 foldexpr 折叠类似 RStudio 的部分
【发布时间】:2017-05-10 19:44:15
【问题描述】:

我想让vim 尊重rstudio-like 部分,并通过foldexpr 启用这些文本块的折叠。

部分

这些部分相当简单,对应于带有一组单词和 --- 符号的文本块,直到 80 个字符,如下图所示:

有关这些部分如何工作的更多信息,请访问here

问题

如何在 vim 中构建 foldexpr 以便它识别格式部分:

# Word word ... ------------------------

正则表达式

正则表达式匹配部分的格式可以是:

\#[[:blank:]]([[:word:]]|[[:blank:]]){1,}\-{1,}

regex101

【问题讨论】:

    标签: regex vim syntax comments folding


    【解决方案1】:

    这似乎可以解决问题:

    set foldmethod=expr
    set foldexpr=RFoldexpr(v:lnum)
    
    function! RFoldexpr(lnum)
      if getline(a:lnum) =~ '^#\s\(\w\+\s\+\)\+-\+$'
        " Start a new level-one fold
        return '>1'
      else
        " Use the same foldlevel as the previous line
        return '='
      endif
    endfunction
    

    将它放在文件~/.vim/ftplugin/r.vim 中应该会在加载 R 文件时自动评估它。如果您想详细了解它的工作原理以及您可以添加哪些其他“功能”,请尝试阅读:help fold-expr

    【讨论】:

    • 对我来说,正则表达式没有正确匹配,因为像撇号这样的东西导致它错过了折叠。我将正则表达式更改为'^#\s\(.*\)\+-\+$',这似乎已经解决了我的测试文件中的问题。
    猜你喜欢
    • 2014-09-10
    • 2015-02-08
    • 2014-02-13
    • 2011-07-01
    • 1970-01-01
    • 2012-06-13
    • 2013-12-07
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多