Pregunta:
Cuando presiono <Esc>
desde el modo de inserción, se demora alrededor de 1 segundo, pero si solo hago <ctrl+c>
en su lugar, es rápido.
Verifiqué si había mapeo con escape con :verbose imap <Esc>
, pero no encontré ninguno.
Respuesta:
Hay dos tipos de demora cuando presiona <esc>
en el modo de inserción:
retraso de mapeo
Si crea una asignación incorrecta que comienza con <esc>
:
inoremap <esc>x <esc>:echom "balabala"<cr>
Cuando presione <esc>
, vim esperará :h 'timeoutlen'
milisegundos para ver si la siguiente tecla es x
.
Debe evitar este tipo de mapeo en todos los modos, ejecuta los siguientes comandos para comprobar si existe este tipo de mapeo en todos los modos:
:verbose map <c-v><esc>
:verbose map! <c-v><esc>
^----------------press <c-v><esc> on your keyboard
El retraso del mapeo se controla mediante :h 'timeout'
y :h 'timeoutlen'
.
retraso del código clave
Muchos códigos de teclas de terminal comienzan con <esc>
, en mi máquina, <f5>
es ^[[15~
, ^[
es literal <esc>
. Cuando vim
recibe <esc>
de su terminal, espera :h 'ttimeoutlen'
milisegundos para ver si hay más caracteres en este código clave, si no hay ninguno, entonces vim sabe que es realmente un <esc>
, de lo contrario debe ser algo demás. Este tipo de retraso es normal, puede cambiar ttimeoutlen
para reducirlo.
El retardo del código clave está controlado por :h 'ttimeout'
y :h 'ttimeoutlen'
(no es del todo cierto, consulte :h 'ttimeout'
para obtener más detalles).
Entorno común
set timeoutlen=1000
set ttimeoutlen=50
Para ser honesto, configuré ttimeoutlen en 5, 50 sigue siendo demasiado retraso.