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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:50:22