我正在阅读史蒂夫·洛(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的工作(返回正常模式)。如我错了请纠正我。

最佳答案

:ino <C-C> <Esc>

^ C通常是从这里获取我的当前键,如果您有autocmd,则无需运行C-C即可成为您的 friend 。

关于使用CTRL-C而不是ESC时不会发生Vim InsertLeave事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10757020/

10-12 21:47