Если предыдущей нажатой клавишей была ESC, то это потому, что существуют клавиши, которые могут генерировать escape-последовательности, начинающиеся с ESC O. Например, в зависимости от режима клавиши курсора клавиша со стрелкой вверх может генерировать ESC O A. escape-последовательность.
Если он видит частичную escape-последовательность, vim будет ждать короткое время ожидания, чтобы увидеть, получен ли другой символ, который соответствует одной из escape-последовательностей, определенных для вашего типа терминала. Если нет, он будет обрабатывать символы как отдельные нажатия клавиш. Вы можете проверить это, введя заглавную букву А в ожидании открытия линии, чтобы увидеть, рассматривает ли она ее как стрелку вверх.
Есть некоторые настройки vim, которые можно использовать для управления этим. :set ttimeoutlen=100
изменит время ожидания escape-последовательности на 100 мс. :set noesckeys
полностью отключит распознавание ключей, отправляющих escape-последовательность в режиме вставки. Кроме того, vi-совместимый режим не будет иметь этой проблемы, потому что esckeys выключен в этом режиме - вот почему vim -u NONE
работает.
-u NONE
но у нас все еще нет подтверждения от ОП.