rust-analyzer 二进制必须手动下载并配置绝对路径,cargo install rust-analyzer 自 rust 1.75+ 起已废弃,生成无效 stub;lsp 插件(如 sublime 的 lsp)不继承 shell path,需在设置中明确指定 command 为完整路径,并通过 open folder 加载含 cargo.toml 的项目根目录以触发 workspace 初始化。

rust-analyzer 不是靠 cargo install 装的,装了也白装——它不会被 LSP 插件识别,更不会启动。你得手动下载二进制、放对路径、再在 LSP 设置里写死 command,否则“智能感知”永远停留在灰色图标上。
rust-analyzer 二进制必须手动下载,不能 cargo install
从 Rust 1.75+ 开始,cargo install rust-analyzer 命令已废弃,执行后看似成功,实际生成的是个无效 stub。LSP 插件调用时会直接报 spawn ENOENT 或静默失败。
- 去 rust-lang/rust-analyzer/releases 下载对应平台的压缩包(如
rust-analyzer-x86_64-unknown-linux-gnu.gz) - 解压后得到单个无后缀可执行文件(Linux/macOS)或带
.exe后缀的文件(Windows) - 把它放到一个固定路径,比如
/home/username/.cargo/bin/rust-analyzer(Linux/macOS)或C:Usersusername.cargoin ust-analyzer.exe(Windows) - 终端运行
rust-analyzer --version验证能执行;如果报错,说明路径没加进系统PATH,但没关系——LSP 配置里可以绕过
LSP 设置里 command 必须写绝对路径
Sublime 的 LSP 插件不继承 shell 的 PATH,哪怕你在终端里 which rust-analyzer 出来有结果,LSP 也找不到。别信 "command": ["rust-analyzer"] 这种写法,它只在 PATH 全局生效时才管用(而 Sublime 启动时基本不读 ~/.zshrc 或 ~/.bashrc)。
- 打开 Preferences → Package Settings → LSP → Settings
- 在用户配置中写明完整路径:
{ "clients": { "rust-analyzer": { "command": ["/home/username/.cargo/bin/rust-analyzer"], "enabled": true, "initializationOptions": { "cargo": { "loadOutDirsFromCheck": true }, "procMacro": { "enable": true } }, "languages": [{ "languageId": "rust", "scopes": ["source.rust"], "syntaxes": ["Packages/Rust/Rust.sublime-syntax"] }] } } } - Windows 用户注意反斜杠要双写或用正斜杠:
"command": ["C:/Users/username/.cargo/bin/rust-analyzer.exe"] - 保存后重启 Sublime,打开一个含
Cargo.toml的目录(不是单个.rs文件),才能触发 workspace 初始化
语法高亮失效?先看右下角是不是显示 Rust
很多人配完 LSP 发现 hover 没反应、跳转失败,第一反应是 LSP 配错了——其实根本没走到那步:文件压根没被识别为 Rust 代码,source.rust scope 都不存在,LSP 客户端直接跳过加载。
- 打开任意
.rs文件,看编辑器右下角状态栏显示的是Plain Text还是Rust - 如果是前者,点击它,手动选
Rust;如果列表里没有Rust,说明官方Rust插件没装或没加载(别装RustEnhanced,它和原生插件冲突) - 确认安装方式:用
Package Control: Install Package搜Rust,选描述里带 “by rust-lang” 的那个 - 设为默认:View → Syntax → Rust → Rust,避免每次重开都得点
构建系统里 cargo 找不到?别硬塞 PATH
按 Ctrl+B 报 'cargo' is not recognized 或 command not found,不是插件问题,是 Sublime 启动时没拿到你的 shell 环境变量。试图用 launchctl setenv 或改系统 PATH 是治标不治本,还容易出权限问题。
- 新建构建系统:Tools → Build System → New Build System
- 写死
cargo路径,用shell_cmd而非cmd(兼容空格路径):{ "shell_cmd": "/home/username/.cargo/bin/cargo build --color=always", "file_regex": "^(.*?):([0-9]+):([0-9]+):.*$", "working_dir": "${project_path:${folder}}", "selector": "source.rust" } - macOS/Linux 用户也可用
shell_cmd": "bash -c 'cargo build'"强制走 shell 解析,但不如绝对路径稳定 - Windows 用户路径中含空格(如
C:UsersJohn Doe...)时,必须用双引号包裹整个命令:"shell_cmd": ""C:\Users\John Doe\.cargo\bin\cargo.exe" build"
No workspace folder,大概率是因为你只是打开了单个 .rs 文件,而不是用 File → Open Folder 打开整个 Cargo 项目根目录——cargo check 输出路径、依赖解析、宏展开,全依赖 Cargo.toml 的存在和正确加载时机。











