VSCode代码折叠功能默认启用,支持JavaScript、TypeScript、Python等语言的function、class、if、注释块等语法级折叠;快捷键Ctrl+Shift+[ / ]可折叠/展开当前区域,Ctrl+K Ctrl+0/J可全部折叠/展开;可用#region标记自定义折叠范围;失效常见原因包括语言模式错误、配置禁用或嵌套过深。

VSCode 的代码折叠功能默认就开着,不需要额外安装插件或修改设置——但很多人根本没意识到它已经能用了,或者只依赖鼠标点击小箭头,结果折叠体验很差。
哪些代码块默认支持折叠
VSCode 基于语言语法自动识别可折叠区域,常见支持的语言包括 JavaScript、TypeScript、Python、Java、C#、JSON、CSS 等。关键点是:function、if、for、class、export、import、/* */ 注释块、region 标记(需语言支持)都会被识别。
- Python 中的
def、class、if __name__ == "__main__"都可折叠;但缩进不规范(比如混用空格和 Tab)会导致折叠失效 - JavaScript 中
const obj = { ... }对象字面量默认可折叠,但const arr = [1, 2, 3]数组默认不折叠(除非开启"editor.foldingStrategy": "indentation") - JSON 文件里只有对象
{}和数组[]节点可折叠,键名本身不可折叠
快捷键比鼠标点更高效
靠鼠标悬停找折叠箭头效率低,尤其在长文件中容易误点。记住这三组核心快捷键:
-
Ctrl + Shift + [:折叠当前光标所在区域(比如把一个function整体收起来) -
Ctrl + Shift + ]:展开当前光标所在区域 -
Ctrl + K,然后松手按Ctrl + 0:全部折叠;Ctrl + K→Ctrl + J:全部展开
注意:Ctrl + K Ctrl + 0 折叠的是“所有可折叠层级”,不是整个文件——注释块、函数、类、对象都会被收起,但单行语句、变量声明不会。
自定义折叠范围:用 #region 和 #endregion
当语法级折叠不够用(比如想把一段配置对象、一组测试用例、或几段无关的逻辑说明打包折叠),可以用编辑器原生支持的标记:
//#region API 配置
const API_CONFIG = {
baseUrl: 'https://api.example.com',
timeout: 5000,
};
//#endregion不同语言写法略有差异:
- TypeScript/JavaScript:用
//#region和//#endregion - Python:用
#region和#endregion(前面不加//) - C#:用
#region和#endregion(无//,且必须顶格)
这些标记不会影响运行,纯粹供编辑器识别。但注意:如果 #region 写在缩进内部(比如嵌套在 if 块里),部分语言模式可能无法识别。
折叠失效的常见原因
不是所有“看起来该折叠”的内容都能折,问题通常出在语言模式或配置上:
- 文件没正确识别语言类型:右下角状态栏显示的是
Plain Text而不是JavaScript?点击它手动选对语言模式 - 使用了不被支持的语法扩展(如
.mjs文件未关联到 JavaScript 模式)→ 在设置里搜索files.associations,添加"*.mjs": "javascript" - 禁用了折叠功能:检查设置中
"editor.folding": true是否被设为false - 第三方语言插件覆盖了默认折叠逻辑(比如某些 Vue 插件会干扰
块折叠)→ 临时禁用插件验证是否冲突
最常被忽略的一点:折叠层级深度默认最多 5 层,如果你写了 6 层嵌套的 if 或对象,最内层可能无法单独折叠——这不是 bug,是性能保护,改配置也未必有必要。










