我正在通过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不再有效的事件?
编辑|嗯,添加一个inoremap <C-c> <ESC>
可以解决它,据我所知,绝对没有副作用,因为C-c已经完成了ESC所做的事情(回到正常模式)。如果我错了,请纠正我。
答案 0 :(得分:11)
:ino <C-C> <Esc>
^ C通常是现在开始使用的钥匙,如果你有一个autocmd,你需要不运行C-C成为你的朋友。
答案 1 :(得分:2)
这在: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.
像往常一样,Bram实现了设计目标。
:help design-documented