vscode内置不支持空行自动折叠,“editor.foldingstrategy”仅控制语法级折叠;需设“editor.showfoldingcontrols”: “always”并手动选中空行按ctrl+shift+[折叠,或安装auto fold扩展实现启动自动折叠。

VSCode 空行折叠靠 "editor.foldingStrategy" 不起作用
VSCode 默认不折叠空行,"editor.foldingStrategy" 控制的是语法级折叠(比如函数、类),设成 "indent" 或 "auto" 都不会让连续空行自动收起来。这不是配置没生效,而是它压根不负责这事——空行折叠是另一个机制。
真正管空行折叠的是 "editor.showFoldingControls" 的联动行为 + 手动触发,但默认连折叠控件都不显示。必须先打开折叠控件,再用快捷键手动折叠选中的空行区域。
-
"editor.showFoldingControls"设为"always",才能在行号旁看到折叠箭头 - 空行本身没有语法节点,所以无法“自动”折叠;只能选中若干空行(比如 3 行空行),按
Ctrl+Shift+[(Windows/Linux)或Cmd+Shift+[(macOS)手动折叠 - 折叠后显示为一条带省略号的浅灰横条,鼠标悬停提示「Folded Lines」
想让连续空行「默认收起」?得用扩展 Auto Fold
VSCode 内置能力做不到启动即折叠空行,必须依赖扩展。目前稳定可用的是 Auto Fold(作者:Aidan W.)——它不是靠修改折叠策略,而是在编辑器加载后扫描并自动执行折叠命令。
- 安装后默认只折叠空行和注释块,行为可配:
"auto-fold.startup"开启启动折叠,"auto-fold.rules"加自定义正则 - 注意:它对大文件(>5000 行)可能卡顿,因为每次打开都遍历所有行判断是否为空
- 如果同时开了其他折叠扩展(如
indent-rainbow或旧版Fold Plus),可能冲突,导致折叠箭头错位或失效 - 配置示例(加到
settings.json):"auto-fold.rules": [ { "begin": "^\s*$", "end": "^\s*$" } ]——匹配首尾都是空白符的连续行
editor.foldingHighlight 关掉能减少视觉干扰
启用折叠后,VSCode 默认会给被折叠区域上下各加一条淡色横线(folding highlight),本意是标出边界,但空行折叠后这条线常显得多余,尤其在深色主题下容易误判为分隔线。
- 设
"editor.foldingHighlight"为false可彻底隐藏它 - 这个设置不影响折叠功能,只改视觉反馈;关掉后折叠区域更干净,但第一次看可能不习惯边界在哪
- 如果你用的是自定义主题(如
One Dark Pro),还要检查主题是否覆盖了该设置——有些主题会强制开启高亮
折叠空行后,Ctrl+F 搜索仍能命中隐藏内容
这点容易误解:空行被折叠 ≠ 被删除或跳过。VSCode 的搜索(包括 Ctrl+F 和 Ctrl+Shift+F)完全基于原始文本,折叠纯属 UI 层渲染行为。
- 即使 10 行空行全被收成一条横条,搜
(两个换行符)依然能定位到原位置 - 但光标无法直接跳进折叠区域内部——你得先展开,再操作
- Git diff、格式化工具(如
Prettier)、linter(如ESLint)也完全无视折叠状态,它们读的永远是未折叠的源码
空行折叠本质是“眼不见”,不是“不存在”。真要压缩体积,得靠代码规范或构建时处理,编辑器层面只是帮你少滚几下鼠标。











