Ctrl-C is not Escape
I’d like to think I’m not one to be pedantic about things, but there’s one common misconception that has been making the rounds that annoys me to no end.
Ctrl-c is not equivalent to
Escape. There are two key differences that can be demonstrated by the following two snippets.
Ctrl-c skips any pending insert mode abbreviations.
In a vim session type the following:
:iabbrev teh the
This is a common misspelling and an oft used abbreviation. Now enter insert mode and type
teh<Space>. Notice that the space completed the abbreviation and it now says
the instead of
teh. Now do the same but instead insert
teh<Esc>. The abbreviation still happens. Do the same with
teh<Ctrl-c>. The abbreviation is not completed.
Ctrl-c does not fire the InsertLeave autocmd event.
Dump the following snipped into “cursorline.vim” and launch vim with “vim -u cursorline.vim”.
augroup CursorLine autocmd! autocmd InsertEnter * set nocursorline autocmd InsertLeave * set cursorline augroup END set cursorline
This snippet enables ‘cursorline’ while in normal mode and disables it in insert mode. If you go into insert mode and exit with
Esc you’ll notice that the cursorline is re-enabled, however, if you enter insert mode and exit with
Ctrl-c you’ll see that it is never re-enabled.
These two things probably don’t seem that important to you, but what about the developers of the plugins you use? If you’re using a plugin that relies on either of these two features you’re risking some functionality breaking by using
Ctrl-c. If you must use something other than
Ctrl-[ instead as these are equivalent.