如何在Neovim中禁用LSP自动补全与错误弹窗并保留其他功能
配置kickstart.nvim关闭LSP自动补全与错误弹窗
一、关闭LSP自动补全提示
kickstart.nvim默认使用nvim-cmp作为补全插件,要关闭LSP提供的补全提示,只需移除cmp配置中的LSP源即可:
- 打开自定义配置文件
lua/custom/plugins/cmp.lua(没有则新建) - 粘贴以下代码覆盖默认配置:
return { "hrsh7th/nvim-cmp", opts = function(_, opts) local cmp = require("cmp") -- 过滤掉LSP补全源 opts.sources = vim.tbl_filter(function(source) return source.name ~= "lsp" end, opts.sources) return opts end, }
这样就不会再弹出LSP提供的自动补全建议,你依然可以保留缓冲区补全等其他可选补全源。
二、关闭错误弹窗(诊断提示)
LSP的诊断弹窗由vim.diagnostic模块控制,要关闭弹窗同时保留定义跳转等功能,修改LSP配置:
- 打开
lua/custom/plugins/lsp.lua(没有则新建) - 粘贴以下代码:
return { "neovim/nvim-lspconfig", opts = { diagnostics = { virtual_text = false, -- 关闭行内错误文本提示 float = { enabled = false }, -- 关闭鼠标悬停时的错误弹窗 -- 可选:保留左侧 gutter 的诊断图标,不需要可以设为false signs = true, }, }, }
修改后,你依然可以用:Diagnostics命令查看所有诊断信息,或用gD/gd快捷键跳转到函数定义。
三、LSP常用配置选项及完整列表
常用可配置项(启用/禁用)
- 诊断类:
virtual_text:是否在行内显示诊断文本(布尔值)float.enabled:是否显示悬停诊断弹窗(布尔值)underline:是否用下划线标记错误行(布尔值)signs:是否在左侧 gutter 显示诊断图标(布尔值)
- LSP功能开关:
在on_attach函数中可单独禁用某类LSP能力,比如:local on_attach = function(client, bufnr) -- 禁用当前LSP的补全能力(如果没通过cmp配置关闭,可在这里补充) client.server_capabilities.completionProvider = nil -- 禁用格式化能力(可选) -- client.server_capabilities.documentFormattingProvider = nil end - 单语言服务器配置:
针对特定语言(如Python的pyright、JS的tsserver),可单独修改设置,比如关闭pyright的自动导入补全:return { "neovim/nvim-lspconfig", opts = { servers = { pyright = { settings = { pyright = { autoImportCompletion = false }, }, }, }, }, }
完整选项列表
直接在Neovim中查看内置帮助文档即可获取所有配置项:
- 输入
:help vim.diagnostic.config()查看诊断模块的所有参数 - 输入
:help lspconfig查看lspconfig插件的完整配置选项 - 输入
:help vim.lsp查看Neovim LSP核心功能的API与配置
新手修改步骤总结
- 分别新建/修改
lua/custom/plugins/cmp.lua和lua/custom/plugins/lsp.lua文件 - 粘贴对应配置代码
- 重启Neovim,配置自动生效
内容的提问来源于stack exchange,提问作者shmuel
相关产品推荐
相关产品推荐

