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 配置模块,而是一个包含 set 和 del 函数地址的 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

bash 复制代码
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 的最低版本要求。

  • 确认升级后:

    bash 复制代码
    nvim --version

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

相关推荐
行走的陀螺仪2 天前
Claude Code 从入门到实战(三):Hooks、Skills、SubAgents 高级扩展
linux·编辑器·vim
斐夷所非2 天前
Vim 学习速成:理解快捷键
vim
斐夷所非3 天前
Vim 交换文件处理、内容恢复、保存退出与权限提升
vim
by209996 天前
Linux 软件安装与 Vim 编辑
linux·经验分享·vim
FriendshipT10 天前
Vim 完整指南:从入门到高效编辑
linux·人工智能·编辑器·vim·1024程序员节
.道阻且长.10 天前
Linux 基本开发工具:编辑器vim,配置vim
linux·运维·服务器·职场和发展·编辑器·vim·1024程序员节
Rabitebla11 天前
【Linux底层原理】 工具篇(二):Vim 编辑器基础操作与简单配置
linux·c++·编辑器·vim
幸运小圣13 天前
fs 模块完全指南:文件读写、移动删除与文件夹操作(新手友好)【Node.js】
node.js·编辑器·vim
笨笨饿15 天前
#142_VS Code.map文件插件的用法
git·python·stm32·单片机·嵌入式硬件·物联网·vim
挖掘狂人16 天前
编程语言的六十年:一部做减法的历史
程序员·vim·编程语言