javascript、typescript、python、json、html、css等主流语言默认支持代码折叠,基于语法结构(如函数、类、{}、[])实现;python依赖缩进,json仅折叠对象和数组,html中script/style内部按对应语言规则折叠。

VSCode 默认支持代码折叠,但很多语言需要对应扩展或配置才能正确识别折叠区域;原生不支持自定义折叠标记(如 // #region)的语言需手动启用。
哪些语言默认能用代码折叠?
JavaScript、TypeScript、Python、JSON、HTML、CSS 等主流语言开箱即用,折叠逻辑基于语法结构(如函数、类、块级作用域)。但注意:
- Python 依赖缩进,
if/for块可折叠,但单行语句(如if x: print(1))不会生成折叠控件 - JSON 只对对象
{}和数组[]折叠,键名本身不可单独折叠 - HTML 中
<script></script>和<style></style>内部按 JS/CSS 规则折叠,不是整个标签块一键收起
如何启用 // #region 和 // #endregion 折叠?
这是手动标记折叠区最常用的方式,但 VSCode 默认只在部分语言(如 TypeScript)中生效。要全局启用:
- 打开设置(
Ctrl+,或Cmd+,),搜索foldingStrategy - 将
editor.foldingStrategy改为indentation或保持默认auto - 关键一步:在
settings.json中添加语言专属配置,例如 Python:
"python.editor.foldingStrategy": "indentation",
"[python]": {
"editor.foldingStrategy": "indentation"
}
之后在代码中写:
// #region 数据处理
def clean_data():
...
// #endregion
就能折叠——但注意:Python 本身不认 #region 注释,这只是 VSCode 的视觉折叠,不影响运行。
折叠失效的常见原因和修复
光标放在可折叠行却没出现 ▶ 或 ▼ 图标?大概率是以下之一:
-
editor.foldEnable被设为false(检查设置里是否误关) - 当前文件语言模式错误:右下角显示的是
Plain Text而非Python,点击切换 - 文件过大(超 5000 行),VSCode 自动禁用折叠以保响应速度;可在设置中调高
editor.foldingMaximumRegionLength - 使用了不兼容的插件,比如某些旧版 Prettier 扩展会干扰折叠渲染,可尝试禁用后测试
折叠功能看似简单,但真正稳定可用,得看语言配置、插件协同和编辑器参数是否对齐——尤其混合语言文件(如 Markdown 里的代码块、Vue 单文件组件)最容易掉坑里。











