如何通过vim-repeat使coc.nvim诊断导航快捷键支持.重复?
让coc.nvim诊断导航快捷键支持
.重复执行 要让[g和]g这两个诊断导航快捷键能被.命令重复执行,只需把原来的直接映射改成包含repeat#set调用的复合操作,让vim-repeat插件识别并记录这个动作。下面是两种可行的Lua配置方案:
方案一:用Lua匿名函数实现
这种写法更贴合Neovim Lua配置的风格:
-- 使用`[g`和`]g`导航诊断,支持"."重复执行 keyset("n", "[g", function() -- 向vim-repeat注册当前可重复动作 vim.fn["repeat#set"]("<Plug>(coc-diagnostic-prev)", vim.v.count) -- 执行coc的上一个诊断跳转 vim.cmd("normal! <Plug>(coc-diagnostic-prev)") end, {silent = true}) keyset("n", "]g", function() vim.fn["repeat#set"]("<Plug>(coc-diagnostic-next)", vim.v.count) vim.cmd("normal! <Plug>(coc-diagnostic-next)") end, {silent = true})
方案二:用Vimscript命令组合实现
直接在映射右侧拼接Plug调用和repeat注册命令,更简洁:
-- 使用`[g`和`]g`导航诊断,支持"."重复执行 keyset("n", "[g", "<Plug>(coc-diagnostic-prev)<Cmd>silent! call repeat#set('<Plug>(coc-diagnostic-prev)', v:count)<CR>", {silent = true}) keyset("n", "]g", "<Plug>(coc-diagnostic-next)<Cmd>silent! call repeat#set('<Plug>(coc-diagnostic-next)', v:count)<CR>", {silent = true})
简单说明
repeat#set("<Plug>(...)", v:count)的作用是告诉vim-repeat:当前执行的动作对应指定的Plug映射,同时记录执行时的计数(比如按3[g跳转3次,.也会重复3次)- 两种方案效果一致,选你习惯的写法就行
内容的提问来源于stack exchange,提问作者user8622655
相关产品推荐
相关产品推荐

