使用Packer加载neosolarized插件时Neovim出现循环加载错误
问题成因
- 插件加载时机过早:在Packer完成插件配置后立即调用
require("neosolarized"),此时Packer尚未完成插件的加载与初始化流程,Neovim的runtime路径中还未注册该插件模块。 - 未利用Packer的加载钩子:没有借助Packer提供的回调机制,确保插件安装加载完成后再执行初始化逻辑。
修复方案
方案一:使用Packer的config回调初始化插件
修改配置文件中的Packer启动块,为neosolarized.nvim添加config回调,插件加载完成后自动执行初始化:
local status, packer = pcall(require, "packer") if (not status) then print("Packer is not installed") return end vim.cmd [[packadd packer.nvim]] packer.startup(function(use) use 'tjdevries/colorbuddy.nvim' use { 'svrana/neosolarized.nvim', -- 插件加载完成后执行初始化 config = function() local status, neosolarized = pcall(require, "neosolarized") if not status then print("Failed to load neosolarized") return end -- 可在此添加neosolarized的自定义配置 -- neosolarized.setup({ -- comment_italics = true, -- background_set = true, -- }) end } end)
方案二:延迟到Vim启动完成后加载插件
通过Neovim的自动命令,延迟到VimEnter事件触发(即Neovim完全启动后)再加载插件:
local status, packer = pcall(require, "packer") if (not status) then print("Packer is not installed") return end vim.cmd [[packadd packer.nvim]] packer.startup(function(use) use 'tjdevries/colorbuddy.nvim' use 'svrana/neosolarized.nvim' end) -- 延迟到Vim完全启动后加载插件 vim.api.nvim_create_autocmd("VimEnter", { callback = function() local status, neosolarized = pcall(require, "neosolarized") if not status then print("neosolarized failed to load", pcall(require, 'neosolarized')) return end -- 可在此添加neosolarized的自定义配置 end })
额外检查步骤
- 确认
~/.local/share/nvim/site/pack/packer/start/目录下存在neosolarized.nvim和colorbuddy.nvim两个文件夹,若不存在:- 删除Packer编译文件:
rm ~/.config/nvim/plugin/packer_compiled.lua - 重新打开Neovim,执行
:PackerSync命令
- 删除Packer编译文件:
内容的提问来源于stack exchange,提问作者Nozomi Iida
相关产品推荐
相关产品推荐

