如何在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开发),步骤如下:
- 安装插件(以packer为例):
use 'tpope/vim-repeat'
- 修改映射代码,让操作可被重复:
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
相关产品推荐
相关产品推荐

