VS Code折叠功能需确认editor.folding启用、光标位置正确、文件已保存且语言模式匹配;#region格式须严格;折叠状态默认不保存,依赖扩展或设置showFoldingControls为always。

折叠功能没开关?先确认 editor.folding 是否启用
VS Code 默认开启折叠,但工作区或用户设置里可能被关掉。按 Cmd + ,(macOS)或 Ctrl + ,(Windows/Linux)打开设置,搜索 folding,检查 Editor > Folding: Enabled 是否勾选。如果没找到这个选项,说明它已被覆盖——直接在 settings.json 里加一行:"editor.folding": true。
Ctrl+Shift+[ 没反应?光标位置和语言模式是关键
这个快捷键只对「光标所在行向上最近的语法起点」生效,不是全局命令。常见失效原因:
- 光标停在空行、单行注释末尾、字符串内部,或
def/function行的下一行 - 右下角语言模式显示
Plain Text,而非Python、JavaScript等——点击切换 - 文件未保存:临时未保存文件常不触发语法折叠
- Python 用户额外注意:
python.foldingStrategy若设为"none"或"indentation",def行可能不被识别为折叠起点,应设为"language-defined"
想手动划折叠区?#region 格式错一个字符就失效
这不是普通注释,是语言扩展解析的特殊标记,必须严格匹配:
- JS/TS 写成
// #region API config,不能用/* #region */ - Python 必须用
# #region utils(开头是#,不是//) -
#region和#endregion必须独占一行,前面只能有空白符,大小写敏感,#region后必须跟空格 - 漏写
#endregion不报错,但该区域之后所有内容都无法折叠(包括后续合法的#region)
折叠状态每次打开都重置?这是默认行为,不是 bug
VS Code 默认不保存折叠状态。即使你调了 editor.restoreViewState,也只对已打开过、且关闭前有折叠操作的文件有效。真正可靠的方案只有两个:
- 装扩展,比如
Restore Code Folding - 把
editor.showFoldingControls设为"always",至少能一眼看到哪些块可折,不用悬停找图标
最常被忽略的其实是语言模式和保存状态——哪怕快捷键完全正确,文件没保存或状态栏显示 Plain Text,折叠就根本不会启动。


















