2010-01-28 10 views
68

Me he dado cuenta de que, ocasionalmente, cuando uso O (mayúscula 'o') para crear una nueva línea y entrar en modo insertar, hay un pequeño retraso antes de que ocurra algo.¿El retraso antes de 'O' abre una nueva línea?

¿Es esto común? ¿Hay alguna forma de cambiarlo?

Ambos :map O y :imap O muestran "No se encontró el mapa", por lo que no creo que sea un mapeo extraño.

+0

Estoy de acuerdo con superuser.com: quizás esto se deba a que la sintaxis resalta el recalcular el formateo? – monojohnny

+4

No utilice etiquetas como "belongs-on-superuser". Las etiquetas no son un medio para expresar su opinión. Consulte http://meta.stackexchange.com/questions/36819/too-many-questions-are -being-closed-as-not-related-related/36821 # 36821. Si crees que pertenece a la UB, vota para moverlo allí. –

+0

He sido corregido. Ya no usaré esas etiquetas. Sigo pensando que esta muy buena pregunta es el tipo de pregunta que pertenece a la UB y espero encontrarla allí. – jjclarkson

Respuesta

80

Se debe a que la opción está activada 'esckeys' (consecuencia de nocompatible como acabo de descubrir). Cuando presiona ^[O, hay un pequeño retraso ya que se da cuenta si está usando una tecla de flecha/función o si solo se refirió a esas dos teclas en secuencia.

Una solución es deshabilitar esa opción y renunciar a las teclas de flecha en el modo de inserción.
Otra es establecer 'timeoutlen' en algo menos de 1000, tal vez 100 (pero tenga cuidado con las conexiones lentas).
Otra es utilizar ^C en lugar de ^[ para salir del modo de inserción.

+0

Cool, gracias! Además, para cualquier otra persona que pueda estar leyendo esto: antes de apagarlo, consulte la página de ayuda para "esckeys" - es lo que le permite usar, por ejemplo, las teclas de flecha en el modo de inserción. Configurar ''timeoutlen'' funcionó muy bien para mí. –

+3

También 'ttimeoutlen' puede establecer el tiempo de espera solo para códigos de tecla. Ver vim's ': help ttimeoutlen' – k107

+1

Todavía tengo el retraso incluso después de': set noesckeys' o ': set timeout timeoutlen = 1000 ttimeoutlen = 100' ... ¿Alguna idea? (Cygwin, VIM compilado de la fuente) –

1

Sospecho que es cuando tiene que escribir el archivo de intercambio en el disco. Asegúrese de estar ejecutando vim en una computadora con acceso rápido a disco; Si usted tiene que utilizar un sistema de archivos compartidos puede intentar mover el archivo de intercambio usando

:set directory=/path/to/local/dir 
+0

En segundo lugar, en el trabajo, nuestros directorios principales están montados en NFS, y veo este tipo de retraso mucho. – Cascabel

+0

... por supuesto, si es solo para O, no o, ciertamente es la secuencia de escape, como dice jleedev! – Cascabel

+1

Bueno, aunque esta respuesta directamente no aborda OP, creo que sigue siendo relevante. No puedo estar de acuerdo con la persona que votó negativamente. –

3

Ocurre si presiona "O" justo después de la tecla Escape, ¿verdad? Siempre supuse que era porque el controlador de la terminal estaba esperando un poco para ver si se iba a completar una secuencia de escape.

Cuestiones relacionadas