【问题标题】:Vim Folding with RainbowParentheses使用 RainbowParentheses 进行 Vim 折叠
【发布时间】:2013-02-24 13:10:17
【问题描述】:

所以,我到处寻找一个好的彩虹括号插件,它可以为不同级别的括号提供不同的颜色。我真的很喜欢couple that I've found,因为它们在可定制性方面都做得很好,而highlighting the right thing。它支持的不仅仅是括号;人字形、大括号和方括号都被突出显示,我真的很喜欢。

好像有quite a few plugins for this!;我目前正在使用 oblitum,因为他针对深色背景进行了优化(我经常直接在 shell 中工作)。

因此,按照 github 上关于该插件的提示,我的.vimrc 中有“始终在线”的 sn-p。但是,当 always on 块高于“启用语法”时,它不会显示 {} 为 cpp 文件突出显示。当 always on 块低于syntax enable 时,折叠不起作用。我认为是插件的性质使它做到了这一点;它通过文件并添加着色信息。我注意到,如果我在加载文件后使用命令:syntax enable,但它不能识别折叠,那么它确实识别折叠。但在这一点上,它消除了彩虹括号放在它上面的颜色。

在我的.vimrc 中,我有以下相关行:

syntax enable
set foldmethod=syntax
set foldenable
set foldlevel=100

let g:rainbow_operators=2
au FileType c,cpp,objc,objcpp call rainbow#activate()

我认为,通过查看 vim 附带的语法文件,例如 c.vim,您可以看到某些块被注释为折叠。我敢打赌,如果您可以根据它编写一个正则表达式,您就可以将字符识别为句法组。然后你可以为它定义一个配色方案。其实rainbow plugin其实是在调用“syn region”命令,所以我觉得这条路线很可行,只是我对vim脚本不太了解。

谁能帮我修改插件或想出一个脚本或实现两者的东西?

【问题讨论】:

  • 我建议将rainbow#activate() 更改为rainbow#load()activate() 有时会丢失重新加载突出显示,load() 在需要时强制重新加载突出显示。在我的.vimrc 我使用set foldmethod=markersyntax on 并使用它“波纹管”。我对折叠没有任何问题...
  • 那么,您如何拥有 foldmethod=marker 并同时使用 C++?
  • 啊,如果您设置 foldmarkers={,} 它会为函数和类定义执行此操作。但是 cmets 呢?
  • 我觉得不需要太多的折叠。我也没有和他们玩太多。
  • Aww :/ 好吧,我只是想让它完美地工作。如果您没有注意到,有多个与您类似的插件,但没有人费心解决这个问题,这就是为什么我觉得在这里提出它是合适的。我想唯一的另一种方法是将您的插件合并到语法突出显示中,以便默认情况下发生着色 []{}(),或者修改 vim 中的任何语法设置,以便它们用于折叠用五颜六色的 {}()[]。后一种方式听起来更好......

标签: c++ vim


【解决方案1】:

抱歉来晚了,我已经尝试在Fix disabled folding (issue #2)解决它

【讨论】:

    【解决方案2】:

    我依稀记得遇到过相同或类似的问题。
    XML 代码突出显示也被破坏了 IIRC。

    我关闭了“始终开启”,仅在需要时才激活彩色括号。
    所以我的工作解决方案只是打开和关闭插件的快捷方式。

    【讨论】:

    • 嗯,我希望两者同时工作。不过我很感激。
    • 相信我,我理解你。只是有时,当您没有时间/资源来解决问题时,您必须划清界限并坚持使用解决方法。 Tim Pope 的 Vim 的 git 插件“Fugitive”和 Steve Losh 的 Splice 插件(三向差异)不能很好地相互配合,包括段错误和其他东西。我很喜欢这两个,但我无法辨别问题的根源......也让我很伤心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2013-01-16
    • 2012-06-13
    • 2011-04-09
    相关资源
    最近更新 更多