Vim:仅折叠顶级折叠

dri*_*iax 33 vim folding

我在Vim中有一个带有语法折叠的长代码文件.

我知道如何打开所有折叠(zR)或关闭所有折叠(zM),我知道如何增加或减少折叠级别(zm,zr).

然而,当我增加折叠水平时,最内层的折叠是关闭的; 相反,我希望最内层的折叠关闭,而最内层的折叠展开.可以通过打开所有折叠并手动关闭每个顶层折叠来手动执行此操作,这是令人难以置信的繁琐,特别是我快速打开的长文件以获得代码的概述.

有没有关键的快捷方式吗?或者我需要制作某种Vim功能才能执行此操作?如果是这样,怎么样?

Kar*_*ldt 33

我想你想加入set foldnestmax=1你的$MYVIMRC.

  • @kevin它会避免嵌套折叠,即只存在你最外面的折叠. (2认同)

Zac*_*nce 21

是的,你可以输入

:%foldc
Run Code Online (Sandbox Code Playgroud)

它关闭了一个级别的折叠(在外面).

  • 我知道这已经很旧了,但是 `%` 基本上是范围 `1,$` 的快捷方式(所以,整个文件) (2认同)

Jer*_*lim 6

正如卡尔所说,这个foldnestmax设置可能就是你想要的.

zO (即,大写字母-o)打开所有嵌套折叠.

我也发现zx并且zv非常有帮助.

当我使用foldmethod=expr自定义折叠表达式时,我经常会修改表达式,使其只折叠我想要折叠的内容.