Vim:仅折叠顶级折叠

36

我在Vim编辑器中有一个带有语法折叠的长代码文件。

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

但是当我增加折叠级别时,最内层的折叠会被关闭;而我想关闭最外层的折叠,同时展开最内层的折叠。可以通过手动打开所有折叠然后逐个手动关闭各个顶级折叠来实现,但这非常繁琐,尤其是对于我迅速打开以获得代码概览的长文件而言。

是否有快捷键来做到这一点?或者我需要创建某种 Vim 函数来实现此功能?如果是这样,应该如何操作?


zO 递归打开一个折叠。您可以使用 zjzk 在折叠之间导航。 - jchook
3个回答

41

我认为你想在$MYVIMRC中添加set foldnestmax=1


2
@kevin 这将避免嵌套折叠,即只有最外层的折叠会存在。 - dromtrund

23

是的,你可以输入

:%foldc

折叠最外层的一个级别(从外向内)。


% 符号是用来做什么的? - nn0p
2
我知道这已经有点老了,但是%基本上是缩写形式,代表整个文件的范围是从第1行到最后一行($)的区间。 - rgoliveira

7

正如Karl所说,foldnestmax设置可能是您想要的。

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

我也发现zxzv非常有用。

当我使用自定义折叠表达式的foldmethod=expr时,我经常修改表达式,以便它只折叠我想要折叠的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接