在插入模式下Vim映射esc键而不会丢失撤消序列?

时间:2017-11-19 15:26:52

标签: vim key-bindings

我有一个关于Vim的问题。到目前为止,我认为地图只是平等的命令。这就是事情。我将imap <c-o> <esc>o放入.vimrc文件中以开始新行。至于为什么不只是映射<CR>,我遵循Drew Neil的建议,使用esco命令进行替换,以便我可以使用undo命令行按行。但是,当我使用<c-o>开始一行时,undo命令不起作用,这意味着即使我映射{{1>,Vim也不会切换模式}} !我不知道Vim的功能还是bug?如果你在某些方面帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用inoremap <c-o> <c-g>u<esc>o来获得所需的行为。 <c-g>u会中断当前的撤消序列(请参阅:h i_CTRL-G_u)。

我实际上从未想过为什么在插入映射中使用<esc>并不算作破坏撤消序列。我当然可以理论化为什么,但这样做在SO答案中是危险的,所以我不会:)

编辑添加:更简单的是:inoremap <c-o> <c-g>u<cr>