Vim可视化模式下通过Keymap替换选中文本为当前日期的问题
Visual模式下替换选中文本为当前日期的正确按键映射
你的代码问题在于使用insert命令只会在选中内容的上方插入新行,不会处理Visual模式下选中的区域。要实现替换选中内容为日期,有以下两种简洁的解决方式:
方法一:利用Normal模式的Change动作
直接通过normal!命令调用Vim原生的c动作(删除选中内容并进入插入模式),随后插入日期:
keymap.set("x", "<leader>nf", function() vim.cmd(string.format("normal! c%s", os.date("%d.%m.%Y"))) vim.cmd("normal! <Esc>") -- 插入完成后回到正常模式 end)
方法二:使用表达式寄存器替换
借助Vim的表达式寄存器(=)存储日期值,再替换选中内容:
keymap.set("x", "<leader>nf", function() vim.fn.setreg("=", os.date("%d.%m.%Y")) vim.cmd('normal! "=P') -- 用表达式寄存器内容替换选中区域 end)
两种方法都能实现删除选中内容并替换为当前日期的需求,你可以根据习惯选择。
内容的提问来源于stack exchange,提问作者Aninsi Sasberg
相关产品推荐
相关产品推荐

