要在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開發體驗,包括代碼補全、格式化、調試等功能。