Vim 在插入模式下映射 esc 键而不丢失撤消序列?
Vim map esc key in insert mode without losing undo sequence?
我有一个关于 Vim 的问题。到目前为止,我将 map 理解为相等的命令。事情是这样的。我将 imap <c-o> <esc>o
放入我的 .vimrc
文件中以开始一个新行。至于不直接映射<CR>
的原因是我听从了Drew Neil的建议,使用esc
和o
命令来替换,这样我就可以使用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>
我有一个关于 Vim 的问题。到目前为止,我将 map 理解为相等的命令。事情是这样的。我将 imap <c-o> <esc>o
放入我的 .vimrc
文件中以开始一个新行。至于不直接映射<CR>
的原因是我听从了Drew Neil的建议,使用esc
和o
命令来替换,这样我就可以使用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>