【问题标题】:Vim timestamp in insert mode results in mapped key插入模式下的 Vim 时间戳导致映射键
【发布时间】:2018-03-10 09:31:10
【问题描述】:

我在.vimrc 中添加了以下几行:

nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>

在正常模式下,它按预期工作,即插入时间戳。 但是,在插入模式下,我插入了&lt;F3&gt;。我做错了什么以及如何让它发挥作用?

更新:我意识到在 Gvim 中一切正常,问题仅在于终端 vim(我尝试了 lxterminal 和 gnome-terminal)。如果有帮助,我在重新映射 Esc 字符时遇到了类似的问题,在 Gvim 中可以正常工作,但在 Vim 中不行。

更新 2:虽然我不能排除我可能对系统所做的其他一些更改,但升级到较新的 vim 版本很可能会解决问题。重新映射 Esc 现在也可以工作,即终端 Vim(8.1 版,2018 年 5 月 18 日)的行为与 Gvim 一样。

【问题讨论】:

  • 它在这里按预期工作。不过,imap 是递归映射,因此它可能会扩展其他映射。看看用inoremap 替换它是否有帮助。
  • 感谢@romainl,但 inoremap 没有帮助。

标签: vim timestamp keymapping


【解决方案1】:

可能是您启用了:set paste粘贴模式 阻止任何插入和命令行模式映射生效。仅在将文本粘贴到终端之前临时输入(通常通过'pastetoggle' 中定义的键。这仅在终端中是必需的(并且只有那些没有括号粘贴模式),GVIM 可以自行检测粘贴。这会影响任何插入模式映射。您可以通过

检查
:verbose set paste?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多