Ctrl+Shift+[ 和 Ctrl+Shift+] 折叠/展开光标所在位置的作用域层级(如函数、if块、对象字面量),依赖语言服务识别,非纯文本折叠;需光标置于有效代码行,且语言模式与 foldingStrategy 配置正确。

Ctrl+Shift+[ 和 Ctrl+Shift+] 折叠/展开的是当前作用域层级,不是“所有子项”
很多人按了 Ctrl+Shift+[ 发现没反应,或者只折了一行——因为这两个快捷键操作的是「光标所在位置的代码块层级」,不是整个文件或任意选中区域。它依赖语言服务对作用域(如函数、if 块、对象字面量)的识别,不是纯文本折叠。
实操建议:
- 把光标放在
function关键字、{或某段缩进代码的任意一行,再按Ctrl+Shift+[,才能折叠该块 - 如果光标在空行或注释里,快捷键通常无效
- JavaScript/TypeScript 中,
const obj = { a: 1, b: 2 }这种对象字面量默认可折叠;但 Python 里靠缩进,VSCode 需开启"editor.foldingStrategy": "indentation"才能用快捷键折缩进块 - 某些语言(如 JSON)默认不提供作用域折叠,只能靠手动创建折叠区域(
//#region///#endregion)
折叠状态不保存?检查 editor.foldingStrategy 和语言模式
关掉文件再打开,之前折好的代码又展开了——这不是 Bug,是 VSCode 默认按语言决定是否记忆折叠状态。比如 TypeScript 文件会记,但 Markdown 或纯文本不会。
实操建议:
- 确认右下角显示的语言模式正确(如不是 “Plain Text”,而是
JavaScript或Python) - 在设置里搜
foldingStrategy,设为"auto"(推荐)或"indentation";设成"auto"时,TS/JS/Python 等有语法支持的语言才启用智能折叠 -
"editor.showFoldingControls": "mouseover"可让折叠控件只在鼠标悬停时出现,避免干扰,但不影响快捷键
想批量展开/折叠全部?别用快捷键,用命令面板
Ctrl+Shift+[ 和 Ctrl+Shift+] 是单点操作,无法一键展开整个文件。强行连按多次容易误触发其他快捷键,且不可靠。
实操建议:
- 按
Ctrl+Shift+P打开命令面板,输入Fold All或Unfold All,回车执行 - 也可以输入
Fold Level 1到Fold Level 5,按嵌套深度折叠(例如只折函数,不折函数内的 if) - 这些命令也支持键盘绑定:在
keybindings.json里加自定义快捷键,比如给editor.foldAll绑定Ctrl+K Ctrl+0
自定义折叠区域://#region 比想象中更实用
当代码没有天然作用域(比如长配置对象、大段注释、临时屏蔽的测试代码),Ctrl+Shift+[ 就完全失效。这时候得主动“划重点”。
实操建议:
- 在 JS/TS/Java/C# 等语言中,用
//#region My Section开头,//#endregion结尾,VSCode 自动识别并允许折叠 - 注意:
// #region(带空格)不生效,必须是//#region - Python 不原生支持,但可通过插件
Python Docstring Generator或修改settings.json添加"python.foldingStrategy": "indentation"配合缩进折叠 - 区域名支持中文,但别用
/或*,否则可能被语法高亮误解析
折叠逻辑依赖语言服务响应速度和配置精度,光背快捷键没用。真正卡住的时候,先看右下角语言标识,再查 foldingStrategy,最后考虑要不要手写 //#region —— 这三步比反复按 Ctrl+Shift+[ 实在得多。


















