Sublime Text 默认不折叠 HTML 注释,因语法包未定义折叠标记;启用 fold_comments: true 无效,需手动选中注释后按 Ctrl+Shift+[ 折叠,或修改 HTML.sublime-syntax 添加 fold 规则。

Sublime Text 默认不把长注释(比如 <!-- -->、/* */、# 块)当可折叠结构处理,除非语法定义明确声明了折叠边界——所以你按 Ctrl+Shift+[ 或 Ctrl+K, Ctrl+0,它大概率没反应。
为什么 fold_comments: true 对 HTML 注释无效
这个设置只在语言语法包里明确定义了 comment.block 或 comment.line 作用域,并且配置了 foldingStartMarker 时才生效。HTML 语法包把 <!-- --> 归为 comment.block.html,但原生和多数插件都没补全折叠规则——高亮有了,折叠没配。Python/JS 文件里 #、//、/* */ 能折,是因为它们的语法定义里写了折叠起止标记;HTML 没写,就真不折。
手动选中 + fold_selection 是最稳解法
不依赖语法、不改配置、不装插件,适合临时清理大量说明性注释:
- 按
Ctrl+F打开搜索,启用 Regex 模式 - 输入正则:
^[\s]*<!--[\s\S]*?-->[\s]*$(匹配整行 HTML 注释,含前后空格) - 勾选
Whole Word和Wrap Around,点Find All→ 全部高亮 - 按
Ctrl+Shift+L将每个匹配转为独立光标,用↑/↓微调,确保光标只落在注释行(避开空行或紧邻的<div>) - 最后按
Ctrl+Shift+[—— 此时触发的是fold_selection命令,侧边栏会出现独立小箭头
⚠️ 注意:Ctrl+K, Ctrl+J(unfold_all)不会影响这种手动折叠块,必须点箭头或运行 unfold_selection。
想让 <!-- --> 像 <div> 一样自动折叠?改语法文件
这是长期方案,但门槛高、易被覆盖:
- 路径必须是
Packages/User/HTML.sublime-syntax(不能放错位置) - 在
contexts:下添加带fold: true的正则块,例如匹配<!--开头到-->结尾的完整范围 - 要加
scope: comment.block.html确保不干扰其他高亮 - 改完后需重启 Sublime;每次更新 HTML 语法包都可能覆盖你的修改
真正容易被忽略的是:折叠注释不是“开个开关就行”的功能,它本质是在修改 Sublime 对“代码结构”的理解边界——一旦动语法,就得同步验证高亮、跳转、查找是否还正常。

















