M1 Mac下NvChad配置的Neovim中rust-analyzer无法正常工作
解决M1 Mac上NvChad中Rust LSP的系列问题
问题回顾
在M1 Mac的默认NvChad配置下编辑Rust文件时,仅显示代码片段,无错误提示和自动补全;通过Mason安装rust-analyzer并添加到lspconfig服务器列表后,先出现JSON解析错误(创建Cargo.toml后解决),随后又出现rust-analyzer启动失败,提示对应toolchain未安装,最终发现是PATH优先级导致系统调用的是~/.cargo/bin/rust-analyzer而非Mason安装的版本。
解决步骤
1. 调整NeoVim的PATH优先级
让NeoVim优先使用Mason安装的工具,编辑~/.config/nvim/lua/custom/init.lua,添加以下配置:
vim.env.PATH = vim.fn.stdpath("data") .. "/mason/bin" .. ":" .. vim.env.PATH
该配置会在NeoVim启动时,将Mason的二进制文件目录放到PATH最前端,确保优先调用这里的rust-analyzer。
2. 清理冲突版本(可选)
如果不需要通过cargo安装的rust-analyzer,直接卸载它避免冲突:
cargo uninstall rust-analyzer
3. 验证配置生效
重启NeoVim后,执行以下命令确认:
:!which rust-analyzer:输出应指向~/.local/share/nvim/mason/bin/rust-analyzer:!rust-analyzer --version:确认工具能正常启动并输出版本信息
4. 简化rust-analyzer的LSP配置
在~/.config/nvim/lua/custom/configs/lspconfig.lua中,确保servers列表包含rust_analyzer即可,NvChad会自动关联Mason安装的服务器:
local servers = { -- 保留你需要的其他服务器 "rust_analyzer", }
5. 确保Rust项目结构正确
rust-analyzer依赖Cargo配置文件提供完整的LSP功能,所以编辑Rust文件时,确保当前工作目录是Cargo项目根目录(存在Cargo.toml),否则会出现解析异常或功能缺失。
内容的提问来源于stack exchange,提问作者Tirtharaj Pramanik
相关产品推荐
相关产品推荐

