我知道不是每个人都喜欢代码折叠,但作为转换为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上参数的不同变化,但我不是在研究它。
答案 0 :(得分:2)
如果设置foldmethod=marker
,Vim可以根据标记折叠区域。默认标记为{{{
和}}}
,但我非常确定您可以将这些标记覆盖为#region
和#endregion
。问题是你失去了根据语法折叠的能力。还有另一个Stack Overflow问题涉及组合两种折叠方法[1],但结论是不可能同时进行这两种方法。
对于它的价值,我发现vim的基于语法的代码折叠对于大型Ruby文件来说非常慢,所以如果你遇到同样的问题,你可能会发现自己想要切换到只有标记的折叠方法。 / p>