10

我正在阅读 Steve Losh 的Learn Vimscript the Hard Way并已添加到我的 .vimrc

" make status line red while in insert mode
augroup hi_statusline
  autocmd!
  autocmd InsertEnter * hi StatusLine ctermbg=15  ctermfg=9
  autocmd InsertLeave * hi StatusLine ctermbg=238 ctermfg=253
augroup END

然而,我注意到一个奇怪的行为。有时我C-c会退出插入模式,该模式运行良好并已记录在案。当我这样做时,不会触发 InsertLeave 事件。当我使用它时ESC,它工作正常。这是 vim 的一个已知奇怪之处吗?是否有解决方法,通过挂钩另一个表明 InsertMode 不再活动的事件?

编辑 | 嗯,添加 ainoremap <C-c> <ESC>解决了它,据我所知绝对没有副作用,因为 Cc 已经做了 ESC 所做的事情(回到正常模式)。如我错了请纠正我。

4

2 回答 2

15
:ino <C-C> <Esc>

^C 通常是让我离开这里的键,如果你有一个自动命令,你不需要运行 CC 成为你的朋友。

于 2012-05-25T15:25:09.770 回答
3

这记录在:help i_CTRL-C

CTRL-C  Quit insert mode, go back to Normal mode.  Do not check for
        abbreviations.  Does not trigger the |InsertLeave| autocommand
        event.

像往常一样,布拉姆不辜负设计目标。

:help design-documented
于 2013-12-23T22:49:24.630 回答