当前位置: 首页 > ai >正文

Neovim clangd LSP 配置出现 “attempt to call field ‘ge‘”

Neovim clangd LSP 配置出现 “attempt to call field ‘ge’”

一、问题发现

在配置 Neovim 使用 lazy.nvim 管理插件,并尝试加载 clangd LSP 时,启动 Neovim 并打开 C/C++ 文件出现如下报错:

Failed to source `/home/chipen/.local/share/nvim/lazy/nvim-lspconfig/plugin/lspconfig.lua`
vim/_editor.lua:341: BufReadPre Autocommands for "*"..script nvim_exec2() called ...
...: attempt to call field 'ge' (a nil value)

在尝试使用 pcall(require, "lspconfig") 时,返回的值不是期望的 LSP 配置模块,而是一个包含 setdel 函数地址的 table。


二、问题分析

  1. 初步判断

    • 报错信息显示 "attempt to call field 'ge' (a nil value)",说明某个函数调用不存在。

    • 初步怀疑是配置文件中有手误,将 vim.keymap.set 写成了 vim.keymap.ge,或者插件缓存被破坏。

  2. 排查插件配置

    • 检查 ~/.config/nvim/lua/plugins/lsp.lua 文件,确认文件名与模块名一致(全小写 lsp.lua)。

    • 清理 ~/.local/share/nvim/lazy/nvim-lspconfig 并重新同步插件,但报错仍然存在。

  3. 排查 Neovim 版本

    • 检查 Neovim 版本:NVIM v0.9.5

    • 报错堆栈中显示:

      nvim-lspconfig requires Nvim version 0.10, but you are running: 0.9.5
      
    • 说明问题根源在于 插件版本与 Neovim 版本不兼容

      • 最新的 nvim-lspconfig 已经要求 Neovim >= 0.10。

      • 在 0.9.5 下调用其内部 API(如 nvim_exec2)会报错,导致 "ge" 之类的函数错误。

    • apt install 从这个新增的仓库下载安装软件,更新到比官方源更新的版本。

5- 升级 Neovim 到 >=0.10

sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install neovim -y
  • add-apt-repository 将外部 PPA(Personal Package Archive)注册到系统 APT 源中。

三、问题解决

升级 Neovim

  • 使用 PPA 安装 Neovim 0.10+ 或更新版本,满足 nvim-lspconfig 的最低版本要求。

  • 确认升级后:

    nvim --version
    

    输出为 NVIM v0.10.x 或更高。

http://www.xdnf.cn/news/18292.html

相关文章:

  • C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-下篇)
  • 鸿蒙中基础耗时分析:Time分析
  • 音视频面试题集锦第 29 期
  • JetBrains Mono字体
  • Vue3组件系统完全指南:从入门到面试通关
  • (第二十期下)超链接的更多分类
  • 血缘元数据采集开放标准:OpenLineage Dataset Facets
  • java开发面试题(提高篇)
  • 大数据毕业设计选题推荐-基于大数据的北京气象站数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • JavaScript基础语法five
  • Python学习 -- MySQL数据库的查询及案例
  • 计算两幅图像在特定交点位置的置信度评分。置信度评分反映了该位置特征匹配的可靠性,通常用于图像处理任务(如特征匹配、立体视觉等)
  • redis-缓存-双写一致性
  • git 常用命令整理
  • 【倍增 桶排序】后缀数组
  • 【Java后端】Spring Boot 全局异常处理最佳实践
  • Firefox 142 引入 CRLite 用于私有证书撤销
  • LeetCode热题100--101. 对称二叉树--简单
  • 【clion】visual studio的sln转cmakelist并使用clion构建32位
  • 游戏本不插电源适配器不卡设置教程
  • 数据库架构开发知识库体系
  • Pub/Sub是什么意思
  • 常见的学术文献数据库
  • 好家园房产中介网后台管理完整(python+flask+mysql)
  • 开源的实时 Web 日志分析器GoAccess安装使用指南
  • 【数据结构】快速排序算法精髓解析
  • Vue 3 高性能实践 全面提速剖析!
  • Android 资源替换:静态替换 vs 动态替换
  • [GraphRAG]完全自动化处理任何文档为向量知识图谱:AbutionGraph如何让知识自动“活”起来?
  • sourcetree 拉取代码