rust-analyzer 启动失败显示“server crashed”几乎总是因二进制不可达或项目根目录缺失cargo.toml;必须手动下载预编译二进制、验证rust-analyzer --version有输出、在含cargo.toml的目录打开项目,并正确配置initializationoptions而非settings。

rust-analyzer 启动失败,LSP 日志显示 “server crashed”
这几乎总是因为 rust-analyzer 二进制不可达,或项目根目录缺失 Cargo.toml。Sublime 的 LSP 插件不会主动报路径错误,只会静默崩溃。
- 先在终端运行
rust-analyzer --version—— 必须有输出;没有就说明没装对,别跳过这步 - 不要用
cargo install rust-analyzer(已废弃),也不要用rustup component add rls(RLS 已弃用) - 正确做法:去 rust-lang/rust-analyzer/releases 下载对应平台的二进制(如
rust-analyzer-x86_64-unknown-linux-gnu),解压后得到单个可执行文件,重命名为rust-analyzer(Linux/macOS)或rust-analyzer.exe(Windows) - 把它放进
$HOME/.cargo/bin/(推荐)或/usr/local/bin/,并确保该路径在系统PATH中;验证方式:新开终端,执行which rust-analyzer - 打开 Sublime 后,必须在包含
Cargo.toml的目录下打开项目(不是只打开单个.rs文件);否则rust-analyzer启动即退出,LSP 日志里只写 “server crashed”,实际是 “no workspace found”
LSP 设置里 initializationOptions 和 settings 混用导致功能失效
这是配置中最常踩的坑:把 rust-analyzer 的参数塞进 LSP 插件自身的 settings,结果服务器根本收不到。
-
initializationOptions是发给rust-analyzer进程的,比如:{ "initializationOptions": { "cargo": { "loadOutDirsFromCheck": true }, "procMacro": { "enable": true } } } -
settings是控制 LSP 插件行为的,比如:{ "settings": { "lsp_format_on_save": true, "show_diagnostics_in_view_status": true } } - 把
"procMacro.enable": true写进settings,rust-analyzer就不会加载宏展开,println!、serde等宏内代码将无法跳转或类型推导 - 配置位置必须是
Preferences → Package Settings → LSP → Settings(用户设置),不是 RustEnhanced 或其他插件的 settings
保存自动格式化不触发,控制台无报错
格式化静默失效,往往不是插件没开,而是路径错 + 插件冲突 + 依赖缺失三连击。
- 确认
lsp_format_on_save在 LSP 的settings里设为true(不是在 RustEnhanced 的 settings 里) - 禁用所有其他 Rust 格式化插件:RustEnhanced 的
rustfmt_on_save、sublime-rust、RustFmt —— 它们会抢走on_post_save事件,导致 LSP 格式化完全不触发 -
rust-analyzer格式化底层调用cargo fmt,所以必须能执行cargo fmt -- --help;如果失败,运行rustup component add rustfmt -
rustfmt_path不要出现在 LSP 配置里 —— LSP 不认这个键;它只属于 RustEnhanced;LSP 格式化只依赖cargo fmt是否可用
右下角始终显示 “Plain Text”,语法高亮和构建都无效
这不是插件没装,是 Sublime 根本没把当前文件当 Rust 处理。所有后续功能(构建、LSP、折叠)都依赖这个识别。
- 打开任意
.rs文件,点击右下角状态栏的 “Plain Text”,手动选 “Rust” - 如果列表里没有 “Rust”,说明官方
Rust插件(by rust-lang)没加载:用 Package Control 重装它,别装RustEnhanced—— 二者共存会导致语法 scope 冲突 - 装完后,进
View → Syntax → Rust → Rust,设为默认,避免每次手动切 - 检查
Preferences → Package Settings → Rust → Settings – User,确保里面没写任何覆盖 syntax 的内容 - 重启 Sublime —— 它不会热加载新插件的 syntax definition,必须重启才生效
真正卡住人的从来不是 rust-analyzer 功能多难配,而是它对环境的诚实:工具链缺一环,它就不工作;路径写错一个字符,它就沉默;Cargo.toml 不在根目录,它就退出。没有“差不多能用”,只有“全通”或“全不通”。











