求无插件Neovim Lua快捷键:基于当前文件路径打开补全菜单
Neovim无插件实现当前目录快捷文件导航(带自动补全)
需求说明
通过Lua配置快捷键,打开当前文件所在路径的补全菜单,无需手动按Tab触发,且支持用Ctrl+n/Ctrl+p上下选择文件。
解决方案1:自动触发补全(无需修改全局选项)
直接通过Lua函数实现,执行命令后自动发送Tab键唤起补全菜单:
vim.keymap.set("n", "<leader>a", function() -- 构造当前文件所在目录的:e命令 vim.cmd("e " .. vim.fn.expand('%:h') .. "/") -- 自动发送Tab键触发补全 vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Tab>", true, false, true), 'n') end, { noremap = true, silent = true })
使用时按下<leader>a,会直接弹出当前目录的文件补全菜单,可立即用Ctrl+n向下选、Ctrl+p向上选,选中后按回车即可打开文件。
解决方案2:通过全局选项让补全自动弹出
先配置Vim的补全相关选项,让命令行输入时自动唤起补全菜单:
-- 开启增强型命令行补全菜单 vim.o.wildmenu = true -- 设置补全模式:输入时自动弹出补全,匹配最长公共前缀,按回车选中 vim.o.wildmode = "full:longest,full"
然后配置快捷键(和你原有的类似,但无需手动按Tab):
vim.keymap.set("n", "<leader>a", ":e <C-R>=expand('%:h')<CR>/", { noremap = true, silent = true })
配置完成后,按下<leader>a会直接弹出当前目录的补全菜单,同样支持Ctrl+n/Ctrl+p导航。
补充说明
- 两种方案均为无插件实现,依赖Neovim内置功能;
- 你原有的
<leader>e快捷键是直接打开Netrw文件管理器,而上述方案是直接唤起文件选择补全,更适合快速打开单个文件。
内容的提问来源于stack exchange,提问作者lmixa
相关产品推荐
相关产品推荐

