Sublime Text运行Rust只需四点齐备:PATH含.cargo/bin、working_dir设为"${project_path:${folder}}"、file_regex匹配错误格式、状态栏显示Rust语法;缺一不可,否则Ctrl+B无法正确执行cargo run。

Sublime Text 跑 Rust 不需要装 IDE 级插件堆叠,只要 PATH 对、working_dir 对、file_regex 对、语法识别对——四点齐,Ctrl+B 就能直接 cargo run,5 秒内启动编译反馈。
验证 cargo 是否真能在 Sublime 里调用
终端能跑 cargo --version ≠ Sublime 能调用它。GUI 启动的 Sublime 不读 ~/.zshrc 或 %USERPROFILE%.cargoin,PATH 是隔离的。
- 按
Ctrl+`打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH'))检查输出是否含~/.cargo/bin(Linux/macOS)或%USERPROFILE%.cargoin(Windows) - macOS/Linux:确保
export PATH="$HOME/.cargo/bin:$PATH"已写入你实际用的 shell 配置(如~/.zshrc),并执行过source ~/.zshrc;更稳的方式是终端里运行subl .启动编辑器 - Windows:必须把
%USERPROFILE%.cargoin加进「系统环境变量」(不是用户变量),加完右键任务栏 Sublime 图标 → 「退出」,再重开 - 兜底方案:在 Build System 中加
"shell": true,命令走 shell 启动,可继承完整 PATH
working_dir 必须指向 Cargo.toml 所在目录
cargo run 报 error: no Cargo.toml file found,90% 是因为 working_dir 指向了 src/ 或 target/ 这类子目录,而不是项目根。
- Build System 中写死:
"working_dir": "${project_path:${folder}}"—— 这是唯一可靠写法 - 别用
${file_path}:打开src/main.rs时它解析为src/,cargo 直接失败 - 必须用
File → Open Folder加载整个项目文件夹(含Cargo.toml),不能双击单个.rs文件打开 - 右键标签页 →
Reveal in Side Bar,确认左侧边栏顶部显示的是项目根目录(有Cargo.toml的那个文件夹)
file_regex 不配,错误就只是日志
构建失败后,如果错误行不能双击跳转到对应文件和行号,说明 file_regex 没生效或格式错位。
- rustc/cargo 错误典型格式是:
src/main.rs:2:5: error[E0308]: mismatched types - 对应正则必须写成:
"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$"(注意\s*,JSON 字符串内反斜杠要双写) - 漏掉这行,所有输出都是纯文本,没法定位问题,调试效率断崖下跌
- 别抄网上缺字段的 Build System JSON,至少包含
shell_cmd、working_dir、file_regex三者
右下角状态栏必须显示 Rust,不是 Plain Text
Sublime 全靠这个标识匹配 source.rust selector,语法高亮、LSP、构建系统触发都依赖它。选错就全挂。
- 打开任意
.rs文件,点右下角状态栏(默认显示Plain Text),手动选Rust - 如果列表里没有
Rust,说明插件没加载:用 Package Control 安装Rust(by rust-lang),**不是**RustEnhanced;二者共存会冲突,导致状态栏卡死 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切 - 别信“自动识别”——
.rs文件默认就是Plain Text,不手动选,selector 就不匹配,构建系统根本不会触发
最容易被忽略的是:Sublime 的 PATH 隔离和 ${project_path:${folder}} fallback 行为。很多人以为开了文件夹就万事大吉,其实没显式 Open Folder 时 ${project_path} 为空,${folder} 会退化成当前文件所在目录——仍然可能错。动手前先 Ctrl+` 看一眼 PATH,再右键确认边栏顶部路径,比反复改 JSON 有效得多。


















