Почему vim задерживается на секунду, когда я использую команду 'O' (откройте новую строку выше и вставьте)?


26

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

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

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

Ответы:


27

Если предыдущей нажатой клавишей была 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работает.


Просто чтобы уточнить, мой «эксперимент» с файлом строки 140 КБ проходил в режиме полного vim с моим стандартным набором плагинов и типов файлов. Я вижу, где вы могли прийти к выводу, что я использовал, -u NONEно у нас все еще нет подтверждения от ОП.
Msw

Вот Это Да! Некоторое время это было немного раздражающим, но я никогда не думал об этом. имеет смысл сейчас. Esc OA действительно работает как стрелка вверх.
Виталий Кушнер

2
:set noesckeysвероятно, это не то, что вам нужно - установите его, а затем нажмите клавиши со стрелками в режиме вставки, даже если вы не планируете их использовать, вы не хотите, чтобы они это делали! noesckeys также не ускоряет работу вне режима вставки. ttimeoutlenэто определенно путь
JonnyRaa
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.