在Vim中,除了按ESC键外,还有其他离开插入模式的方法吗?

16

有几个命令会执行操作后进入插入模式,那么是否有命令可以离开插入模式并执行操作呢?

例如,我经常执行以下操作...

control[ : w return

在创建映射之前,是否已经有Vim命令可以执行此操作呢?


如果我理解正确的话,您想要退出插入模式并保存文件?是这样吗? - Jack M.
5
好的,但是“是”只有三个字。现在我已经超过了15个字。 - Ethan
据我所知,vim中没有本地命令可以像那样保存文件,但是你可以使用我提供的imap来实现。就个人而言,我尽量不使用插入模式映射。我喜欢将各种模式分开。 - Jack M.
5个回答

26

除了 Esc (与 ^[ 相同) 之外,^C也可以退出插入模式。


2
我真的不记得我在哪里找到那个快捷键,但是ALT+0也可以退出插入模式,我觉得这个快捷键非常容易按。 - vdegenne
@vdegenne:这是因为在终端上按下Alt+0会发送两个字符Esc0Esc退出插入模式,然后0移动到行的开头,就像分别按下这两个键一样。 - Greg Hewgill

18
我能想到的唯一一个是,它可以让你在正常模式下运行一个命令,然后回到插入模式。例如,a<c-o>~b将产生Ab

但它不会做事情,对吧? - Mykola Golubyev
1
不,你是对的-它只允许你做事情,它并没有为你"做事情",可以这么说。 - David Wolever
记录一下: imap <Leader>w <C-o>:w<CR> “确实会做事情”。为映射选择一个合适的按键组合,然后就可以使用了。 - kotarak
啊,是的,我没有考虑到提及imap,因为我认为发帖者是在询问“标准”命令。非常好的观点。 - David Wolever

9
如果您想将一些按键映射到诸如在插入模式下保存文件之类的操作,可以使用 imap 命令。 这将绑定 F2 键以退出插入模式并保存文件:
:imap <F2> <Esc>:w<CR>

这将F2绑定到退出插入模式、保存文件和重新进入插入模式:

:imap <F2> <Esc>:w<CR>a

或者:

:imap <F2> <C-o>:w<CR>

1
我的保存映射是Ctrl+S: noremap <C-S> :update<CR> vnoremap <C-S> <C-C>:update<CR> inoremap <C-S> <ESC>:update<CR> 在Mac上,我将iTerm2的Cmd+S绑定到Ctrl+S。如果我处于插入模式,则会将其退出插入模式。 - Steven Lu

3

按下 Alt 键加上相应的命令可以在插入模式下执行命令,例如参考文献

alt+o:打开新行

alt+A:追加内容


2

在evim中按Ctrl-L会退出插入模式,那么为什么在普通的vim中不行呢?将以下内容添加到您的vimrc文件中:

:imap <C-l> <Esc>

或者,如果您不想配置vim,请使用Ctrl-[,正如其他人建议的那样。


谢谢,我在终端中复制/粘贴了一串命令,其中已经写有“vim”,结果我被困在无法退出的INSERT模式vim中。按下Ctrl+L解决了这个问题。 - mveroone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接