Vim:仅折叠顶层折叠

Posted

技术标签:

【中文标题】Vim:仅折叠顶层折叠【英文标题】:Vim: Fold top level folds only 【发布时间】:2011-07-01 17:53:02 【问题描述】:

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

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

但是,当我增加折叠级别时,最里面的折叠会关闭;相反,我希望最外面的折叠关闭,而最里面的折叠则展开。可以通过手动打开所有折叠并手动关闭每个***折叠来手动执行此操作,特别是对于我快速打开以获取代码概览的长文件来说,这非常乏味。

是否有任何快捷键可以做到这一点?还是我需要制作某种 Vim 函数来做到这一点?如果有,怎么做?

【问题讨论】:

zO 递归打开折叠。您可以使用zjzk 在折叠之间导航。 【参考方案1】:

我想您想将set foldnestmax=1 添加到您的$MYVIMRC

【讨论】:

@kevin 它将避免嵌套折叠,即只存在最外层的折叠。【参考方案2】:

是的,您可以输入

:%foldc

关闭一层折叠(由外向内)。

【讨论】:

% 符号是干什么用的? 我知道这是旧的,但% 基本上是1,$ 范围的快捷方式(所以,整个文件)【参考方案3】:

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

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

我还发现 zxzv 很有帮助。

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

【讨论】:

以上是关于Vim:仅折叠顶层折叠的主要内容,如果未能解决你的问题,请参考以下文章

vim技巧:折叠快捷键

oeasy教您玩转vim - 70 - # 折叠细节

Vim代码折叠的indent模式

vim设置为indent折叠以后,每次打开文件时代码处于折叠状态,能改变吗?

如何用 Vim 折叠/展开 HTML 标签

vim中的折叠功能