ctrl+shift+[ 折叠失败主因是光标未置于 function/if/{ 等语法起始行,或语言模式错误、foldingstrategy 不匹配;需验证 scope 名含 meta.function.js,python 须设 indentation,jsx 等需对应插件支持。

Ctrl+Shift+[ 折不了 function?先看光标和作用域
这个快捷键只对 function 声明行、const fn = () => { 行、{ 开头的块级结构生效,不是“选中就折”。光标停在函数体内部某行(比如 console.log())、空行、注释里,或者右下角显示 Plain Text,都会静默失败。
验证是否识别成功:光标停在 function foo() { 那行,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name,状态栏若含 meta.function.js 或 meta.block.js,说明可折叠;若只有 source.js,说明语法包没加载或被插件覆盖。
- 确保右下角是
JavaScript(不是JavaScript (Babel)或Vue Component,这些第三方语法常缺折叠规则) - 单语句箭头函数如
const x = () => 1不会折叠——没成对{},无 scope 边界 - 对象方法写法
obj: { method() {} }中的method()行默认不触发折叠,需靠{行来折整个对象块
想只折函数,不碰 if/for?用 fold_by_level 试数字 3
Ctrl+K, Ctrl+0 是全局收起,会把顶层 if、for、export 全干掉,不适合结构审查。fold_by_level 才是精准控制的关键:它只匹配指定嵌套深度的 meta.function.js,跳过同层的其他块。
操作步骤:Ctrl+Shift+P → 输入 fold_by_level → 回车 → 依次试 3、2、4(JS 文件通常从 3 开始生效)。
- 输错数字不会报错,只是没反应,换一个再试
- 装饰器(如
@debounce)跨行写在function上方,会导致meta.function丢失,加空行可修复 - 如果
fold_by_level 3没反应,先确认Developer: Show Scope Name输出里有meta.function.js,否则命令无效
JSON 配置、大段注释怎么临时收起来?手动选区最稳
JS 文件里混写的 JSON 对象、多行注释、或一大段 mock 数据,默认不被语法折叠规则覆盖。这时候别硬调 fold_by_level,直接鼠标拖选 + 快捷键:
- 选中任意连续多行(哪怕全是
//注释或{...}JSON) - 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 侧边栏立刻出现独立小箭头,点击即可展开/收起
这种折叠只存在当前会话,关文件即消失,但胜在 100% 可控、不依赖语法定义、不改设置、不装插件。
region 注释能用,但格式必须严格
// region 和 // endregion 不是开箱即用,得满足三个条件:语法已切为 JavaScript、用户设置启用 "fold_comments": true、注释独占一行且无前导空格。
正确写法:
// region utils
function helper() {}
// endregion
错误写法:
-
// region utils(前面有空格) -
// region utils // desc(同一行有其他内容) -
//region utils(region前少空格) - 用了
# region(这是 Python 的写法,JS 不认)
如果写了没反应,先用 Developer: Show Scope Name 看光标所在行是否含 comment.line.double-slash.js ——没有就说明注释根本没被识别为 comment scope。
真正容易被忽略的是折叠状态无法保存:每次重开 JS 文件,所有手动或自动折叠都会还原展开。Sublime 官方至今没提供 fold_on_open 这类配置,别指望重启后还保持收起状态。











