如何在vim中折叠所有出现的正则表达式?

时间:2010-09-21 09:01:28

标签: regex vim folding

我的一位同事正在使用一个可怕的源代码编辑器,在整个代码中留下了奇怪的评论。在Visual Studio中,我created a macro,它只是折叠所有这些注释块,所以我不必看到它们。

现在我想在vim中做同样的事情。

这个正则表达式匹配这些块中的每一个:

/^.*\/\* EasyCODE.*\(\(\n.*\*\/\)\|\(\n.*\/\*.*\)\|\(\n\/\/.*\)\)*/

现在我打赌有一种非常好的方法可以在vim中折叠这种模式的所有匹配。但是,我对vim很新,不知道该怎么做。

你能帮助我吗?

编辑:一些例子:

这些评论块始终以/* EasyCODE开头。有时评论在第一行的末尾有一个结束*/,有时只在下一行。以下行可能包含也可能不包含其他“/* EasyCODE ...”块。

其中一个块看起来像这样

/* EasyCODE ) */
/* EasyCODE ( 0 
some text */
/* EasyCODE F */

或者像这样

/* EasyCODE V8 */
/* EasyCODE ( 0 */

或者像这样

/* EasyCODE > */

正如我所说的,上面的正则表达式捕获了所有这些。

1 个答案:

答案 0 :(得分:3)

我不完全清楚你的块的细节(因此关于提供示例的评论),但你可以使用这样的东西:

:set foldmarker=/\*\ EasyCODE,\*/
:set foldmethod=marker

这会配置'标记'折叠方法,在代码中查找某些标记,然后将起始标记设置为/* EasyCODE,结束标记设置为*/。希望这会给你一些帮助你入门的东西。如果您可以发布示例源文件,我可能会提供更多建议。

:help folding
:help 'foldmarker'
:help 'foldmethod'
:help fold-marker