根据vim中的语法更改折叠级别

Change fold level based on syntax in vim

本文关键字:折叠 语法 vim 根据      更新时间:2023-10-16

给定以下c++代码:

//
// Some comments at the begin of the code.
// For instance, license, author name, date.
// Referred as "Comment A"
//
namespace one {
  namespace two {
    // Here you have some code.
    // And this comment explain what the code is doing.
    void exampleFunction();
  }
}

和我的.vimrc

中的以下设置
set foldmethod=syntax
autocmd Syntax c,cpp syntax region cCommentLicense start="^s*//" end="ns*(S[^/]|_$)"me=s,re=s,he=s fold

这些设置使我能够折叠以//开头的段落。

我的问题

当修改foldlevel时(使用zrzm),第一条注释(注释A)自动折叠。是否可以更改其折叠级别(例如将其设置为9)?

其他注释的折叠级别对我来说并不重要。

对于基于语法的折叠,折叠级别由语法结构决定。要获得9级折叠,您必须定义9个嵌套的语法区域。

使用:set foldmethod=expr,您可以更好地控制折叠级别,并且可以显式返回9。只要你只使用折叠注释,你就可以编写一个简单的等价表达式,但是如果还有其他折叠结构,那将很快变得复杂。