Чи порушує використання ctrl + c замість esc для виходу з режиму вставки щось в vi?


15

Під час використання vi ви можете вийти з режиму вставки за допомогою Ctrl+ Cзамість більш традиційного Esc. Чи є ситуації, коли було б небажано використовувати для перших замість останніх? Це порушує щось, крім найкращої практики?


Небажано випадково вдарити колишнього, що спричинило вас за помилки Type :quit<Enter> to exit Vimі змусило Google повернутися назад. Якщо натиснути, iви повернетесь до режиму.
Номенон

Відповіді:


9

Ctrl-Cі Escне є однаковими в vi/ vimу більшості режимів, включаючи режим вставки. Різниця полягає в Escзапуску абревіатур, а Ctrl-cні. Чи важливо це для вас, залежить від того, ви або будь-які додатки, якими ви користуєтесь, використовуєте скорочення.


Зверніть увагу , що безпечніше припустити , Escі Ctrl-Cробити НЕ означає те ж саме в vim. Ще один приклад із цього ж сайту - це при виході з режиму вставки блоку (не в vi).


Добре знати, але моє питання стосувалося виходу з режиму вставки.
MDMarra

@MDMarra Doh, неправильно прочитайте своє запитання. Режим вставки все ще відрізняється: див. Оновлену відповідь.
jw013

1
Ось найважливіша різниця, з якою мені довелося зіткнутися: багаторядкова вставка з режимом візуального блоку працює з Esc, а не з Cc.
захоплення

4

Я думаю, ти маєш на увазі vim, ні vi.

Це дійсно працює vim, хоча я б не використовував його, якщо б я не був впевнений на 100%, що ніколи не торкнуся операційної системи, яка не є Linux. Причина полягає в тому, що інші ОС можуть мати власні реалізації vi, які не реалізують це, і ви можете виявити, що при запуску viна цих платформах Ctrl-C має свою традиційну поведінку: переривайте процес і залишайте свій термінал у дивному стані .


3
Чи можете ви вказати на будь-яку viреалізацію, яка існує і сьогодні, яка не справляється Ctrl-C? Дивіться мою відповідь про справжню різницю.
jw013

2

Якщо ви маєте на увазі vim, є незначна різниця. CTRL-Cне перевіряє на абревіатури та не викликає InsertLeaveподії. Таким чином, ви або плагіни визначили будь-які autocmdзаяви, від яких залежить InsertLeave, вони не запускаються.

З офіційної документації 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.

Ви можете задати відображення для CTRL-Cдо <esc>, то це викличе InsertLeave.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.