При использовании vi вы можете выйти из режима вставки с помощью Ctrl+ Cвместо более традиционного Esc. Существуют ли ситуации, когда было бы нежелательно использовать первое вместо второго? Это нарушает что-то кроме лучшей практики?
15
Type :quit<Enter> to exit Vim
и заставляет меня искать ответ. Нажатиеi
возвращает вас обратно в режим вставки.Ответы:
Ctrl-Cи Escне совпадают в
vi
/vim
в большинстве режимов, включая режим вставки. Разница в том, что Escтриггеры сокращений пока Ctrl-cнет. Имеет ли это значение для вас, зависит от того, используете ли вы или какие-либо плагины, которые вы используете, сокращения.Обратите внимание , что безопаснее предположить , Escи Ctrl-Cделать не означает то же самое в
vim
. Другой пример с этого же сайта - выход из режима вставки блока (не вvi
).источник
Я думаю, что вы имеете в виду
vim
, нетvi
.Это действительно работает
vim
, хотя я бы не использовал его, если бы не был уверен на 100%, что никогда не коснусь операционной системы, отличной от Linux. Причина в том, что другие ОС могут иметь свои собственные реализацииvi
, которые не реализуют это, и вы можете обнаружить, что при работеvi
на этих платформах Ctrl-C имеет свое традиционное поведение: прерывать процесс и оставлять ваш терминал в странном состоянии. ,источник
vi
реализацию, которая все еще существует сегодня, которая не обрабатываетCtrl-C
? Смотрите мой ответ для реальной разницы.Если вы имеете в виду
vim
, есть небольшая разница.CTRL-C
не проверяет наличие сокращений и не вызываетInsertLeave
событие. Таким образом, вы или плагины определили любыеautocmd
операторы, которые зависят от тогоInsertLeave
, будут ли они срабатывать.Из официальной документации http://vimhelp.appspot.com/insert.txt.html :
Вы можете задать отображение для
CTRL-C
к<esc>
, то это вызоветInsertLeave
.источник