Vim - задержка при выходе из визуального режима


8

Если я нажимаю ESC для выхода из визуального режима после того, как я выделю какой-либо текст, заметная задержка перед тем, как текст не будет выделен, и я вернусь в нормальный режим (даже если я выберу только 1-2 символа). Можно ли избежать этой задержки?

vim  delay 

Ответы:


2

Это может быть вызвано привязкой к некоторым дополнительным функциям. Например, я использую плагин tabbar, и он отображает 0-9 для переключения на буфер номеров. Всякий раз, когда клавиша сопоставляется с дополнительными функциями, подобными этой, vim ждет несколько секунд после ее нажатия, чтобы увидеть, собираетесь ли вы нажимать какие-либо дополнительные клавиши.

Чтобы увидеть, есть ли дополнительные сопоставления, запустите :mapи найдите <Esc>в первом столбце. При запуске без каких-либо параметров, :mapбудут перечислены все пользовательские сопоставления. Если вы хотите перечислить только сопоставления в визуальном режиме, запустите :vmap.

Если есть дополнительные сопоставления, я не знаю, как удалить паузу, кроме удаления сопоставлений. Пауза необходима для того, чтобы vim однозначно знал, какое действие вы намерены предпринять.


1
В терминалах, подобных VT100 (включая терминал Xterm / Rxvt / PuTTY / GNOME), Escтакже есть префикс для всех специальных клавиш, включая даже клавиши со стрелками.
Гравитация

@grawity: True, но Vim использует другие значения времени ожидания для этих escape-последовательностей, чем для отображений, поэтому обработка этих escape-последовательностей обычно не вызывает проблемы, о которой здесь сообщается. См :help 'timeout'.
garyjohn

Спасибо, вот и все. Теперь мне осталось только найти, какие именно сопоставления мешают моему использованию.

0

У меня нет привязки, привязанной к <ESC> глобально или для визуального режима (вызов: verbose vmap <ESC> не дает результатов), но при выходе из визуального режима все еще существует значительная задержка. Даже на свежих установках без vimrc задержка присутствует. Использование <Cc> приводит к немедленному выходу из визуального режима.

Поскольку я не люблю нажимать <Cc> для выхода из любого режима, в настоящее время я отображаю <ESC> на <Cc> в визуальном режиме. Это выходит из визуального режима с использованием <ESC> без какой-либо задержки.

:vmap <ESC> <C-c>

Или вставьте следующую строку в ваш vimrc

vnoremap <ESC> <C-c>

Это не будет работать, если у вас есть сопоставления глобального или визуального режима, связанные с <ESC>.


-2

Все, что вы можете сделать, это использовать CTRL+ Cдля выхода из визуального режима, что должно избежать задержки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.