rust-analyzer 必须手动下载预编译二进制并配置绝对路径,sublime text 4 的宏展开完全依赖其语义能力;需确保语法设为官方 rust 插件的 source.rust,且项目含 cargo.toml 才能正常索引与展开。

rust-analyzer 必须手动下载,不能靠 cargo install
Sublime Text 4 的宏展开(比如 #[derive(Debug)] 展开、macro_rules! 展开)完全依赖 rust-analyzer 提供的语义能力,而它不支持 cargo install rust-analyzer —— 这个命令在 Rust 1.75+ 已废弃,且 Sublime 的 LSP 插件或 RustEnhanced 都不会自动拉取二进制。你必须去 rust-lang/rust-analyzer/releases 下载对应平台的预编译文件(如 rust-analyzer-x86_64-unknown-linux-gnu),解压后得到一个无后缀的可执行文件(Windows 是 rust-analyzer.exe)。把它放进固定路径,比如:/usr/local/bin/rust-analyzer(Linux/macOS)或 C:UsersXXX.cargoin
ust-analyzer.exe(Windows)。
终端里运行 rust-analyzer --version 要能输出版本号;否则 Sublime 会静默跳过宏展开,连错误提示都没有。
LSP 设置里 command 必须写绝对路径,~ 不展开
Sublime Text 4 启动时(尤其从 Dock 或开始菜单启动)几乎不继承 shell 的 $PATH,所以 LSP 插件里的 "command": ["rust-analyzer"] 几乎必然失败。你得把路径硬编码成绝对形式:
- Linux/macOS:
"command": ["/usr/local/bin/rust-analyzer"] - Windows:
"command": ["C:\Users\XXX\.cargo\bin\rust-analyzer.exe"]
注意:~ 和环境变量(如 %USERPROFILE%)在 Sublime 里不解析,写了就等于没配。配置位置是:Preferences → Package Settings → LSP → Settings,填入 clients 字段内。
语法识别必须是 source.rust,否则宏展开直接禁用
右下角状态栏显示 Plain Text 或 RustEnhanced 都不行——只有显示 Rust(来自官方 Rust 插件,不是 RustEnhanced)才匹配 source.rust 这个 scope。LSP 宏展开功能只对这个 scope 生效。
如果点右下角没看到 Rust 选项:
- 先用 Package Control 卸载
RustEnhanced,再装Rust(by rust-lang) - 重启 Sublime,打开
.rs文件,点右下角 → 手动选Rust - 进 View → Syntax → Rust → Rust 设为默认
漏掉这步,Go to Definition 和宏展开都灰掉,控制台也不会报错,只会“没反应”。
宏展开延迟常见,但卡住通常是索引失败
首次打开项目时,rust-analyzer 需要索引整个 workspace,小项目几秒,大项目可能 20–60 秒。期间悬停看类型、展开 derive 都不可用——这不是插件卡,是服务器还没 ready。
如果等很久仍无响应,检查:
- 项目根目录是否有
Cargo.toml(LSP 只在 Cargo 项目下激活宏展开) - Sublime 控制台(
Ctrl+`)里是否出现rust-analyzer server crashed或client not started - 确认
rust-analyzer文件有可执行权限(Linux/macOS 执行chmod +x /usr/local/bin/rust-analyzer)
宏展开本身不依赖 rustfmt 或 racer,但一旦 rust-analyzer 启动失败,所有语义功能(包括展开)就彻底消失,且没有 fallback 提示——这是 Sublime + LSP 的典型静默失效模式。











