ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

rustaceanvim 高级配置:7 个技巧让 rust-analyzer 真正顺手

rustaceanvim 高级配置:7 个技巧让 rust-analyzer 真正顺手 rustaceanvim 高级配置7 个技巧让 rust-analyzer 真正顺手【免费下载链接】rustaceanvim Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim项目地址: https://gitcode.com/gh_mirrors/ru/rustaceanvimrustaceanvim 用了一段时间但总觉得 rust-analyzer 不太对劲保存后没有 Clippy 的提示、自动补全的导入风格混乱、大工作区里找符号半天不出结果。问题多半不在插件本身而在你还没调过server配置项。下面 7 个技巧每个都能独立上手。保存自动跑 Clippy调 check 和 checkOnSaverustaceanvim 默认开着tools.enable_clippy但默认参数未必合你意——比如想给 clippy 加--no-deps避免它把依赖 crate 也扫一遍。把检查命令显式写出来改完保存缓冲区诊断区就会以 clippy 的规则出提示require(rustaceanvim).setup({ server { settings { [rust-analyzer] { check { command clippy, -- 用 clippy 替代 rustc 做检查 extraArgs { --no-deps }, -- 只检查本 crate }, checkOnSave true, -- 每次保存后重新检查 }, }, }, })check.command指定跑哪个命令extraArgs是传给 cargo 的额外参数。改完保存文件你会看到 lint 数量明显变少检查也更快。固定导入风格配置 imports 粒度和前缀按.自动导入时一会儿use std::collections::HashMap一会儿use crate::foo::bar风格全靠运气。在 server 配置项中追加settings { [rust-analyzer] { imports { granularity { group module }, -- 同一模块的导入合并成一条 prefix self, -- 本 crate 内优先用 self:: 前缀 }, }, }granularity控制导入按什么范围合并prefix控制引用前缀偏好。改完再触发自动导入新补的use语句就会和你手写的风格保持一致。on_attach 接入缓冲区快捷键与格式接管想给 Rust 缓冲区单独绑快捷键或者不想用服务器内置格式化、改用外部 rustfmt都在on_attach里做。它在客户端附加到缓冲区时触发且 rustaceanvim 是先执行自己的逻辑注册 Rust 命令、加载调试配置再调你的回调不会打架-- 在 server 配置项中追加 on_attach function(client, bufnr) -- 接管格式化前先关掉服务端能力 client.server_capabilities.documentFormattingProvider false -- 缓冲区局部快捷键调出代码操作 vim.keymap.set(n, leaderca, vim.lsp.buf.code_action, { buffer bufnr }) -- 顺手绑一个重载设置排查时很常用 vim.keymap.set(n, leaderrl, cmdRustAnalyzer reloadSettingsCR, { buffer bufnr }) endclient.server_capabilities可以按字段关掉不想用的服务端能力。改完打开任意 Rust 文件leaderca只在该缓冲区生效其他语言不受影响。按项目根目录差异化把 settings 写成函数同一台机器上既有快速迭代的微服务又有必须全特性编译的固件工程一张静态 settings 表顾不过来。rustaceanvim 的settings支持函数形式参数是project_root和default_settings求值逻辑在 lua/rustaceanvim/lsp/init.lua。试试这样写-- 在 server 配置项中追加 settings function(root_dir, default_settings) local ra default_settings[rust-analyzer] if root_dir:match(/firmware) then ra.cargo.features all -- 固件工程按全部特性编译 ra.cargo.loadOutDirsFromCheck true -- 复用 cargo check 的输出目录 end return default_settings endroot_dir是 rustaceanvim 从Cargo.toml向上找到的项目根。改完打开不同项目LSP 自动切换策略一套配置走天下。️大工作区符号搜索限制 workspace.symbol.search工作区大了之后全局符号搜索动辄返回上千条列表翻半天还卡顿。给搜索加个上限settings { [rust-analyzer] { workspace { symbol { search { limit 200 }, -- 只返回最相关的前 200 条 }, }, }, }limit是返回条数上限。改完符号搜索结果秒回真找不到时再临时把limit调大即可。诊断增强打开实验性诊断默认诊断只覆盖已关联的文件有些边缘情况提示不出来。在 server 配置项中追加settings { [rust-analyzer] { diagnostics { experimental { enable true }, -- 启用实验性诊断规则 }, }, }另外hover.actions不用你配rustaceanvim 默认就向服务器声明了hoverActions能力K 键悬浮窗会自带操作按钮。改完实验诊断开启后你会发现多出一类以前不报的问题提示。配置不生效怎么查reloadSettings、config 与日志改了 settings 服务器却还按旧习惯办事先用:RustAnalyzer reloadSettings它只发didChangeConfiguration通知不用重启不行再:RustAnalyzer restart。调试时最方便的是在线改不用动配置文件-- 在 Neovim 命令模式直接执行 :RustAnalyzer config { checkOnSave false }确认某个配置到底有没有下发打开server.logfile默认在临时目录再在 server 配置项中追加settings[rust-analyzer].trace { server verbose }日志里能逐条看到发往服务器的请求和配置。对照一遍哪个字段没送到一目了然。这 7 个技巧覆盖了从检查命令、导入风格到多项目差异化的常见诉求都是server配置项里的增量改动互不冲突。建议先跑通 Clippy 和 settings 函数这两项其余按需取用。想动手的话先克隆仓库git clone https://gitcode.com/gh_mirrors/ru/rustaceanvim【免费下载链接】rustaceanvim Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim项目地址: https://gitcode.com/gh_mirrors/ru/rustaceanvim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表