Vim:仅折叠顶层折叠

Vim:仅折叠顶层折叠,vim,folding,Vim,Folding,我在Vim中有一个语法折叠的长代码文件 我知道如何打开所有折叠(zR)或关闭所有折叠(zM),我知道如何增加或减少折叠级别(zM,zR) 然而,当我增加折叠级别时,最里面的折叠是闭合的;相反,我希望最外层的褶皱闭合,而最内层的褶皱展开。可以通过手动打开所有折叠并手动关闭每个顶层折叠来实现这一点。特别是对于我快速打开以获得代码概述的长文件,这是令人难以置信的乏味 有什么快捷键可以做到这一点吗?或者我需要做一些Vim函数来实现这一点吗?如果是这样的话,怎么做?我想你应该把设置foldnestmax=

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

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

然而,当我增加折叠级别时,最里面的折叠是闭合的;相反,我希望最外层的褶皱闭合,而最内层的褶皱展开。可以通过手动打开所有折叠并手动关闭每个顶层折叠来实现这一点。特别是对于我快速打开以获得代码概述的长文件,这是令人难以置信的乏味


有什么快捷键可以做到这一点吗?或者我需要做一些Vim函数来实现这一点吗?如果是这样的话,怎么做?

我想你应该把
设置foldnestmax=1
添加到你的
$MYVIMRC
中,正如卡尔所说,
foldnestmax
设置可能就是你想要的

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

我还发现
zx
zv
非常有用

当我对自定义折叠表达式使用
foldmethod=expr
时,我通常会修改表达式,使其仅折叠我想要折叠的内容。

是的,您可以键入

:%foldc

关闭一层折叠(从外到内)。

@kevin它将避免嵌套折叠(即只有最外层的折叠出现)。
%
符号是什么?我知道这很旧,但
%
基本上是范围
1,$
的快捷方式(因此,整个文件)
zO
以递归方式打开折叠。您可以使用
zj
zk
在褶皱之间导航。