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

Vim map esc key in insert mode without losing undo sequence?

我有一个关于 Vim 的问题。到目前为止,我将 map 理解为相等的命令。事情是这样的。我将 imap <c-o> <esc>o 放入我的 .vimrc 文件中以开始一个新行。至于不直接映射<CR>的原因是我听从了Drew Neil的建议,使用esco命令来替换,这样我就可以使用undo命令行按行。但是,当我使用 <c-o> 开始一行时,undo 命令不起作用, 这意味着即使我映射 Vim 也不会切换模式 <esc>!不知道Vim是feature还是bug?如果你能在某些方面帮助我,我将不胜感激。

您可以使用 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>