Ctrl+Shift+[是唯一可靠折叠函数的方式,但光标必须停在函数定义行(如def func():或function foo(){),而非函数体内;停在函数体中间、空行或注释中则无响应。

Ctrl+Shift+[ 是唯一可靠方式,但光标必须停在函数定义行
不是随便点进函数体里按就能折,Sublime 的 Ctrl+Shift+[ 只响应「可折叠结构的起始行」。Python 里得停在 def func(): 那行,JavaScript 得停在 function foo() { 或 const bar = () => { 行,类方法同理。停在函数体中间、空行或注释里,Ctrl+Shift+[ 直接没反应——这不是 bug,是设计逻辑。
常见误操作:
- 光标放在 if 块第一行,结果只折了 if,没折外层函数
- 文件混用 Tab 和 Space 缩进,def 行被识别为普通文本,无法触发折叠
- 右下角状态栏显示 Plain Text,说明语法未识别,所有基于作用域的折叠都失效
想批量折所有函数?别用 Ctrl+K, Ctrl+0,它会连顶层注释和 if 都一起收
Ctrl+K, Ctrl+0 折的是「所有顶层可折叠结构」,不是专为函数设计。Python 文件里它会把 class、模块级 if、__all__ = []、甚至 docstring 块全折进去,干扰函数签名浏览。
真正只折函数的路子只有两条:
- fold_by_level 命令:按 Ctrl+Shift+P → 输入 fold_by_level → 回车 → 试数字 2(Python)或 3(JS),输错无提示,没反应就换下一个
- 正则选中 + Ctrl+Shift+[:用 Ctrl+F → 正则模式 → 输入 ^def\s|^function\s → Find All → 全选所有匹配行 → 再按 Ctrl+Shift+[。这法子不依赖语法识别,纯文本匹配,但得确保正则没误抓注释里的 def
侧边栏三角图标不显示?不是功能坏了,是设置没开
左侧边栏的折叠按钮默认不常驻,即使快捷键有效也看不到。必须在用户设置(Preferences → Settings 右侧)里显式加这两行:"fold_buttons": true"fade_fold_buttons": false
注意:
- 这些按钮只对语法识别出的结构生成(比如 def、class、{),纯缩进块(如无大括号的 Python 函数体)不会出按钮
- 如果设置了仍不显示,先检查右下角是不是 Plain Text 或未知语法
- fade_fold_buttons 默认为 true,图标只悬停才出现,设成 false 才能一直看见
折叠状态不会保存,重启 Sublime 就全展开
Sublime 没有 "fold_on_open": true 这类配置项,官方至今没提供跨会话保存折叠状态的功能。你手动折好的函数、类、块,关掉再打开文件,一律恢复展开。
目前唯一能“模拟”持久化的办法:
- 安装插件 AutoFold(需额外配置)
- 或用 fold_selection 手动选中关键区域再折——这种临时折叠有时比语法折叠更稳定,但每次重开都得重来
别指望靠设置解决这个问题,这是 Sublime 的已知限制,不是你配错了什么。

















