VIM上红宝石的代码折叠区域?

时间:2011-09-30 16:12:56

标签: ruby-on-rails vim

我知道不是每个人都喜欢代码折叠,但作为转换为Rails和转换为VIM,我想要在Visual Studio.Net中获得一个便利。我希望能够放置任意#region #endregion标签,让VIM像其他一样折叠它们。

我打开了语法代码折叠,正常def..end折叠工作正常,我只想用#regions来增强它。

我做了一些谷歌搜索,并认为我可以在我的语法文件夹中的ruby.vim中执行此操作,但它不起作用,我不知道调试是否是我复制的错误代码或如果它只是“不起作用。”

let b:match_words = '\s*#\s*region.*$:\s*#\s*endregion'

这是我在syntax / ruby​​.vim中的唯一一行。事实上,在我开始之前,文件并不存在,即使ruby突出显示工作正常。 (这也给我留下了大红旗 - 我不知道ruby / rails语法,除非它在rails.vim插件中,但我也找不到它。

有人可以借给我一个线程,以便我可以关注它并想出来吗? 感谢

更新

我找到了其他一些代码片段并试用了这个版本,几乎让我在那里:

syn region vimFoldRegion
  \ start="#region"
  \ end="#endregion"
  \ skip=+"\%(\\"\|[^"]\)\{-}\%("\|$\)\|'[^']\{-}'+
  \ transparent fold
  \ keepend extend
  \ containedin=ALLBUT,@vimNoFold

这让我可以折叠区域,但区域内的所有代码都显示为注释。我已经尝试了syn上参数的不同变化,但我不是在研究它。

1 个答案:

答案 0 :(得分:2)

如果设置foldmethod=marker,Vim可以根据标记折叠区域。默认标记为{{{}}},但我非常确定您可以将这些标记覆盖为#region#endregion。问题是你失去了根据语法折叠的能力。还有另一个Stack Overflow问题涉及组合两种折叠方法[1],但结论是不可能同时进行这两种方法。

对于它的价值,我发现vim的基于语法的代码折叠对于大型Ruby文件来说非常慢,所以如果你遇到同样的问题,你可能会发现自己想要切换到只有标记的折叠方法。 / p>

[1] Foldmethod=marker and syntax at the same time?