rust-analyzer二进制必须用绝对路径配置,因Sublime的LSP插件不查PATH;需手动下载对应平台版本、设固定路径、验证权限与scope(source.rust/TOML)对齐。

rust-analyzer 二进制必须用绝对路径
Sublime 的 LSP 插件(如 Lsp-rust-analyzer)启动时不会查 PATH,只认你给的硬编码路径。哪怕 rust-analyzer --version 在终端能跑,写 "command": ["rust-analyzer"] 就会静默失败,日志里只显示 client not started 或 server crashed。
2026 年起 cargo install rust-analyzer 已废弃,rustup component add rust-analyzer 在 macOS/Linux(尤其 Apple Silicon)上常静默失败,所以必须手动下载:
- 去 https://www.php.cn/link/897c1eac194eb7db41acc4c73d04bf9e 下对应平台的最新 release(如
rust-analyzer-aarch64-apple-darwin) - 解压后得到无后缀可执行文件(macOS/Linux)或
rust-analyzer.exe(Windows) - 放进固定路径:
/usr/local/bin/rust-analyzer(macOS/Linux)或C:\tools\rust-analyzer.exe(Windows) - 确认该路径已加入系统环境变量,并在 Sublime 控制台运行
import os; print(os.environ.get('PATH'))验证
然后在 Lsp.sublime-settings 或项目级 .sublime-project 中配:
{
"clients": {
"rust-analyzer": {
"command": ["/usr/local/bin/rust-analyzer"],
"enabled": true,
"initializationOptions": {
"cargo": {"loadOutDirsFromCheck": true},
"procMacro": {"enable": true}
}
}
}
}
PATH 正确 ≠ rust-analyzer 能被找到
即使 os.environ.get('PATH') 输出里有 .cargo/bin,也不代表 rust-analyzer 就在那儿——它从来就不在 .cargo/bin 里。这是最常被混淆的一点:cargo 安装的是 cargo 和 rustc,不是 rust-analyzer。
如果你把 rust-analyzer 放进了 .cargo/bin 并指望它被自动发现,那大概率会失败,因为:
- Sublime 启动时 PATH 隔离严重,GUI 启动(Dock / 开始菜单)几乎不继承 shell 配置
-
Lsp-rust-analyzer插件默认行为是跳过 PATH 查找,只信任你给的command数组 - 某些版本的插件甚至会主动忽略
PATH中的匹配项,强制要求绝对路径
验证 rust-analyzer 是否真在 Sublime 进程里可用
别依赖终端输出。打开 Sublime 控制台(Ctrl+`),逐行执行:
import subprocess subprocess.run(['/usr/local/bin/rust-analyzer', '--version'])
如果报 FileNotFoundError,说明路径错、权限不足,或文件没加可执行位(macOS/Linux 执行 chmod +x /usr/local/bin/rust-analyzer);如果输出版本号,再检查 LSP 配置里的 command 是否完全一致(注意 Windows 要带 .exe 后缀)。
常见漏点:
- macOS 上用了 Rosetta 但下载了 x86_64 版本的二进制 → 换
aarch64-apple-darwin - Windows 路径含空格(如
C:\Program Files\...)→ 改用C:\tools\这类无空格路径 - Sublime 是从 Dock/开始菜单启动的 → 关掉所有窗口,从终端执行
subl启动一次,确认 PATH 加载正常后再切回 GUI 启动
语法高亮和 LSP scope 必须对齐
即使 rust-analyzer 路径全对,如果 .rs 文件右下角显示的是 Plain Text 而不是 Rust,LSP 根本不会激活。Sublime 全靠 source.rust 这个 scope 触发语言服务器。
确保:
- 已安装官方
Rust插件(Package Control → Install Package →Rust),不是RustEnhanced(二者冲突) - 打开 .rs 文件后,手动点击右下角状态栏,选
Rust;若列表里没有,说明插件未加载成功 - 检查
View → Syntax → Rust → Rust是否设为默认,否则每次打开新文件又变回Plain Text
最后,Cargo.toml 文件也得识别为 TOML——否则 rust-analyzer 读不到 workspace 配置。装好 TOML 插件后,重启 Sublime,再打开 Cargo.toml 确认右下角显示 TOML,且 Ctrl+Alt+Shift+P 输出含 source.toml。
路径本身只是第一道门槛;scope 错了,整个链路就断在起点。


















