Nvim中自定义Luasnip代码片段不显示问题求助
问题:自定义VSCode风格片段无法在LuaSnip中加载
已配置nvim-cmp+LuaSnip,能正常使用rafamadriz/friendly-snippets的片段,但自定义片段无法显示,禁用官方片段后仍无效。
配置问题分析
从提供的代码来看,存在3个核心问题:
package.json路径与LuaSnip加载目录冲突html.json存在语法错误(缺失闭合大括号)- LuaSnip加载路径使用相对路径,易出现定位错误
修复步骤
1. 调整文件夹结构与package.json
将~/.config/nvim/package.json移动到~/.config/nvim/my-snippets目录下,同时修正文件内的片段路径(移除未创建的global.json条目,避免加载报错):
{ "name": "my-custom-snippets", "engines": { "vscode": "^1.11.0" }, "contributes": { "snippets": [ { "language": ["html", "jade", "pug", "eruby", "javascriptreact", "htmldjango", "astro", "blade"], "path": "./html.json" } ] } }
2. 修复html.json语法错误
在文件末尾添加缺失的闭合大括号,修正后的内容:
{ "html5c": { "prefix": "html5c", "body": [ "<!DOCTYPE html>", "<html lang=\"$1en\">", "\t<head>", "\t\t<meta charset=\"UTF-8\">", "\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">", "\t\t<title>$2</title>", "\t\t<link href=\"$3css/style.css\" rel=\"stylesheet\">", "\t</head>", "\t<body>", "\t$0", "\t</body>", "</html>" ], "description": "MCP HTML - Defines a template for a html5 document w/Bootstrap", "scope": "text.html" } }
3. 修正LuaSnip加载路径
使用Neovim内置变量指定绝对路径,避免相对路径定位错误,修改nvim-cmp配置中的加载代码:
-- 加载自定义VSCode风格片段 require("luasnip.loaders.from_vscode").lazy_load({ paths = { vim.fn.stdpath("config") .. "/my-snippets" } })
4. 验证操作
- 保存所有配置文件
- 重启Neovim
- 打开HTML文件,输入
html5c即可触发自定义片段补全
额外调试技巧:
- 执行
:LuaSnipListAvailable查看已加载片段列表,确认自定义片段是否存在 - 执行
:checkhealth luasnip排查加载过程中的错误日志
内容的提问来源于stack exchange,提问作者Michel Lecomte
相关产品推荐
相关产品推荐

