Neovim的Quarto kickstarter为何无法自动补全引用?
调试cmp-pandoc-references补全失效的步骤
针对你遇到的Quarto文件中bib引用无法通过cmp-pandoc-references补全,但QuartoPreview正常解析的问题,按以下步骤排查:
检查插件健康状态
在Neovim中执行:checkhealth cmp和:checkhealth cmp-pandoc-references,查看输出中是否有依赖缺失、路径错误或加载失败的提示,比如pandoc未被识别、bib文件路径无效等。确认bibliography路径有效性
- 确保Quarto文件中的
bibliography: test.bib使用WSL的Linux路径格式(避免Windows路径),若test.bib在当前文件目录下,可明确写为./test.bib。 - 在Neovim中执行
:echo expand('%:p:h')获取当前文件的绝对路径,再通过:!ls %:p:h/test.bib验证文件是否存在且可访问。
- 确保Quarto文件中的
验证pandoc解析bib的能力
在WSL终端中执行/usr/bin/pandoc --bibliography=test.bib --listings(替换为你的bib实际路径),若pandoc能正常运行且无报错,说明bib文件本身无问题;若报错,先解决pandoc与bib的兼容性问题。检查cmp触发与源状态
- 输入
@后执行:CmpStatus,查看是否加载了pandoc_references源。 - 确认cmp的触发字符包含
@,可在cmp配置中检查:cmp.setup({ sources = cmp.config.sources({ { name = 'pandoc_references' }, -- 其他补全源... }) })
- 输入
开启插件调试日志
在Neovim配置中添加vim.g.cmp_pandoc_references_debug = true,重启后触发补全操作,再执行:messages查看日志,寻找解析失败的具体原因(如未找到bib文件、pandoc调用错误)。调整补全源优先级
若其他补全源(如lsp、path)优先级过高,可能覆盖pandoc-references的结果,可在cmp配置中调高其优先级:cmp.setup({ sources = cmp.config.sources({ { name = 'pandoc_references', priority = 10 }, { name = 'nvim_lsp', priority = 9 }, { name = 'path', priority = 8 }, }) })
内容的提问来源于stack exchange,提问作者Tom Slee
相关产品推荐
相关产品推荐

