sublime text 无原生一键生成目录树功能,需通过自定义构建系统调用系统 tree 命令实现;适用于 readme 文档,不支持语言符号识别或 markdown 锚点;推荐 macos/linux 下用 brew/apt 安装 tree 并配置 tree.sublime-build,注意 $file_path 指当前文件所在目录,需在项目根目录下打开文件后按 ctrl-b/cmd-b 运行;windows 建议安装 git for windows 获取完整 tree;插件易受 files.exclude 干扰且对 symlink/monorepo 支持差,tree 输出更可靠;结构树需随项目更新手动重生成,ci 中可加时间戳注释。

Sublime Text 本身不提供“一键生成代码结构目录树”的原生功能,所谓“一键”,本质是调用系统 tree 命令 + 自定义构建系统实现的快捷封装。它适合写文档、README 或架构说明,但别指望它能自动识别语言符号或生成 Markdown 锚点目录——那是另一类插件干的事。
用 tree 构建系统导出项目结构(macOS/Linux 推荐)
这是最轻量、最可控的方式:不装插件、不卡顿、输出干净,直接贴进 README 就能用。
- 先确认已安装:
tree— macOS 用brew install tree,Linux 一般自带或运行sudo apt install tree - 菜单 → Tools → Build System → New Build System…,粘贴以下内容并保存为
Tree.sublime-build:
{
"cmd": ["tree", "-I", "node_modules|.git|.DS_Store|__pycache__|dist|build", "-L", "4", "$file_path"],
"working_dir": "$file_path",
"target": "exec"
}
-
-I后填要排除的目录,用竖线|分隔,不支持正则 -
-L 4控制层级深度,避免输出爆炸;--dirsfirst可加在cmd数组里让目录排前面 - 关键点:
$file_path指的是当前打开文件所在目录,不是项目根目录——所以必须先在项目根目录下的某个文件中打开 Sublime(比如package.json或README.md),再按Cmd+B(macOS)或Ctrl+B(Windows/Linux)
Windows 下跑 tree 的实际门槛
Win10 1809+ 系统自带 tree,但默认只输出 ASCII 树形,不带 /F 参数时不会列出文件名;旧系统常报 'tree' is not recognized。
- 推荐方案:安装 Git for Windows(含完整
tree),或用 Chocolatey 运行choco install tree - 替代命令(无需额外安装):
cmd /c "tree /F /A",但不支持-I排除,得靠 PowerShell 脚本后处理 - PowerShell 中可用
Get-ChildItem -Recurse | Group-Object PSParentPath模拟,但格式松散、难读,不如直接上tree - 别信“右键资源管理器 → 在此处打开终端”就万事大吉——VSCode/Sublime 都可能没继承正确的
PATH,建议在终端里先手动执行tree --version确认可用
为什么别依赖插件生成结构树?
像 Project Tree Generator 这类插件看似点一下就出结果,实际在复杂项目里容易翻车。
- 它们默认遵循 VSCode/Sublime 的
files.exclude配置,但这个配置本意是控制“是否显示”,不是定义“项目结构”——你隐藏了dist/,不代表它不该出现在部署文档里 - 遇到符号链接(symlink)、pnpm workspace、Lerna monorepo 时,插件常漏目录或错乱缩进,而
tree -L 3输出可作为黄金标准人工比对 - 生成的 Markdown 格式常把
index.js自动转成[index.js](./index.js),粘到飞书/Notion 里反而多出跳转,纯文本结构更安全 - 真正需要“代码大纲”(函数/类列表)请用
CTags+Ctrl+T,和“文件目录树”是两回事,混用只会增加调试成本
真正容易被忽略的点是:结构树不是一次性的。项目新增模块、删掉测试目录后,记得重新运行构建系统——别让 README 里的树形结构和真实磁盘对不上。另外,tree 输出不含时间戳或哈希,如果用于 CI 文档生成,建议配合脚本自动追加生成时间注释。











