fold_comments: true 对 html 注释无效,因 html 语法未定义折叠边界;需手动正则选中后 fold_selection,或修改 html.sublime-syntax 添加 foldingstartmarker/foldingstopmarker,或用 锚点配合 fold_by_level。

为什么 fold_comments: true 对 HTML 注释无效
这个设置只在语言语法明确定义了 comment.line 或 comment.block 作用域时才生效。HTML 语法(包括原生和主流插件)把 <!-- --> 标记为 comment.block.html,但默认没声明折叠边界——它能高亮,却不会参与折叠计算。你按 Ctrl+K, Ctrl+0 或 Ctrl+Shift+[ 没反应,不是快捷键坏了,是 Sublime 根本没把它当“可折叠结构”处理。
手动正则选中 + fold_selection 是最稳解法
不改配置、不装插件、100% 可控,适合临时清理大量说明性注释。关键是绕过语法识别,让 Sublime 把注释当纯文本选区处理:
- 按
Ctrl+F打开搜索,启用 Regex 模式 - 输入:
^[\s]*<!--[\s\S]*?-->[\s]*$(匹配整行注释,含前后空格和换行) - 勾选
Whole Word和Wrap Around,点Find All - 按
Ctrl+Shift+L将每个匹配转为独立光标 - 用 ↑/↓ 微调光标位置,确保只落在注释行内(避开空行或紧邻的
<div>)<li>最后按 <code>Ctrl+Shift+[—— 此时触发的是fold_selection命令,侧边栏会出现独立小箭头 - 菜单 →
Preferences → Browse Packages…→ 进入Packages/HTML目录 - 复制
HTML.sublime-syntax到Packages/User(避免升级覆盖) - 在
foldingStartMarker下添加:- (?i)^\s*<!-- - 在
foldingStopMarker下添加:- (?i)^\s*--> - 保存后重启 Sublime,或用
Ctrl+Shift+P → Reload Syntax - 在导入块或说明段落前后插入:
<!-- fold imports -->和<!-- endfold --> - 打开当前文件的语法专属设置(
Preferences → Settings – Syntax Specific) - 加入:
"fold_by_level": true和"fold_buttons": true - 保存后,这两行之间的内容就会被识别为一个折叠单元
⚠️ 注意:Ctrl+K, Ctrl+J(unfold_all)不会影响这种手动折叠块,必须点击箭头或运行 unfold_selection。
想让 <!-- --> 像 <div> 一样自动折叠?改 <code>HTML.sublime-syntax
长期方案是补全折叠规则,告诉 Sublime:“从 <!-- 开始,到 --> 结束,就是一个可折叠单元”。操作路径:
改完后 Ctrl+K, Ctrl+0 和 Ctrl+Shift+[ 都能直接响应 <!-- --> 块,但要注意:Vue 单文件组件里的注释仍需额外处理,因为 .vue 文件通常由其他语法包接管,不走原生 HTML 规则。
fold_by_level 配合注释标记更可控,但要写进代码
如果你不想动语法文件,又希望折叠逻辑稳定、跨编辑器兼容,可以用折叠锚点注释。它不依赖语法定义,只要 Sublime 启用了 fold_by_level:
这种写法侵入代码,但胜在确定性高;CodeFold 插件的正则可能误匹配字符串里的 import,而注释锚点不会。
真正容易被忽略的是:所有这些折叠状态都不会跨会话保存。关掉文件再打开,一切恢复展开。如果想保持折叠状态,得靠第三方插件(如 ExpandRegion 或自定义 session 管理),但原生 Sublime 不提供该能力。











