В чем разница между <C-C> и <C - [> в vim?

Один из лучших советов по использованию vim, который я узнал до сих пор, заключается в том, что вместо клавиши Esc можно нажать Ctrl + C или Ctrl + [. Однако я использую клавиатуру dvorak, поэтому Ctrl + [ немного недоступна для меня, поэтому я в основном использую Ctrl + C. Теперь я где-то читал, что эти две комбинации клавиш фактически не имеют точно такого же поведения и что лучше использовать Ctrl + [. Я до сих пор не сталкивался с какими-либо проблемами, хотя хотел бы знать, в чем разница между ними?

Ответ 1

Согласно документации Vim, Ctrl + C не проверяет аббревиатуры и не вызывает событие автокоманды InsertLeave, а Ctrl + [ делает.

Один из вариантов заключается в использовании следующего для переназначения Ctrl + C

inoremap <C-c> <Esc><Esc>

Ответ 2

Чрезвычайно поздний ответ, но у меня был один и тот же вопрос, и я нашел один практический пример, который помогает объяснить разницу, так почему бы и нет.

Если вы выберете визуальный блок, а затем измените его на c или добавьте что-то в конец с помощью A, если вы выйдете с <Esc>, то такое же изменение произойдет во всех строках визуальный блок (что действительно полезно! См. :help v_b_A); если вы выйдете с помощью <C-c>, этого не произойдет, только одна строка получит изменение. Возможно, есть и другие подобные вещи, которые я не понимал, что мне не хватает <C-c>...

Ответ 3

Как оказалось, <C-[> точно совпадает с Esc, они одинаковы. Поэтому нет никакой необходимости задаваться вопросом о какой-либо разнице.:)