Sublime Text 本身不提供一键生成项目结构树功能,需借助系统命令(如tree或dir)配合自定义构建系统实现:macOS/Linux用tree命令加排除规则和层级限制,Windows推荐dir /s或安装Git for Windows获取tree,构建系统中配置cmd并注意$filePath指向项目根目录。

Sublime Text 本身不提供「一键生成项目结构树」功能,也没有内置命令导出目录文本。所谓“一键”,实际是靠外部命令 + 自定义构建系统或插件协同完成的。
用 tree 命令 + 构建系统生成结构树(推荐 macOS/Linux)
最轻量、最可控的方式是调用系统 tree 命令,配合 Sublime 的构建系统把它输出到新标签页。
- 确保已安装
tree:macOS 上用brew install tree,Linux 一般自带或用apt install tree - 菜单 →
Tools→Build System→New Build System…,粘贴以下内容:
{
"cmd": ["tree", "-I", "node_modules|.git|.DS_Store|__pycache__", "-L", "4", "$file_path"],
"selector": "source",
"working_dir": "$file_path",
"target": "exec"
}
-
-I后填要排除的目录(正则不支持,用竖线分隔);-L 4控制层级深度,避免爆炸式输出 - 保存为
Tree.sublime-build,然后在任意项目根目录下打开一个文件,按Ctrl+B(Windows/Linux)或Cmd+B(macOS)即可生成结构树 - 注意:
$file_path是当前文件所在目录,不是项目根——所以务必先在项目根目录下的某个文件中打开编辑器
Windows 用户怎么搞?别硬套 tree,用 dir /s 更稳
Windows 原生没 tree 命令(Win10 1809+ 才有),但 dir /s 全局可用,只是格式难看。可加点处理让它更实用:
- 新建构建系统,
cmd改成:
{
"cmd": ["cmd", "/c", "dir", "$file_path", "/s", "/b", "|", "findstr", "/v", "\\[^\\]*$"],
"selector": "source",
"working_dir": "$file_path",
"target": "exec"
}
-
/b输出简洁路径,findstr /v "\\[^\\]*$"去掉末尾的空行和冗余提示(实际效果有限,但比纯dir /s可读) - 如果追求真正对齐缩进,建议装 Git for Windows,它带
tree,路径通常是"C:\Program Files\Git\usr\bin\tree.exe",构建系统里写死该路径更可靠 - 别信网上那些用 PowerShell 的构建系统——Sublime 对
PowerShell.exe -Command的参数转义极不友好,容易卡死或无输出
为什么不用插件(如 FileDiffs、SideBarEnhancements)?
很多插件号称“生成目录树”,但实际只是侧边栏视觉展开,或把文件列表复制进当前编辑器——它们不递归、不支持排除规则、不保留缩进层级,本质不是结构树。
-
SideBarEnhancements的Copy Paths只给扁平路径列表,没有父子关系表达 -
FileDiffs或ProjectManager类插件压根不处理目录结构导出 - 真要插件方案,得用
Terminal插件 + 手动输tree,反而多一步,还不能直接进 Sublime 编辑 - 构建系统方式生成的内容是只读文本,可复制、搜索、存档,符合“导出”本意;插件输出往往不可编辑或自动刷新,干扰工作流
导出后想保存为文件?别手动复制,用 build 结果重定向
构建系统默认输出到面板,想直接落地为 tree.txt 文件,得绕过 Sublime 的 exec target 限制:
- 修改构建系统
cmd,例如 Linux/macOS:
"cmd": ["sh", "-c", "tree -I 'node_modules|.git' -L 3 '$file_path' > '$file_path/tree.txt' && echo '✅ Saved to tree.txt'"]
- 注意单引号包裹路径变量,防止空格出错;
&& echo是为了在面板里看到成功提示 - Windows 同理,用
cmd /c+>重定向,但需确保目标目录可写(UAC 或 OneDrive 同步文件夹可能拒绝写入) - 这个操作不会自动打开文件——你得自己用
Ctrl+P输入tree.txt打开它
真正的坑不在命令怎么写,而在于:**你永远没法靠 Sublime 自身判断“项目根目录”在哪**。它没有 VS Code 那样的 workspace 概念,$file_path 就是当前文件位置。选错文件,树就从子目录开始,漏掉大半结构——动手前,先确认你打开的是 package.json 或 README.md 这类典型根文件。

















