在LazyVim中配置Rust开发环境
要在LazyVim中配置Rust开发环境,包括代码补全、格式化、调试等功能,可以按照以下步骤进行配置:
1. 确保基础环境
首先确保你已经安装了:
- Rust工具链 (rustup, rustc, cargo)
- LazyVim已正确安装
# 安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
2. 配置Rust LSP服务器 (rust-analyzer)
LazyVim默认使用rust-analyzer
作为Rust的LSP服务器:
-- 在 ~/.config/nvim/lua/plugins/lsp.lua 中添加或修改
return {{"neovim/nvim-lspconfig",opts = {servers = {-- 添加rust_analyzer配置rust_analyzer = {settings = {["rust-analyzer"] = {cargo = {allFeatures = true,loadOutDirsFromCheck = true,runBuildScripts = true,},checkOnSave = {command = "clippy",extraArgs = { "--no-deps" },},procMacro = {enable = true,},},},},},-- 设置rust_analyzer自动附加到rust文件setup = {rust_analyzer = function(_, opts)require("lspconfig").rust_analyzer.setup(opts)end,},},},
}
3. 安装Rust专用插件
-- 在 ~/.config/nvim/lua/plugins/extra.lua 中添加
return {-- Rust增强插件{"simrat39/rust-tools.nvim",ft = "rust",dependencies = "neovim/nvim-lspconfig",opts = function()local ok, mason_registry = pcall(require, "mason-registry")local adapter ---@type anyif ok then-- 调试适配器local codelldb = mason_registry.get_package("codelldb")local extension_path = codelldb:get_install_path() .. "/extension/"local codelldb_path = extension_path .. "adapter/codelldb"local liblldb_path = extension_path .. "lldb/lib/liblldb.so"adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path)endreturn {server = {on_attach = function(_, bufnr)-- 映射快捷键vim.keymap.set("n", "<leader>rr", "<cmd>RustRunnables<cr>", { buffer = bufnr, desc = "Rust Runnables" })vim.keymap.set("n", "<leader>rd", "<cmd>RustDebuggables<cr>", { buffer = bufnr, desc = "Rust Debuggables" })end,settings = {["rust-analyzer"] = {cargo = { allFeatures = true },checkOnSave = {command = "clippy",extraArgs = { "--no-deps" },},},},},dap = {adapter = adapter,},tools = {runnables = {use_telescope = true,},inlay_hints = {auto = true,show_parameter_hints = true,parameter_hints_prefix = "← ",other_hints_prefix = "→ ",},},}end,config = function(_, opts)require("rust-tools").setup(opts)end,},-- 用于更好的Cargo.toml支持{"saecki/crates.nvim",ft = { "toml" },config = function(_, opts)local crates = require("crates")crates.setup(opts)crates.show()end,},
}
4. 配置调试功能
-- 在 ~/.config/nvim/lua/plugins/dap.lua 中添加
return {{"mfussenegger/nvim-dap",dependencies = {-- 确保安装了codelldb{"williamboman/mason.nvim",opts = {ensure_installed = {"codelldb", -- Rust调试器},},},},},
}
5. 配置格式化
Rustfmt是Rust的官方格式化工具,可以通过null-ls配置:
-- 在 ~/.config/nvim/lua/plugins/linting.lua 中添加
return {{"jose-elias-alvarez/null-ls.nvim",opts = function(_, opts)local nls = require("null-ls")table.insert(opts.sources, nls.builtins.formatting.rustfmt)return optsend,},
}
6. 常用快捷键配置
-- 在 ~/.config/nvim/lua/config/keymaps.lua 中添加
local function rust_keymaps()vim.keymap.set("n", "<leader>rr", "<cmd>RustRunnables<cr>", { desc = "Rust Runnables" })vim.keymap.set("n", "<leader>rd", "<cmd>RustDebuggables<cr>", { desc = "Rust Debuggables" })vim.keymap.set("n", "<leader>rc", "<cmd>RustOpenCargo<cr>", { desc = "Open Cargo.toml" })vim.keymap.set("n", "<leader>rp", "<cmd>RustParentModule<cr>", { desc = "Go to parent module" })vim.keymap.set("n", "<leader>rj", "<cmd>RustJoinLines<cr>", { desc = "Join lines" })
endvim.api.nvim_create_autocmd("FileType", {pattern = "rust",callback = rust_keymaps,
})
7. 使用说明
- 打开Rust项目时,rust-analyzer会自动启动
- 常用命令:
:RustRunnables
- 运行当前项目或测试:RustDebuggables
- 调试当前项目:RustOpenCargo
- 打开Cargo.toml
- 代码格式化:保存文件时自动格式化或手动使用
<leader>fm
- 代码补全:通过nvim-cmp提供自动补全
8. 验证安装
- 打开一个Rust文件
- 运行
:LspInfo
确认rust-analyzer已附加 - 尝试代码补全和跳转定义功能
这样配置后,你应该能在LazyVim中获得完整的Rust开发体验,包括代码补全、格式化、调试等功能。