Neovim中的lspconfig升级修复
2025-09-26 15:16
在更新ArchLinux
后,再打开Neovim
后提示
1 | The `require('lspconfig')` "framework" is deprecated, use vim.lsp.config (see :help lspconfig-nvim-0.11) instead. |
问题解读
你遇到的这个提示意味着你正在使用的 nvim-lspconfig
插件版本已经弃用了旧的配置方式,需要迁移到新的 Neovim
内置接口。新旧语法对照如下:
配置方面 | 旧语法(己弃用) | 新语法(Neovim 0.11+) |
---|---|---|
基本服务器配置 | require('lspconfig').pyright.setup({...}) | vim.lsp.config('pyright',{...}) |
启用服务器 | 在setup后自动或通过其他机制 | 调用vim.lsp.enable('server_name') |
通用配置(如按键映射) | 在单个服务器的setup的on_attach中定义 | 使用vim.api.nvim_create_autocmd监听"LspAttach"事件 |
迁移步骤与示例
更新Neovim和插件: 确保你的 Neovim 版本在 0.11.0 或以上,因为新的 vim.lsp.config API 是从这个版本开始引入的。同时,将你的 nvim-lspconfig 插件更新到最新版本。
重写配置语法:找到你配置文件中所有使用 require('lspconfig').XX.setup({...}) 的地方,将其改为新的格式。
迁移实例:
1 | -- 这是已弃用的旧写法 |
1 | -- 使用新的 API 进行配置 |
- 处理全局设置(如按键映射) : 在新的模式中,建议将通用的、不针对特定语言服务器的设置(如按键映射)通过全局的 LspAttach 自动命令来设置。这可以避免为每个服务器重复编写 on_attach 函数。
1 | -- 定义一个通用的附加回调函数 |
验证与排查
完成修改后,你可以通过以下方式验证配置是否正确:
重新加载你的配置文件(例如执行 :source $MYVIMRC)。
打开一个相关类型的文件(如 .lua 文件),使用 :LspInfo 命令查看对应的语言服务器(如 lua_ls)是否正常启动。
如果服务器没有启动,检查 Neovim 的 :messages 或 LSP 日志(通过 :LspLog)来排查错误。