Sublime Text 默认不支持按 import/#include 自动折叠,需借助 CodeFold 插件或 fold_by_level 注释标记实现;前者基于正则匹配导入语句并折叠,后者通过<fold imports>等注释手动定义折叠范围,更可控但侵入代码。

Sublime Text 默认不支持按 import / #include 自动折叠
它只认语法定义的折叠范围(比如函数、类、括号块),import 或 #include 本身不是折叠触发点。想实现“结构简化”,得靠插件或手动配置折叠规则,不能靠开箱即用的设置。
用 CodeFold 插件识别并折叠导入区块
这是目前最直接的方案,它能基于正则匹配特定行(如以 import、from.*import、#include 开头)并自动折叠成一块。
- 安装后默认启用 Python/JS/C++ 等常见语言的导入折叠规则
- 规则存在
Packages/CodeFold/folds.json,可编辑添加自定义模式,比如加一行"^\s*#include\b"支持 C/C++ - 折叠后点击左侧小箭头即可收起整段,但不会影响光标跳转或代码补全
- 注意:如果文件没正确关联语法(比如 .ts 文件被当成 Plain Text),插件不会生效 —— 先确认右下角显示的是
TypeScript而非Plain text
fold_by_level 配合注释标记是更可控的替代方案
当导入语句分散、跨多段,或插件匹配不准时,手动加折叠锚点反而更稳。
- 在导入块前后插入特殊注释,例如:
// <fold imports> import { foo } from 'bar'; import baz from './baz'; // </fold> - 在
Preferences → Settings – Syntax Specific中(确保当前是 JavaScript),加入:"fold_by_level": true, "fold_buttons": true
- Sublime 会把
<fold xxx>和</fold>之间的内容视为一个折叠单元,和语言无关 - 缺点是侵入代码,但胜在确定性高,且不依赖插件更新或语法解析逻辑
别指望 fold_all 或侧边栏按钮自动识别导入块
这些功能只按缩进层级或括号结构折叠,对 import 行完全无感。强行用 Ctrl+K, Ctrl+1(折叠一级)可能把整个文件首部全折掉,包括不该动的常量或文档字符串。
- 真实场景中,混合了
import、const、/** @module */注释的头部,靠自动层级折叠大概率出错 - 如果用了 Prettier 或 ESLint 自动排序导入,顺序可能变,但折叠锚点(注释或插件规则)不受影响
- 插件
CodeFold的正则若写太宽(比如只写^import),可能误折函数体内字符串里的"import"—— 务必加词界符\b和行首锚^
真正麻烦的不是怎么折,而是不同项目用不同导入风格:ESM、CJS、C++ 模块、Qt 的 #include <xxx> 和 "xxx.h" 还要区分系统头与本地头。一个正则很难全覆盖,得根据实际文件类型微调规则,或者接受部分手动标记。









