When using vi, you can exit insert mode with Ctrl + C instead of the more traditional Esc. Are there any situations where it would be undesirable to use for former instead of the latter? Does it break anything other than best practice?
Ctrl-C and Esc are not the same in
vim in most modes, including insert mode. The difference is Esc triggers abbreviations while Ctrl-c does not. Whether this matters to you depends on whether you or any plugins you use make use of abbreviations.
Note that it is safer to assume Esc and Ctrl-C do not mean the same thing in
vim. Another example from this same site is when exiting block insert mode (not in
I think you mean
This does indeed work in
vim, though I wouldn't use it unless I was 100% sure I would never touch a non-Linux operating system, ever. The reason is that other OSes may have their own implementations of
vi, which do not implement this, and you might find that when running
vi on those platforms, Ctrl-C has its own traditional behavior: interrupt the process and leave your terminal in a weird state.
If you're referring to
vim, there is a slight difference.
CTRL-C does not check for abbreviations, and it does not trigger the
InsertLeave event. So you or plugins have defined any
autocmd statements that depend on
InsertLeave, they won't get triggered.
From the official documentation http://vimhelp.appspot.com/insert.txt.html :
<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode. Finish abbreviation. CTRL-C Quit insert mode, go back to Normal mode. Do not check for abbreviations. Does not trigger the InsertLeave autocommand event.
You can define a mapping for
<esc>, then it will trigger