sublime text 的 rust 支持需手动配置 rust-analyzer 二进制路径、正确设置语法高亮和 lsp 客户端命令,缺一不可;path 不一致、语法识别失败或路径未写绝对路径均导致 lsp 功能失效。

Sublime Text 本身不带 Rust 支持,所谓“配置 Rust 环境”,核心是让编辑器能调用 cargo、rustc、rustfmt 和 rust-analyzer 这四个外部命令——缺一个,LSP 功能就断一截。装插件只是桥梁,不是替代。
rust-analyzer 必须手动下载二进制,不能 cargo install 或 rustup component add
这是最常卡住人的点:Rust 官方已废弃 cargo install rust-analyzer(报错或安装空包),rustup component add rust-analyzer 在 macOS 和部分 Linux 发行版上也常因权限、架构或签名失败而静默跳过。LSP 插件启动时找不到可执行文件,就会直接放弃连接,控制台里只显示 “client not started” 或 “server crashed”。
- 去 rust-lang/rust-analyzer/releases 下载最新
rust-analyzer二进制(如rust-analyzer-x86_64-unknown-linux-gnu) - 解压后得到单个无后缀可执行文件,把它放进
/usr/local/bin/rust-analyzer(Linux/macOS)或%USERPROFILE%\bin\rust-analyzer.exe(Windows) - 终端里运行
rust-analyzer --version验证是否可执行;Sublime 不展开~,路径必须写绝对路径
LSP 插件配置里 command 字段必须指向真实可执行文件
很多人在 LSP 设置中写 "command": ["rust-analyzer"],指望它自动查 PATH —— Sublime 的 LSP client 不继承 shell 的 PATH,尤其 macOS 从 Dock 启动时,PATH 几乎只有 /usr/bin:/bin。结果就是 LSP 启动失败,补全/跳转全灰。
- 打开 Preferences → Package Settings → LSP → Settings
- 在
clients下明确写死路径:{ "clients": { "rust-analyzer": { "command": ["/usr/local/bin/rust-analyzer"], "scopes": ["source.rust"], "syntaxes": ["Packages/Rust/Rust.sublime-syntax"], "languageId": "rust" } } } - 保存后重启 Sublime,打开含
Cargo.toml的项目根目录,状态栏应出现 “LSP: rust-analyzer”
语法高亮没设对,LSP 直接不加载
哪怕 rust-analyzer 路径全对、项目结构标准,只要当前 .rs 文件右下角显示的是 Plain Text,LSP 就不会触发——因为 scopes 和 selector 匹配失败。这不是插件没装,是 Sublime 根本没识别成 Rust 文件。
- 点击右下角状态栏的
Plain Text→ 手动选Rust(如果没这个选项,说明 Rust 插件未加载,优先重装官方Rust插件,而非RustEnhanced) - 进 View → Syntax → Rust → Rust 设为默认,避免每次手动切
- 确认
Package Control中没同时启用Rust和RustEnhanced——两者冲突会导致语法高亮异常、selector错乱
构建系统和 LSP 是两套逻辑,别混用 rust-analyzer 路径
有人把 LSP 设置里的 rust-analyzer 路径复制到 RustEnhanced 的设置里,或者反过来——这没用。RustEnhanced 用的是自己的 rust_analyzer_path 字段,且只用于补全/跳转,不参与 LSP 协议;LSP 插件则完全忽略 RustEnhanced 的配置。两套路径必须各自独立填对。
- RustEnhanced 设置(Preferences → Package Settings → RustEnhanced → Settings)中填:
{ "rust_analyzer_path": "/usr/local/bin/rust-analyzer" } - LSP 设置中填的是
clients.rust-analyzer.command,路径可以相同,但字段名和上下文完全不同 - 两者都依赖
rust-analyzer可执行,但启动时机、参数传递、错误日志位置都不同——出问题要分别看控制台(Ctrl+`)里哪段报错
真正麻烦的从来不是“怎么装”,而是 Sublime 启动时 PATH 不一致、语法识别失败、以及 rust-analyzer 二进制路径被各种方式误解——这些细节一旦错位,LSP 就变成摆设,连悬停看类型都做不到。











