sublime text的rust项目工作区依赖严格分离的.sublime-project(需配置)和.sublime-workspace(不可手动编辑);前者必须置于项目根目录、含合法json格式的"folders"数组(如{"path":"."})、修改后须关闭并重新打开项目才生效,否则构建与lsp将静默失效。

Sublime Text 的 Rust 项目工作区不是靠“打开文件夹”就完事的,它依赖两个严格分离的文件:.sublime-project(你该配的)和 .sublime-workspace(你别碰的)。配错一个字段、漏掉一个逗号、或没重启项目,Rust 构建和 LSP 就会静默失效。
为什么 .sublime-workspace 不能手动改
.sublime-workspace 是 Sublime 运行时生成的二进制快照,记录光标位置、折叠状态、面板开关等临时信息。它不是 JSON 配置文件——哪怕你用文本编辑器强行修改,下次启动也会被覆盖,还可能触发 error parsing project 报错。真正起作用的是同名的 .sublime-project 文件,且必须放在项目根目录(即包含 Cargo.toml 的那层)。
.sublime-project 必须含哪些字段
最小可用结构只有三处硬性要求,缺一不可:
-
"folders"是数组,至少含一个对象:{"path": "."}(.表示当前 project 文件所在目录,即项目根) - 所有
path值必须是真实存在的目录,不存在会静默忽略,导致cargo run找不到Cargo.toml - JSON 语法必须合法:不能有尾随逗号、不能用单引号、不能写
//注释——控制台报错只会显示error parsing project,不告诉你哪一行错
示例(直接复制可用):
{
"folders": [
{
"path": "."
}
],
"settings": {
"tab_size": 2,
"rust_syntax_checking_method": "clippy"
}
}
改完 project 文件为啥没反应
Sublime 不监听 .sublime-project 变更,改完必须彻底关闭再重开:
- 执行 Project → Close Project(不是关窗口),再用 Project → Open Project… 选中你的
.sublime-project - 双击
.sublime-project文件是加载项目;双击.sublime-workspace只是恢复上次窗口布局,完全不读 project 配置 - 如果右下角状态栏仍显示
Plain Text,说明.sublime-project没生效,或Rust插件未启用——此时构建系统根本不会触发
多 crate 工作区怎么设
Cargo workspace 和 Sublime 工作区是两回事,但可以共存。不要在 .sublime-project 里塞多个 Cargo.toml 路径,而是让 Cargo 管理 crate 关系,Sublime 只管文件夹:
- 在
Cargo.toml根目录写好[workspace]块,声明members -
.sublime-project的"folders"里只写 workspace 根目录:{"path": "."} - 若需同时打开 backend/frontend 两个独立目录,用相对路径明确区分:
{"path": "backend", "name": "backend"}和{"path": "frontend", "name": "frontend"},避免Ctrl+P搜索冲突
最关键的细节藏在路径解析逻辑里:所有 path 都以 .sublime-project 所在位置为基准,不是以你当前打开的文件或终端位置为准。这点一旦搞反,cargo run 就永远报 no Cargo.toml file found。











