rust-analyzer必须手动下载二进制,因cargo install已失效;需从GitHub releases下载对应平台可执行文件,配置LSP时用绝对路径指定command,并设置procMacro.enable、languageId、syntaxes等initializationOptions,同时确保右下角语法为Rust。

rust-analyzer 必须手动下载,cargo install rust-analyzer 已失效
从 Rust 1.75+ 开始,cargo install rust-analyzer 不再生成真实可执行文件,只放一个 stub,LSP 启动时直接报 spawn ENOENT 或静默无响应。你必须去 github.com/rust-lang/rust-analyzer/releases 下载对应平台的压缩包:
- Linux/macOS:解压后是无后缀的单文件,如
/home/you/.cargo/bin/rust-analyzer - Windows:解压后带
.exe后缀,如C:/Users/you/bin/rust-analyzer.exe - 路径含空格(如
C:\Users\John Doe\)会导致启动失败,建议复制到不含空格路径,例如%USERPROFILE%\bin\rust-analyzer.exe - 终端里能跑
rust-analyzer --version≠ Sublime 能找到它——Sublime 不继承 shell 的PATH,尤其 macOS 从 Dock 启动时PATH几乎只剩/usr/bin:/bin
LSP.sublime-settings 里 command 必须写死绝对路径
打开 Preferences → Package Settings → LSP → Settings,在用户配置中填入完整路径,~ 和相对路径都不展开:
- Linux/macOS 示例:
"command": ["/home/you/bin/rust-analyzer"] - Windows 示例(反斜杠需双写或改用正斜杠):
"command": ["C:/Users/you/bin/rust-analyzer.exe"] - 路径错误最常见现象:LSP 状态栏图标灰色、无日志、无报错、补全列表永远为空
- 验证方式:在终端中运行该路径,看是否输出版本号;若报
Permission denied,Linux/macOS 需执行chmod +x /path/to/rust-analyzer
initializationOptions 缺一不可,否则 Cargo 项目不识别
只配 command 和 scopes,rust-analyzer 能连上但几乎不工作:use 标红、goto definition 失败、补全无内容——因为没传初始化参数。必须包含:
-
"procMacro.enable": true:否则#[derive(Debug)]、serde等宏展开代码无法跳转或补全 -
"languageId": "rust":大小写敏感,写成"Rust"或"rust-lang"都会断连 -
"syntaxes": ["Packages/Rust/Rust.sublime-syntax"]:旧路径如Packages/RustEnhanced/不匹配,LSP 不触发 - 输出的
target目录默认不被索引,符号解析延迟或缺失,可加"cargo.loadOutDirsFromCheck": true改善
右下角语法必须显示为 Rust,且 LSP: Enable Language Server Globally 已启用
Sublime 默认不把 .rs 文件识别为 Rust,装完插件后务必确认右下角状态栏显示的是 Rust(不是 Plain Text 或 Text),否则所有 LSP 功能静默失效:
- 如果显示不对,先装
Rust插件(提供Packages/Rust/Rust.sublime-syntax)或RustEnhanced - 通过
Ctrl+Shift+P输入LSP: Enable Language Server Globally手动启用 - 补全不会自动弹出——按
Ctrl+Space主动唤起,或在Preferences → Settings (用户)中加:"auto_complete_triggers": [{"selector": "source.rust", "characters": ".([{"'"}] - 别依赖 Tab 提交补全项,默认只插制表符,需加
"auto_complete_commit_on_tab": true
rust-analyzer 二进制路径是否可执行、initializationOptions 是否完整、以及右下角语法是否真被识别为 Rust ——三者缺一,补全、跳转、hover 全部静默。


















