背景
有时在vim中进行编辑时,可能会在用户不希望存在的文件中添加额外的字符,因为他在匆忙中处于“插入模式”并急于完成某些操作。
幸运的是,即使用户匆忙,按ESC几次总是足以让他们退出插入模式并进入正常模式,毫无意外。
问题:
是否有一个键绑定对插入模式的工作方式相同?按“i”可以进入插入模式,但是如果多次按下它,您将开始在文件中插入字母“i”。
目标:
目标是让一些键绑定回到插入模式,用户甚至可以在闭眼时多次按下,并且仍然不担心意外字符被放入文件中的“意外”。
答案 0 :(得分:4)
<C-o>i
应该做到这一点。 <C-o>
让你暂时进入正常模式,但是对于只有一个命令,如果该命令是“转到插入模式”,那么你只需返回那里。
编辑:我现在可以重现您的错误消息,看起来最简单的事情就是:
:nmap <C-i> i
:imap <C-i> <C-o>i
如果不在插入模式下映射<C-i>
,但仅在正常模式下映射,则反复点击<C-i>
将是幂等的。
感谢Benoit提到<C-i>
在插入模式下插入标签。
答案 1 :(得分:4)
您应该在不同的模式下执行不同的映射:
:inoremap <F1> <NOP>
:nnoremap <F1> i
:vnoremap <F1> <esc>i
:cnoremap <F1> <C-C>i
:onoremap <F1> <esc>i
然后点击F1将进入插入模式。
您还可以切换'insertmode'
设置(:set insertmode
):在此模式下,插入模式是默认模式(使用Escape切换到该模式,然后使用CTRL进入正常模式 - 升。
答案 2 :(得分:2)
bitmask给出的答案有效,但它显然有产生错误信息的副作用:
E37:自上次更改后没有写入(添加!覆盖)
除非您已将vimrc配置为关闭该消息。
但另一种似乎无法生成错误消息的替代方案:
CTRL-C i
这似乎适用于标准的vim。