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

如何在Neovim中重做包含按键映射的最后一条命令?

解决方法

方法1:让@:能重复映射执行的命令

默认情况下,按键映射里直接执行的命令不会被记录到命令历史,所以@:无法调用。你可以手动把命令添加到历史中,修改映射代码如下:

vim.keymap.set("n", "<leader>gd", function()
  local cmd = "Lspsaga goto_definition"
  vim.cmd(cmd)
  -- 将命令添加到命令历史
  vim.fn.histadd("cmd", cmd)
end, { desc = "Lspsaga goto definition" })

修改后,按@:就能重复执行跳转到定义的操作。

方法2:让.命令支持重复自定义映射操作

.命令默认只识别原生普通模式操作,要让它支持自定义映射,可使用vim-repeat插件(tpope开发),步骤如下:

  1. 安装插件(以packer为例):
use 'tpope/vim-repeat'
  1. 修改映射代码,让操作可被重复:
vim.keymap.set("n", "<leader>gd", function()
  vim.cmd("Lspsaga goto_definition")
  -- 告诉vim-repeat该如何重复当前操作
  vim.b.repeat_action = function()
    vim.cmd("Lspsaga goto_definition")
  end
end, { desc = "Lspsaga goto definition" })

安装并配置后,按.就能重复执行<leader>gd的跳转到定义操作。

方法3:利用Lspsaga自身特性

Lspsaga的goto_definition跳转后,你可以用<C-o>返回上一位置,但如果需要连续跳转定义,前两种方法更适配你的需求。

内容的提问来源于stack exchange,提问作者woc1111

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:27:05