Go LSP(gopls)在Neovim中无法显示代码片段求助
确认gopls配置正确传递
得保证在lspconfig的gopls设置里,把experimentalPostfixCompletions明确设为true,而且配置嵌套要准确——必须放在settings.gopls层级下,不能直接丢在settings根目录。示例配置写法:require('lspconfig').gopls.setup({ settings = { gopls = { experimentalPostfixCompletions = true, -- 其他gopls相关配置 }, }, capabilities = capabilities, })用默认生成的capabilities,别手动修改
不需要单独设置capabilities.textDocument.completion.completionItem.snippetSupport = true,直接调用cmp_nvim_lsp.default_capabilities()生成完整的capabilities即可,手动修改反而可能覆盖其他必要字段。示例代码:local capabilities = require('cmp_nvim_lsp').default_capabilities() require('lspconfig').gopls.setup({ settings = { ... }, capabilities = capabilities, })之前手动添加的snippetSupport设置直接删掉。
检查gopls版本
旧版本的gopls可能存在experimentalPostfixCompletions功能的bug,先运行gopls version查看当前版本,若不是最新版,用:MasonUpdate gopls命令更新。确认补全触发机制正常
检查你的补全插件(比如nvim-cmp)的触发配置,确保输入"iferr"时能正常触发补全。可以查看nvim-cmp的配置,确认autocomplete处于开启状态,且触发字符包含必要内容。用:LspInfo验证配置加载状态
运行:LspInfo查看gopls的实际生效配置,确认experimentalPostfixCompletions是否显示为true。如果这里显示false,说明配置没有正确传递,需要检查配置文件是否存在语法错误。
内容的提问来源于stack exchange,提问作者Al Cher

