ctrl + . 折叠光标所在语法节点,无需选中代码;光标须位于 function/if/{} 等有明确起止边界的结构内才生效,纯表达式行或空行无效。

Ctrl + . 折叠光标所在代码块,不是“选中才生效”
很多人误以为必须先选中一段代码才能折叠,其实 Ctrl + .(Windows/Linux)或 Cmd + .(macOS)默认作用于光标所在语法节点——比如光标停在 function 关键字后、if 语句大括号内、或 JSX 标签内部任意位置,按一次就折叠整个结构体。这在读源码时特别实用:快速收起不关心的 handler 实现、隐藏冗长的配置对象、跳过第三方库的 polyfill 补丁。
容易踩的坑:
- 光标落在纯表达式行(如
return true;)或空行上,Ctrl + .无响应——它只识别有明确起止边界({}、if/else、/* */)的块 - JSX 元素默认不折叠,需在
Settings > Editor > General > Code Folding中勾选XML tag contents - TS 类型定义(如
type Foo = ...)要展开折叠,得额外勾选TypeScript interfaces and type aliases
Ctrl + Shift + NumPad + 展开全部,但嵌套深时得连按两次
读大型框架源码(比如 React、Vue 的核心模块)时,常遇到 4–5 层嵌套的 useEffect + useState + return 结构。Ctrl + Shift + NumPad + 不是一次性全展开,而是逐层释放:第一次展开到顶层函数体,第二次才把内部 if 和 for 块展开。笔记本用户若无数字小键盘,可用 Ctrl + Shift + +(英文输入法下主键盘上方的加号),但注意别按成 = 键(部分键盘布局会映射错误)。
常见失效原因:
- 快捷键被系统级功能占用(如 macOS 的 Mission Control),可进
Settings > Keymap检查冲突 - 当前编辑器里根本没有折叠状态(比如刚打开一个纯 JSON 文件),此时按键无反馈
- 文件用了 UTF-8 with BOM 编码,导致注释解析失败,
// region类折叠不生效
// region 注释手动划定阅读焦点,region 后必须跟空格
源码里常混杂调试日志、兼容性补丁、多版本逻辑分支——这些没法靠语法自动折叠。// region 是最可靠的手动锚点:// region DOM patch logic 和 // endregion 之间的所有内容(含空行、注释、跨函数调用)都会被当做一个折叠单元。HTML 和 CSS 同样支持 <!-- region --> 和 <!-- endregion -->。
关键细节:
-
//region(紧贴)或// region:(冒号结尾)WebStorm 都不识别——必须是// region(冒号前带空格) - 嵌套
region有效,但若外层region跨越了多个函数定义,WebStorm 可能拒绝折叠(截至 2026 年 6 月) - Vue SFC 的
<style scoped></style>区块内,/* region */有时被预处理器拦截,建议改用<!-- region -->替代
折叠状态会保存,重开文件仍维持上次展开程度
你以为关掉再重开文件就“干净展开”了?不会。WebStorm 默认持久化每个文件的折叠状态。读源码中途临时收起某段逻辑,下次打开依然保持收起——这在追踪异步链路时容易漏看被折叠的 catch 分支或 finally 清理逻辑。
真正清空折叠状态的方法只有两个:
- 进
Settings > Editor > General > Code Folding,取消所有勾选项,点Apply→ 所有折叠标记消失 - 执行
File > Invalidate Caches and Restart,强制重置缓存(包括折叠状态)
别依赖 Ctrl + Shift + + 多按几次来“彻底展开”,它只操作当前已存在的折叠标记,而不会清除历史记录。











