NvChad配置LSP后第三方包无自动补全问题求助
NvChad中Go/JS LSP第三方包补全无提示的解决方法
问题背景
从VSCode切换到Neovim并配置NvChad后,已完成Golang(gopls)和JavaScript(tsserver)的LSP配置,但补全功能异常:仅语言关键字(如function、var)和当前缓冲区内容能触发补全,导入Go的strings包或JS的fs包后,输入strings.或fs.时无任何补全提示。
核心问题
你的lspconfig.lua中存在语法错误:将LSP的setup函数当作属性赋值,导致自定义配置并未被LSP加载。此外tsserver的配置中开启了disableSuggestions,会直接关闭补全建议。
修正后的配置代码
自定义lspconfig.lua
local config = require("plugins.configs.lspconfig") local on_attach = config.on_attach local capabilities = config.capabilities -- 继承NvChad默认capabilities -- 用cmp_nvim_lsp扩展默认capabilities,保留原有配置的同时增强补全支持 local cmp_capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) local lspconfig = require("lspconfig") local util = require "lspconfig/util" -- 正确调用setup函数(而非赋值),加载gopls配置 lspconfig.gopls.setup({ on_attach = on_attach, capabilities = cmp_capabilities, cmd = {"gopls"}, filetypes = { "go", "gomod", "gowork", "gotmpl" }, root_dir = util.root_pattern("go.work", "go.mod", ".git"), settings = { gopls = { staticcheck = true, gofumpt = true, usePlaceholders = true, analyses = { unusedparam = true, fieldalignment = true, } } } }) -- 修正tsserver配置,移除disableSuggestions以开启补全 lspconfig.tsserver.setup({ on_attach = on_attach, capabilities = cmp_capabilities, init_options = { preferences = { -- 注释或删除disableSuggestions,避免关闭补全建议 -- disableSuggestions = true, } } })
验证与调试步骤
- 重启Neovim,打开Go/JS项目文件
- 执行
:LspInfo命令,确认gopls和tsserver处于running状态,且根目录识别正确(Go项目需存在go.mod,JS项目需存在package.json) - 导入第三方包后,输入包名加
.,测试补全是否正常 - 若Go项目仍无补全,执行
go mod tidy确保依赖已下载,gopls需要依赖的类型信息才能提供补全
内容的提问来源于stack exchange,提问作者Abdulelah Othman
相关产品推荐
相关产品推荐

