Sublime Text启动时cargo找不到,根本原因是GUI启动未透传PATH:需验证控制台PATH含.cargo/bin(macOS/Linux)或%USERPROFILE%.cargoin(Windows),设"working_dir":"${project_path:${folder}}",加"shell":true,并配file_regex和Rust语法。

Sublime Text 启动时 cargo 找不到,根本原因是 PATH 没透传
终端里 cargo --version 能跑 ≠ Sublime 里能调用 cargo。GUI 启动的 Sublime 不读 ~/.zshrc 或 PATH 环境变量,进程里 os.environ.get('PATH') 输出通常不含 ~/.cargo/bin(macOS/Linux)或 %USERPROFILE%.cargoin(Windows)。
验证方式:按 Ctrl+` 打开控制台,执行:import os; print(os.environ.get('PATH'))
若输出里没有对应路径,就直接失败。
- macOS/Linux:把
export PATH="$HOME/.cargo/bin:$PATH"加进~/.zshrc,再执行source ~/.zshrc;更可靠的是从终端启动:subl . - Windows:把
%USERPROFILE%.cargoin加入「系统环境变量」(不是用户变量),然后右键任务栏 Sublime 图标 → 退出,再重开 - 兜底方案:Build System 中加
"shell": true,让命令走 shell 启动,可继承完整 PATH
working_dir 必须指向 Cargo.toml 所在目录,否则 cargo run 直接报错
cargo run 只在含 Cargo.toml 的目录下有效。Sublime 默认 ${file_path} 是当前文件所在路径(比如打开 src/main.rs 时是 src/),但 cargo 不认这个。
正确写法是:"working_dir": "${project_path:${folder}}"
而不是:"working_dir": "${file_path}"
- 必须用
File → Open Folder加载整个项目文件夹(含Cargo.toml),别双击单个.rs文件打开 - 右键标签页 →
Reveal in Side Bar,确认左侧边栏顶部显示的是项目根目录(有Cargo.toml的那个文件夹) - 如果没开项目,
${project_path}为空,${folder}会 fallback 到当前文件所在文件夹——仍可能错
file_regex 不配,错误信息就是纯文本,没法双击跳转
构建失败后,如果错误行只是静态文字、双击不能跳到对应文件和行号,基本就是 file_regex 没设或格式不匹配。
rustc/cargo 错误典型格式是:src/main.rs:2:5: error[E0308]: mismatched types
对应正则应为:"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$"
- 注意反斜杠要双写(JSON 字符串内),
\s*不能写成s* - 漏掉这行,所有错误都变成不可操作的日志,失去调试意义
- 该正则同时兼容
src/main.rs:2:5:和src/main.rs:2:两种常见格式
右下角语法必须手动设为 Rust,否则构建系统压根不触发
Sublime 不会自动识别 .rs 文件,打开默认是 Plain Text。状态栏显示 Plain Text 就意味着语法 scope 是 text.plain,而构建系统、LSP、高亮全依赖 source.rust 这个 selector。
- 打开任意
.rs文件,点右下角状态栏(显示Plain Text的地方),手动选Rust - 如果菜单里没有
Rust,说明插件没加载:用 Package Control 安装Rust(by rust-lang),**不是**RustEnhanced;二者共存会冲突,导致状态栏卡死 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切
Cargo.toml 文件本身也要高亮和识别,否则 rust-analyzer 读不到依赖。得单独装 TOML 插件(推荐 sublimelsp 维护版),且安装后必须重启 Sublime,否则 source.toml scope 不注册,Cargo.toml 仍是白底黑字。











