24

Когда я использую большинство команд, они вступают в силу немедленно. Однако, когда я использую команду O , я вижу, что буква "O" заменяет текущий символ примерно на секунду, затем текущий символ возвращается, и новая строка вставляется и открывается.

У меня нет такой проблемы с командой o (откройте новую строку ниже и вставьте).

Если это что-то меняет, я использую vim из bash в терминале Gnome в Ubuntu 10.04.

1 ответ1

25

Если предыдущая нажатая клавиша была ESC, то это потому, что существуют клавиши, которые могут генерировать escape-последовательности, начинающиеся с ESC O. Например, в зависимости от режима клавиши курсора, клавиша со стрелкой вверх может генерировать escape-последовательность ESC O A.

Если он видит частичную escape-последовательность, vim будет ждать короткое время ожидания, чтобы увидеть, получен ли другой символ, который соответствует одной из escape-последовательностей, определенных для вашего типа терминала. Если нет, он будет обрабатывать символы как отдельные нажатия клавиш. Вы можете проверить это, введя заглавную букву А в ожидании открытия линии, чтобы увидеть, рассматривает ли она вместо нее стрелку вверх.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .