在 vim 中,我通常将大多数文件类型设置foldmethod
为indent
。一般来说,我喜欢打开文件时所有折叠都打开。但是,立即开始使用zm开始全局关闭整个文件的折叠(一次关闭一层)很有用,这样我就可以看到文件的整体结构,而不会被细节所干扰。
我发现的唯一通用解决方案是将其设置foldlevelstart
为一个非常高的数字,例如 99,以确保所有文件(请记住不同文件的最大缩进级别不同)都完全展开。但是,我必须zm反复使用以减少foldlevel
到文件的最大折叠级别,通常远小于 99,这很麻烦且不切实际。我可以foldlevel
使用 vim 命令行手动设置,但我仍然需要知道文件中的最大缩进。
是否有一种实用的方法来打开一个文件,并将其foldlevel
设置为比文件本身的最大当前缩进/折叠级别多一?
例如,给定以下文件:
a
b
c
d1
d2
e
f1
f2
第一次按下 键zm会显示以下内容:
a
b
c
+-- 2 lines: d1------
e
+-- 2 lines: f1------
(但请注意,它应该适用于文件的初始最大缩进可以是任意值的一般情况)。
答案1
查找当前文件中最高的折叠级别:
:let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
要自动设置此功能,您可以使用:autocmd
:
:autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))
答案2
不要使用zr
,而要使用zR
,这将打开所有折叠。同样,zM
将关闭所有折叠。
答案3
该选项set nofoldenable
可让您从打开所有折叠开始阅读文件