Sublime 的 fold_comments 仅支持单行注释自动折叠,对多行注释、docstring、/ /、# region 等无效;需用 fold_selection 手动折叠或修改语法文件实现 region 折叠。

Sublime 默认不折叠注释块,fold_comments 设置仅影响单行注释(#、//),对多行注释或 # region 类结构完全无效;真要折注释,得靠手动选中或改语法文件。
为什么 fold_comments 开了也不折多行注释?
这个设置只触发单行注释的自动折叠逻辑,比如 Python 的 # xxx 或 JS 的 // xxx 行——前提是它们独立成行、没被其他 token 包裹。它对三引号字符串、""" 块、/* ... */、甚至 # region 都无感知。
常见错误现象:
- 在 Python 文件里写
# region utils然后按Ctrl+Shift+[,没反应 - 打开
Preferences → Settings加了"fold_comments": true,但"""docstring"""依然展开着 - JS 里
/* config start */ ... /* config end */无法一键收起
想折任意注释段落?用 fold_selection 最稳
这是唯一不依赖语法定义、100% 可控的方式,适合临时隐藏配置说明、TODO 列表、大段日志样例等。
操作步骤:
- 鼠标拖选或多行选中(
Ctrl+L连续选)目标注释段落 - 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 左侧 gutter 出现独立三角图标,点击即可展开/收起
注意:fold_selection 创建的折叠仅存于当前会话;关闭文件即丢失,重启 Sublime 后只要文件还开着,就还在。
想让 # region 可折叠?必须改 .sublime-syntax
原生不支持,硬加需复制对应语言的语法文件到 Packages/User/,并在 contexts 中添加匹配规则。
以 Python 为例,关键点:
- 匹配起始:正则写
match: '#\s*region\b',后面接push:引入新 context - 匹配结束:另一条 rule 写
match: '#\s*endregion\b',后面加pop: true -
fold: true必须写在具体match规则下,不能只放在顶层 - 正则不支持跨行(
region.*?endregion无效),所以# region和# endregion必须各占一行
改完后需重启 Sublime 或刷新语法(Ctrl+Shift+P → Reload Syntax),且每次升级语言包都可能覆盖你的修改。
折叠状态不会保存,fold_buttons 是视觉辅助而非持久化方案
即使你设置了 "fold_buttons": true 和 "fade_fold_buttons": false,也只是让 gutter 图标常驻可见,并不改变折叠状态的生命周期。
真正容易被忽略的是:所有自动折叠(包括 Ctrl+K, Ctrl+0 折的注释)和手动折叠(fold_selection)都只活在当前窗口会话里。关掉文件,下次再打开,一切从展开开始——没有缓存,不写文件,也不读项目配置。

















