我在Vim编辑器中有一个带有语法折叠的长代码文件。
我知道如何打开所有折叠(zR)或关闭所有折叠(zM),也知道如何增加或减少折叠级别(zm,zr)。
但是当我增加折叠级别时,最内层的折叠会被关闭;而我想关闭最外层的折叠,同时展开最内层的折叠。可以通过手动打开所有折叠然后逐个手动关闭各个顶级折叠来实现,但这非常繁琐,尤其是对于我迅速打开以获得代码概览的长文件而言。
是否有快捷键来做到这一点?或者我需要创建某种 Vim 函数来实现此功能?如果是这样,应该如何操作?
我认为你想在$MYVIMRC
中添加set foldnestmax=1
。
是的,你可以输入
:%foldc
折叠最外层的一个级别(从外向内)。
%
符号是用来做什么的? - nn0p%
基本上是缩写形式,代表整个文件的范围是从第1行到最后一行($)的区间。 - rgoliveira正如Karl所说,foldnestmax
设置可能是您想要的。
zO
(即大写字母“o”)打开所有嵌套折叠。
我也发现zx
和zv
非常有用。
当我使用自定义折叠表达式的foldmethod=expr
时,我经常修改表达式,以便它只折叠我想要折叠的内容。
zO
递归打开一个折叠。您可以使用zj
和zk
在折叠之间导航。 - jchook