You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:47:03