感谢提供完整的 init.lua
内容!现在问题非常清晰了。
你没有使用标准的 LazyVim starter 配置,而是手动集成了 LazyVim/LazyVim
作为插件,并自定义了数据目录(D:/nvim-data
)。
在这种模式下,LazyVim 不会自动加载 lua/config/
或 lua/plugins/
下的用户配置,除非你显式启用。
✅ 正确解决方案:在 init.lua
中直接添加快捷键(推荐)
由于你的配置是手动集成 LazyVim,最可靠的方式是在 init.lua
中通过 User VeryLazy
事件添加映射。
修改你的 init.lua
(在末尾添加):
-- ========== 添加自定义快捷键 ==========
vim.api.nvim_create_autocmd("User", {pattern = "VeryLazy",callback = function()-- 复制绝对路径(含文件名)vim.keymap.set("n", "<leader>fyA", function()local path = vim.fn.expand("%:p")vim.fn.setreg("+", path)vim.notify("✅ Copied absolute path:\n" .. path, vim.log.levels.INFO)end, { desc = "Copy absolute path" })-- 复制相对路径(相对于项目根)vim.keymap.set("n", "<leader>fyr", function()local rel = vim.fn.fnamemodify(vim.fn.expand("%:p"), ":~:.")vim.fn.setreg("+", rel)vim.notify("✅ Copied relative path:\n" .. rel, vim.log.levels.INFO)end, { desc = "Copy relative path" })end,
})
✅ 为什么这个方法有效?
User VeryLazy
事件在所有插件(包括 LazyVim)加载完成后触发;- 直接调用
vim.keymap.set
,不依赖 LazyVim 的配置加载机制;- 路径会复制到系统剪贴板(
+
寄存器)。
🔧 验证步骤
- 保存
init.lua
; - 完全关闭 Neovide;
- 重新打开;
- 按
<space> ?
(或你的<leader>
+?
)查看快捷键列表; - 应能看到
fyA
和fyr
; - 打开一个文件,按
<space> fyA
,检查是否弹出通知并复制路径。
📌 补充说明
- 你的配置中
require("lazyvim.config")
只是检查 LazyVim 是否安装,不会加载用户配置; - LazyVim 的标准 starter 会自动处理
lua/plugins/
,但手动集成时不会; - 因此,在
init.lua
中直接定义是最稳妥的方式。
✅ 最终 init.lua
结构建议
-- 1. 设置数据路径
vim.g.base_data_dir = "D:/nvim-data"
vim.opt.rtp:prepend(vim.g.base_data_dir)-- 2. 安装 lazy.nvim
local lazypath = ...-- 3. 设置 LazyVim
require("lazy").setup({ ... })-- 4. 检查 LazyVim 是否安装
local lazyvim_ok, _ = pcall(require, "lazyvim.config")-- 5. ========== 添加自定义快捷键 ==========
vim.api.nvim_create_autocmd("User", {pattern = "VeryLazy",callback = function()-- 你的快捷键定义end,
})
🎯 现在就将快捷键代码粘贴到
init.lua
末尾,重启 Neovide 即可生效!
如果仍有问题,请提供:
- 按
<space> fyA
后是否有任何反应(如错误信息); :map <leader>fyA
的输出。