sublime text 配置 rust 的核心是确保 path 包含 .cargo/bin、working_dir 指向项目根目录、语法设为 rust、rust-analyzer 用绝对路径启动;gui 启动不继承 shell 环境变量,需从终端启动或修改系统环境变量。

Sublime Text 本身不编译 Rust,它只调用 cargo 或 rustc;配置失败的根源几乎总是:Sublime 进程里根本找不到这些命令,或者工作目录不对——不是插件没装、也不是语法高亮错了,而是 PATH 没继承、working_dir 指向了单个 .rs 文件夹而非项目根。
验证 cargo 在 Sublime 控制台是否真可用
终端里能跑 cargo --version ≠ Sublime 里能调用。GUI 启动的 Sublime 不加载你的 ~/.zshrc 或系统环境变量(Windows 同理),它用自己的 PATH 启动。
- 按
Ctrl+`打开 Sublime 控制台,执行:import os; print(os.environ.get('PATH')) - 确认输出中包含
.cargo/bin路径:- macOS/Linux:
/Users/xxx/.cargo/bin或/home/xxx/.cargo/bin - Windows:
C:Usersxxx.cargoin
- macOS/Linux:
- 如果没出现,别信“我加过了”,必须重做:
- macOS/Linux:把
export PATH="$HOME/.cargo/bin:$PATH"加进~/.zshrc,再执行source ~/.zshrc;但更可靠的是从终端启动:subl . - Windows:把
%USERPROFILE%.cargoin加进「系统环境变量」(不是用户变量),然后彻底退出 Sublime(任务栏右键 → 退出),再重开
- macOS/Linux:把
构建系统必须配全三个关键字段
网上抄的 .sublime-build 常漏掉 working_dir 或 file_regex,导致 cargo run 报 no Cargo.toml file found,或错误信息无法双击跳转。
-
"shell_cmd": "cargo run"—— 必须用shell_cmd,不是cmd;前者走 shell,能复用 PATH 和别名;后者直调进程,在 Windows 上路径含空格时大概率崩 -
"working_dir": "${project_path:${folder}}"—— 这是核心。Sublime 默认用${file_path}(比如打开src/main.rs就是src/目录),但cargo必须在含Cargo.toml的目录下运行,否则直接失败 -
"file_regex": "^(.+):([0-9]+):([0-9]+):\s*(.*)$"—— 注意反斜杠要双写(JSON 字符串内);漏掉这行,所有错误都是纯文本,没法双击跳到出错行
右下角状态栏必须显示 Rust,不是 Plain Text
Sublime 全靠这个标识匹配 source.rust selector,语法高亮、构建系统触发、LSP 补全都依赖它。不手动选,就全挂。
- 打开任意
.rs文件,点右下角状态栏(默认显示Plain Text的地方),手动选Rust - 如果列表里没有
Rust,说明插件没加载:- 用 Package Control 安装
Rust(by rust-lang),不是RustEnhanced;二者共存会冲突,导致状态栏卡死在Plain Text - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切
- 用 Package Control 安装
- 别信“自动识别”——Sublime 不会猜,
.rs文件默认就是Plain Text,不手动选,selector 就不匹配,构建系统根本不会触发
rust-analyzer 启动失败?别用 cargo install
2026 年起 cargo install rust-analyzer 已废弃,rustup component add rust-analyzer 在 macOS/Linux 上常静默失败(尤其 Apple Silicon)。LSP 插件报 client not started 或 server crashed,基本就是没找到可执行文件。
- 去 GitHub releases 下载对应平台的二进制:
- macOS ARM:找
rust-analyzer-aarch64-apple-darwin - Linux x86_64:找
rust-analyzer-x86_64-unknown-linux-gnu - Windows:找带
.exe后缀的版本
- macOS ARM:找
- 解压后放到固定路径:
- macOS/Linux:
/usr/local/bin/rust-analyzer - Windows:
C: ools ust-analyzer.exe
- macOS/Linux:
- 确保该路径已加入系统 PATH,并在 Sublime 控制台验证:
import os; print(os.environ.get('PATH')) - LSP 配置中
"command"必须写绝对路径:["/usr/local/bin/rust-analyzer"],不能只写["rust-analyzer"]
最容易被忽略的其实是 working_dir 和 PATH 验证这两步——很多人改完环境变量只重启窗口,不彻底退出 Sublime;也有人建了项目却只双击打开单个 .rs 文件,没用 File → Open Folder 加载整个文件夹,导致 ${project_path} 为空,cargo 仍在错误目录执行。











