<p>Sublime Text 原生不支持 // region 折叠,因折叠依赖语法文件中的 foldingStartMarker 和 foldingStopMarker;需确保顶格书写、配对出现、语言正确(如 Python 用 # region)、右下角非 Plain Text,并配置 "fold_comments": true 与 "fold_by_level": true。</p>

Sublime Text 原生不支持 // region 或 #region 这类折叠标记,直接写进去不会触发折叠——必须手动配置语法定义或启用特定机制,否则纯属无效注释。
为什么 // region 写了也不折叠?
因为 Sublime 的折叠逻辑完全依赖当前语言的 .sublime-syntax 文件中是否定义了 foldingStartMarker 和 foldingStopMarker。Python、JavaScript 等默认包虽预留了注释折叠入口,但对 // region 的匹配有硬性限制:
- 必须顶格书写(行首不能有空格或 Tab)
- 必须配对出现(
// region和// endregion一一对应) - 默认 Python 语法只认
# region,JS 默认只认/* region */,// region在 JS 中甚至不是合法注释 - 若右下角显示
Plain Text,整个折叠系统不启动,标记再标准也无效
启用 #region 折叠的最小可行配置
不用改语法文件,靠用户级设置 + 语法特异性启用即可。以 Python 为例:
- 点击右下角语言名 → 选择
Python(确保不是Python Improved或其他插件语法) - 菜单栏
Preferences → Settings – Syntax Specific - 在右侧用户设置中加入:
{
"fold_comments": true,
"fold_by_level": true
}
保存后,以下写法即可折叠:
# region 数据处理逻辑
def clean_data(x):
return x.strip().lower()
# endregion
注意:fold_comments 是开关,fold_by_level 让缩进层级参与折叠判断(避免单行 # region 被忽略);两者缺一不可。
JSON/HTML/Markdown 怎么加 <!-- fold -->?
这些语言原生不支持注释折叠,但可通过语法特异性配置“骗过”折叠引擎:
- 打开一个
.json文件 →Preferences → Settings – Syntax Specific - 加入:
{
"fold_comments": true,
"comment_string": "//"
}
然后在 JSON 里这样写(虽不符合 JSON 规范,但仅用于视觉折叠):
// <!-- fold -->
{
"config": { "timeout": 5000 },
"flags": ["debug", "verbose"]
}
// <!-- endfold -->关键点:comment_string 告诉 Sublime “把 // 当作注释来识别”,fold_comments 才会扫描它;HTML 和 Markdown 同理,但需对应设为 <!--。
容易被忽略的三个失效点
即使配置全对,折叠仍可能静默失败:
-
"fold_enable": false出现在任意配置层(全局、语法特异、插件注入),整个折叠功能彻底关闭——检查Preferences → Settings和插件文档 - 光标不在
# region行上时,Ctrl+Shift+[不响应;必须把光标停在该行才能触发 - 某些插件(如旧版
BracketHighlighter)会在启动时强制覆盖fold_enable,临时禁用插件再试是最快验证方式
真正起作用的从来不是标记本身,而是 Sublime 是否在那一瞬间认可了它的语法合法性——没报错不等于被识别。

















