You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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):
    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
    })
    
    如果你使用Vimscript格式的配置文件(init.vim),可以将上述lua代码包裹在如下块中使用:
    lua << EOF
    -- 上述lua配置内容粘贴到此处
    EOF
    
  • 第四步:验证效果,打开任意C++代码文件,输入存在语法错误、未定义变量等问题的代码,即可在输入过程中实时看到行内错误提示,和你预期的效果完全一致。

注意事项:

  • 不需要安装任何补全、自动导入相关插件,以上配置已经完全屏蔽了LSP的补全能力,仅保留错误诊断功能
  • 如果错误提示没有实时更新,确认update_in_insert参数设置为true即可

内容的提问来源于stack exchange,提问作者Gourav Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:39:06