如何配置Neovim的Clangd LSP实现C++代码输入时实时错误提示

Neovim完全可以实现仅实时显示C++代码错误的需求,不需要自动补全等额外功能,0.8及以上的稳定版本即可兼容gnome-terminal、Alacritty等所有主流终端,无需使用Nightly Build版本。以下是极简配置步骤:
- 第一步:安装C++ LSP服务端clangd
不同发行版对应安装命令:
Debian/Ubuntu:sudo apt install clangd
Fedora/RHEL:sudo dnf install clang-tools-extra
Arch Linux:sudo pacman -S clang - 第二步:安装官方LSP配置插件
neovim/nvim-lspconfig,使用你常用的Neovim插件管理器安装即可,无额外依赖。 - 第三步:写入配置到你的Neovim配置文件(init.lua):
如果你使用Vimscript格式的配置文件(init.vim),可以将上述lua代码包裹在如下块中使用:local lspconfig = require('lspconfig') lspconfig.clangd.setup({ -- 屏蔽补全相关能力,仅保留诊断 capabilities = { textDocument = { completion = { dynamicRegistration = false, completionItem = { snippetSupport = false } } } }, on_attach = function(client, bufnr) -- 完全禁用LSP的补全功能 client.server_capabilities.completionProvider = nil -- 诊断配置,和你预期的显示效果匹配 vim.diagnostic.config({ virtual_text = true, -- 行内显示错误文字 signs = true, -- 左侧行号栏显示错误标记 underline = true, -- 错误代码下方加下划线 update_in_insert = true, -- 输入过程中实时更新错误 severity_sort = true, }) end })lua << EOF -- 上述lua配置内容粘贴到此处 EOF - 第四步:验证效果,打开任意C++代码文件,输入存在语法错误、未定义变量等问题的代码,即可在输入过程中实时看到行内错误提示,和你预期的效果完全一致。
注意事项:
- 不需要安装任何补全、自动导入相关插件,以上配置已经完全屏蔽了LSP的补全能力,仅保留错误诊断功能
- 如果错误提示没有实时更新,确认
update_in_insert参数设置为true即可
内容的提问来源于stack exchange,提问作者Gourav Raj
相关产品推荐
相关产品推荐

