Vim 包括折叠区域后面的空白行

Vim 包括折叠区域后面的空白行,vim,syntax,folding,Vim,Syntax,Folding,我目前正在尝试改进Vim中Matlab文件的折叠行为。我生成了一个语法文件,折叠的行为与我想要的一样,只有一个例外。假设我有以下代码: function [out1,out2] = doSomething(arg1,arg2) out1 = performSubRoutine(arg1); out2 = performSubRoutine(arg2); end function output = performSubRoutine(input) output = inp

我目前正在尝试改进Vim中Matlab文件的折叠行为。我生成了一个语法文件,折叠的行为与我想要的一样,只有一个例外。假设我有以下代码:

function [out1,out2] = doSomething(arg1,arg2)
    out1 = performSubRoutine(arg1);
    out2 = performSubRoutine(arg2);
end

function output = performSubRoutine(input)
    output = input;
end
当我进行折叠时,我得到:

+---  4 lines: function [out1,out2] = doSomething(arg1,arg2)

+---  3 lines: function output = performSubRoutine(input)
理想情况下,我希望折叠中包含任何尾随空格

语法文件中的我的区域定义为:

syn region matlabClassBlock     
            \transparent fold 
            \matchgroup=matlabClass 
            \extend start='\<function\>'        
            \end='\%([%-+(\*\:(\/\[]\s*\)\@<!\<end\>\%(\s*[-+}\:\*\/()\]]\)\@!.*\($\n^\s*\)*$'re=e 
            \contains=ALLBUT,@matlabClassCluster,@matlabProceduralCluster
syn区域matlabClassBlock
\透明褶皱
\matchgroup=matlabClass
\扩展开始='\'
\end='\%([%-+(\*\:(\/\[]\s*\)\@\%(\s*[-+}\:\*\/()\]]\)\@!*\($\n^\s*\)*$'re=e
\contains=ALLBUT、@matlabClassCluster、@matlabProceduralCluster
我使用偏移说明符“re=e”表示我想折叠到匹配的末尾,但仍然得到第一个结果


我肯定遗漏了什么,因为文档中说明了偏移方法应该有效。有什么想法吗?

折叠要隐藏什么尾随空白?你是指两个折叠函数之间的空白行吗?是的,你能更新你的问题以包含所需输出的示例吗?我想可能是Vim bug或f特征。如果将结束模式更改为
“^$'re=e
(即匹配空行),则空行仍不包括在折叠中。另一方面,如果将结束模式更改为
”^$'re=e
(即,在测试用例中,匹配包含单个空格的行,并在第一个“end”之后的行中添加一个空格,然后该行被包括在内。我认为空行必须专门用于基于语法的折叠。