Sublime Text 跑不了 Rust 代码的根本原因是 cargo 和 rust-analyzer 未被正确识别,需同时满足四点:PATH 包含 .cargo/bin、working_dir 指向 Cargo.toml 目录、file_regex 正确配置支持错误跳转、右下角语法手动设为 Rust;任一缺失均导致 Ctrl+B 静默失败或报“No build system”。

Sublime Text 跑不了 Rust 代码,不是它不行,是 cargo 和 rust-analyzer 根本没被它“看见”——PATH 隔离、working_dir 错位、file_regex 缺失、语法未激活,四者任缺其一,Ctrl+B 就静默失败或报 No build system。
验证 cargo 是否真在 Sublime 进程里可用
终端能跑 cargo --version ≠ Sublime 能调用 cargo。GUI 启动的 Sublime 不加载 shell 配置(如 ~/.zshrc),PATH 常被截断为系统默认值。
- 按
Ctrl+`打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH'))确认输出中含~/.cargo/bin(macOS/Linux)或%USERPROFILE%.cargoin(Windows) - macOS/Linux:确保
~/.cargo/bin已写入对应 shell 配置,并执行source ~/.zshrc;更可靠的是从终端启动:subl . - Windows:把
%USERPROFILE%.cargoin加进「系统环境变量」(非用户变量),加完必须右键任务栏图标 →「退出」,再重开 Sublime - 加
"shell": true到 Build System 是最稳兜底方案——它强制走 shell,能继承完整 PATH 和别名
working_dir 必须指向 Cargo.toml 所在目录
cargo run 不会在任意路径下工作,它只认当前目录或父目录里的 Cargo.toml。Sublime 默认的 ${file_path}(比如打开 src/main.rs 时是 src/)直接导致 error: no Cargo.toml file found。
- Build System 中必须写:
"working_dir": "${project_path:${folder}}",不能用${file_path}或留空 - 打开项目务必用
File → Open Folder,加载整个含Cargo.toml的根目录;只双击单个.rs文件,${folder}会为空,${project_path}也 fallback 失败 - 右键标签页 →
Reveal in Side Bar,确认左侧边栏顶部显示的是项目根(含Cargo.toml),不是子目录
file_regex 不配,错误就只是日志,没法跳转
Build 输出里有 src/main.rs:2:5: error[E0308]: mismatched types 没用——不配 file_regex,双击这行不会跳到对应文件和位置,所有错误都变成纯文本。
- 标准正则应为:
"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$"(注意反斜杠要双写,JSON 字符串内) - 漏掉这行,或写成
s*(少了个反斜杠),错误就完全不可操作 - rustc/cargo 错误格式固定,该正则覆盖绝大多数场景;若用 Clippy 等工具,需按其实际输出微调
右下角没显示 Rust,一切构建和 LSP 都白搭
Sublime 全靠右下角状态栏的语法标识(如 Rust)来匹配 source.rust scope,语法高亮、构建系统触发、LSP 补全都依赖它。.rs 文件默认就是 Plain Text,不会自动识别。
- 打开任意
.rs文件,点右下角状态栏,手动选Rust;若菜单里没有,说明插件未加载 - 用 Package Control 安装
Rust(by rust-lang),**不是**RustEnhanced;二者共存会导致状态栏卡死在Plain Text - 装完必须重启 Sublime,否则
source.rustscope 不注册,后续所有功能失效 - Preferences → Settings – Syntax Specific 可设默认语法,避免每次手动切
最容易被忽略的其实是 Cargo.toml 的语法支持——装了 Rust 插件,Cargo.toml 仍是白底黑字,因为 Sublime 自带语法列表不含 TOML,得单独装 TOML 插件并重启,否则 rust-analyzer 读不到依赖项,跳转和补全都断掉。


















