Sublime Text配置Rust开发环境需满足四条件:cargo/rustc在Sublime进程PATH中可用、.rs文件右下角手动设为Rust、构建系统配对shell_cmd/working_dir/file_regex、LSP中rust-analyzer用绝对路径并配全initializationOptions;缺一则Ctrl+B静默失败或报“No build system”。

Sublime Text 本身不编译 Rust,所谓“配置 Rust 开发环境”,就是让 cargo 和 rustc 在 Sublime 内部能被调用、文件被识别为 Rust、错误能双击跳转、LSP 补全能响应——缺一环,Ctrl+B 就静默失败或报 No build system。
确认 cargo 和 rustc 在 Sublime 控制台里真能跑
终端里 cargo --version 有输出,不代表 Sublime 能调用它。Sublime 启动时读的是自己的环境变量,和 shell 配置无关。
- 按
Ctrl+`打开 Sublime 控制台,输入:import os; print(os.environ.get('PATH'))确认输出中包含.cargo/bin路径(如/Users/xxx/.cargo/bin或C:\Users\xxx\.cargo\bin) - Windows 用户:必须把
%USERPROFILE%\.cargo\bin加进「系统环境变量」,加完彻底退出 Sublime(不是关窗口),再重开 - macOS/Linux 用户:GUI 启动的 Sublime 不加载
~/.zshrc,推荐从终端执行subl启动;若坚持 Dock 启动,需在~/.zprofile中添加路径并重启登录会话 - 验证方式:控制台里运行
import subprocess; subprocess.run(['cargo', '--version'])
,不报FileNotFoundError才算真正可用
右下角必须显示 Rust,不是 Plain Text
Sublime 全靠这个标识匹配 source.rust 这个 selector,语法高亮、构建系统、LSP 补全全都依赖它。选错就全挂。
- 打开任意
.rs文件,点右下角状态栏(显示Plain Text的地方),手动选Rust - 如果列表里没有
Rust,说明插件没加载:用 Package Control 安装Rust(by rust-lang),不是RustEnhanced;二者共存会冲突,导致状态栏卡死 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切 - 别信“自动识别”——Sublime 不会猜,
.rs文件默认就是Plain Text,不手动选,构建系统根本不会触发
构建系统必须配对 shell_cmd、working_dir 和 file_regex
网上抄的 JSON 常漏关键字段,导致 cargo 找不到 Cargo.toml,或错误信息无法双击跳转。
- 用
"shell_cmd": "cargo run",不是"cmd":前者走系统 shell,能复用 PATH 和别名;后者直调进程,Windows 上空格路径大概率崩 -
"working_dir": "${project_path:${folder}}"必须写:否则cargo在当前文件目录执行,找不到项目根下的Cargo.toml,直接报no Cargo.toml found -
"file_regex": "^(.+?):([0-9]+):([0-9]+):.*$"必须精确匹配 cargo 错误格式,例如src/main.rs:12:5: error: expected `;`;漏掉.*$或多加空格,整行就不匹配 - 若项目是 workspace 或含 crate 名,错误路径可能带前缀,可放宽为
"file_regex": "^([^:]+):([0-9]+):([0-9]+):.*$"
LSP 补全失效?八成是 rust-analyzer 路径或 initializationOptions 漏了
Rust Analyzer 启动失败往往静默退出,连错误提示都不给。LSP 日志里看不到 Loaded workspace,基本等于没跑起来。
-
"command"字段必须是绝对路径:"/home/john/.cargo/bin/rust-analyzer",~不展开,rust-analyzer这种相对写法必然失败 - Windows 用户注意:路径含空格(如
C:\Users\John Doe\.rustup\)会导致启动失败,建议复制到无空格路径,例如%USERPROFILE%\bin\rust-analyzer.exe - 必须放在
initializationOptions里的项:"cargo.loadOutDirsFromCheck": true(否则target/不索引)、"procMacro.enable": true(否则#[derive(Debug)]展不开)、"cargo.runBuildScripts": true(否则build.rs生成代码不可见) -
settings下只能放 LSP 插件参数(如"lsp_format_on_save": true),把procMacro.enable放这儿,rust-analyzer 根本收不到
最易忽略的一点:所有配置都依赖「右下角显示 Rust」这个前提。语法没识别,构建系统不激活,LSP 不加载,rust-analyzer 即使路径正确也压根不会启动——它连文件类型都认不出来。


















