sublime text配置rust环境必须满足三条件:rustc/cargo在sublime控制台可调用、.rs文件语法手动设为rust、rust-analyzer与rustfmt路径用绝对路径显式配置;缺一则补全、构建、格式化等功能静默失效。

rustc 和 cargo 必须在 Sublime 控制台里能直接调用,否则所有功能静默失效——不是插件没装好,是编辑器根本没找到工具链。
Sublime 里 cargo 找不到?别碰插件,先看 PATH
终端里 cargo --version 成功,不等于 Sublime 能调用它。macOS 从 Dock 启动、Windows 没重启 Sublime 时,PATH 几乎只剩 /usr/bin:/bin。
- 在 Sublime 控制台(
Ctrl+`)执行import os; print(os.environ.get('PATH')),确认输出含.cargo/bin - macOS/Linux:检查
~/.zshrc或~/.bashrc是否有export PATH="$HOME/.cargo/bin:$PATH",改完运行source ~/.zshrc,再彻底退出并重启 Sublime - Windows:把
%USERPROFILE%.cargoin加进「系统环境变量」,不是用户变量;加完必须关闭所有 Sublime 进程(任务管理器里杀干净),再重开 - 验证失败?重装
rustup,再跑一遍rustup default stable和cargo --version
右下角显示 Plain Text?语法没认对,后面全白搭
Sublime 不自动把 .rs 文件当 Rust 处理。状态栏不是 Rust,Ctrl+B 就报 “No build system”,LSP 不启动,格式化不触发——这不是 bug,是 selector 匹配机制在起作用。
- 点右下角
Plain Text→ 手动选Rust;如果列表里没有,说明插件没加载成功 - 用 Package Control 安装
Rust(by rust-lang),**不要装RustEnhanced** ——二者共存会冲突,导致高亮错乱、构建失败 - 装完后进
View → Syntax → Rust → Rust,设为默认,避免每次手动切 - 设置里
syntaxes必须是"Packages/Rust/Rust.sublime-syntax",大小写、路径错一个字符都不匹配
rust-analyzer 启动失败?cargo install 已废弃,必须手动下载
LSP 插件不继承 shell 的 PATH,写 "command": ["rust-analyzer"] 基本等于没配。2026 年起 cargo install rust-analyzer 全平台不可靠,rustup component add rust-analyzer 在 macOS 和部分 Linux 上常静默失败。
- 去 rust-lang/rust-analyzer/releases 下载对应平台二进制(如
rust-analyzer-x86_64-unknown-linux-gnu) - 解压得单个无后缀可执行文件,重命名为
rust-analyzer(Linux/macOS)或rust-analyzer.exe(Windows) - 放进
/usr/local/bin/rust-analyzer(Linux/macOS)或%USERPROFILE%in ust-analyzer.exe(Windows) - 终端运行
rust-analyzer --version验证;LSP 设置中"command"必须填绝对路径,不能带~,不能只写命令名
rustfmt 保存不格式化?路径写错就静默失效
Sublime 不展开波浪号(~),也不读 shell 的 PATH。写错路径不会报错,只会“保存后毫无反应”——连控制台都安静。
- 先确认已安装:
cargo install rustfmt(Rust 1.75+ 不再默认附带) - 查真实路径:
which rustfmt(Linux/macOS)或where rustfmt(Windows) - RustEnhanced 设置中填绝对路径:
"rustfmt_path": "/home/xxx/.cargo/bin/rustfmt"或"rustfmt_path": "C:\Users\xxx\.cargo\bin\rustfmt.exe" - 别写
~/.cargo/bin/rustfmt,Sublime 不解析~;也别指望它自动从PATH查找
真正卡住人的从来不是插件怎么装,而是 cargo 在 Sublime 里到底能不能跑、.rs 文件有没有被当成 source.rust、rust-analyzer 的路径是不是绝对且可执行——这三件事没对齐,其他全是空谈。











