安装
{ "neovim/nvim-lspconfig" }, -- LSP 配置基础
{ "williamboman/mason.nvim" }, -- 轻松管理 LSP 服务器
{ "williamboman/mason-lspconfig.nvim" }, -- 连接 mason 和 lspconfig设置
-- Mason & LSP 配置
require("mason").setup()
require("mason-lspconfig").setup({ ensure_installed = { "clangd" }
-- 确保 clangd (C/C++ LSP服务器) 被自动安装 })
-- 为 clangd 设置 lspconfig
require("lspconfig").clangd.setup({})
设置完后还需要进入 nvim,然后 :Mason,这样才能真的去安装clangd。
补全显示
安装
{ "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer" }, },设置
-- Nvim-cmp (自动补全) 配置
local cmp = require('cmp')
cmp.setup({
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'buffer' },
}),
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
})sources 补全建议的来源
{ name = 'nvim_lsp' }: 这是代码智能提示最重要的来源。它告诉 cmp 从你当前活动的 语言服务器协议 (LSP) 服务器(比如 C/C++ 的 clangd 或 Python 的 pyright)获取建议。这能提供与上下文相关的函数、变量和关键字的建议。
{ name = 'buffer' }: 这个来源告诉 cmp 扫描你当前正在编辑的文件 (缓冲区),并将在文件中已经出现过的单词作为建议。这对于输入变量名或不想重复输入长单词时非常有用。
mapping 键盘快捷键
可能无法使用快捷键的问题
lazy.nvim 使用的是懒加载,所以配置要在安装的后面。
也就是:
-- 自动补全 UI
{
"hrsh7th/nvim-cmp",
dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer" },
config = function()
local cmp = require('cmp')
cmp.setup({
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'buffer' },
}),
mapping = cmp.mapping.preset.insert({
['<Tab>'] = cmp.mapping.select_next_item(),
['<S-Tab>'] = cmp.mapping.select_prev_item(),
}),
})
end,
},否则可能无法使用。