Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在vim中折叠所有出现的正则表达式?_Regex_Vim_Folding - Fatal编程技术网

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

Regex 如何在vim中折叠所有出现的正则表达式?,regex,vim,folding,Regex,Vim,Folding,我的一个同事正在使用一个可怕的源代码编辑器,它会在代码中留下奇怪的注释。在VisualStudio中,我可以简单地折叠所有的注释块,这样我就不必看到它们了 现在我想在vim中做同样的事情 此正则表达式匹配这些块中的每一个: /^.*\/\* EasyCODE.*\(\(\n.*\*\/\)\|\(\n.*\/\*.*\)\|\(\n\/\/.*\)\)*/ 现在我打赌有一种非常好的方法可以在vim中折叠此模式的所有匹配项。然而,我对vim还是比较陌生,不知道如何做到这一点 你能帮我吗 编辑:一

我的一个同事正在使用一个可怕的源代码编辑器,它会在代码中留下奇怪的注释。在VisualStudio中,我可以简单地折叠所有的注释块,这样我就不必看到它们了

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

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

/^.*\/\* EasyCODE.*\(\(\n.*\*\/\)\|\(\n.*\/\*.*\)\|\(\n\/\/.*\)\)*/
现在我打赌有一种非常好的方法可以在vim中折叠此模式的所有匹配项。然而,我对vim还是比较陌生,不知道如何做到这一点

你能帮我吗

编辑:一些示例:

这些注释块始终以
/*EasyCODE
开头。有时注释在第一行末尾有一个结束符,有时仅在下一行。以下行可能包含也可能不包含附加的“
/*EasyCODE
..”块

其中一块可能是这样的

/* EasyCODE ) */
/* EasyCODE ( 0 
some text */
/* EasyCODE F */
/* EasyCODE V8 */
/* EasyCODE ( 0 */
/* EasyCODE > */
还是像这样

/* EasyCODE ) */
/* EasyCODE ( 0 
some text */
/* EasyCODE F */
/* EasyCODE V8 */
/* EasyCODE ( 0 */
/* EasyCODE > */
还是像这样

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

正如我所说,上面的正则表达式捕捉到了所有这些元素。

我不完全清楚您的块的细节(因此评论提供了一个示例),但是您可以使用如下内容:

:set foldmarker=/\*\ EasyCODE,\*/
:set foldmethod=marker
这将配置在代码中查找特定标记的“标记”折叠方法,然后将开始标记设置为
/*EasyCODE
,将结束标记设置为
*/
。希望这会给你一些东西,让你开始。如果你能发布一个示例源文件,我可能会提供更多的建议

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

你能举例说明这些块是什么样子吗?答案是正确的,但重要的是,
foldmarker
条目是文本字符串,而不是正则表达式。