Las teclas de flecha dejan de funcionar espontáneamente en vim


25

Recientemente actualicé de OS X 10.6 (creo) a 10.9. Desde entonces parece que, mientras se edita vim, las teclas de flecha "espontáneamente" dejarán de funcionar.

En un momento, frustrado, "aplasté" una de las teclas de flecha y finalmente se me mostró el error "E388 no se pudo encontrar una definición". El resto del tiempo lo he experimentado, las flechas, después de haber trabajado por un tiempo, de repente empiezan a repicar a mí!

Salir y volver a abrir resuelve el problema temporalmente . ¡Pero me gustaría evitarlo !

¿Alguien sabe como podría ser esto? ¿Y como arreglarlo?


Parece que mi valor predeterminado vimrcse modificó durante la actualización. Si mi memoria es correcta, anteriormente era un archivo bastante grande. Ahora, solo contiene esto:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

No tengo idea de lo que hacen estas opciones todavía. Lo investigaré, pero espero que alguien aquí sepa más rápido de lo que puedo googlear y leer ...


También me di cuenta de que hay un foro centrado en Apple aquí para el que esta pregunta podría ser más adecuada. Entonces, si es más probable que sea una condición de OS X que vim, tal vez un mod podría migrar esto por mí.
svidgen

2
Me recuerda a trabajar en un mainframe "Prime" en la universidad. El profesor enseñó que nunca debes usar las teclas de flecha vi. Siempre use hjkl. Ahí es donde las teclas de "flecha" solían estar en el hardware antiguo.
Red Cricket

OK ... Pero, las teclas de flecha deberían funcionar. Independientemente de si tu profesor piensa que debería usarlos. Y los encuentro convenientes a veces. Entonces, espero ver la solución.
svidgen

1
¿Qué sucede cuando inserta la clave literal en un búfer? vaya al modo de inserción y presione Ctrl + v, luego una tecla de flecha. Vim en mi Mac muestra la tecla de flecha hacia arriba como ^[OA, hacia abajo, hacia la ^[OBderecha ^[OCy hacia la izquierda como ^[OD. comprobar antes y después de que se presente el problema
Nathan Wallace

@NathanWallace no estoy seguro de cómo pasé por alto tu pregunta. Lo intentaré la próxima vez que esté en mi Mac.
svidgen

Respuestas:


24

Encontrado en el blog de James Hodgkinson , el siguiente comando funciona para mí. Tenga en cuenta que actualizará la pantalla vim.

:!reset

No estoy seguro de cómo pasé por alto esta respuesta, ¡pero parece muy prometedor!
svidgen

De hecho ... Al presionar Ctrl + R como se describe en el artículo, se reproduce el problema con total coherencia con las asignaciones incorrectas de teclas de flecha que se indican en mi respuesta anterior a Nathan. Y el comando reset lo resuelve en ese caso. Y ... No puedo reproducir el problema de manera confiable de ninguna otra manera, ¡esta es definitivamente la respuesta más útil!
svidgen

11

Me he encontrado con este problema varias veces también. Estaba ejecutando la pantalla GNU en otra computadora en la que estaba conectado a través de SSH. Para solucionar el problema, desconecté mis pantallas ( Ctrl- a d), cerré sesión en la máquina, volví a iniciar sesión y volví a conectarlas usando screen -x. Puede funcionar sin desconectarse de la máquina, simplemente separando y volviendo a colocar la pantalla. Aunque no puedo recordar.


Cerrar mi sesión de pantalla y reiniciarlo me lo arregló.
Eno

1
Ese fue el problema para mí. De alguna manera se screenpuso en un estado de funk (sobre una conexión ssh) Cerrando esa terminal, luego ssh nuevamente, e screen -rdhizo el truco. ¡Gracias!
Pierre D

@PierreD correcto, ya me he encontrado con este problema varias veces, también en una screensesión, Detach & Reattach resolvió el problema, ¡gracias!
stdcerr

6

En la ruta /usr/share/vim/encontré el .vimrcarchivo ... Allí agregué la línea

set term=ansi 

Funcionó para mi. Ahora las teclas de flecha funcionan correctamente en el editor de Vim.


2
Esto también me solucionó, ya que la última actualización de Windows 10 WSL / Ubuntu lo rompió.
Gray Fox

3

Esto suena muy parecido a tu problema. El artículo se titula: Cursor Keys in Vim: You Mac'ing Me Crazy! .

extracto

Vim es útil en muchas situaciones, particularmente para ediciones rápidas (especialmente como root) y para editar archivos en un servidor remoto. Una molestia que he tenido durante mis nueve meses con un Mac Book Pro es que las teclas del cursor en Vim toquen la campana en el modo de inserción o comando en lugar de cambiar las líneas. La actualización a la versión 7 a través de MacPorts arrojó los mismos resultados. ¡Las teclas de cursor funcionaron después de cambiar mi TERM a VT220 de rxvt! La desventaja fue que el resaltado de sintaxis dejó de funcionar.

Afortunadamente, agregar VT220 a mis parámetros de búsqueda de Google mostró una referencia a vt100-cursor-keys en la documentación de Vim. Agregue el siguiente código a su archivo .vimrc para solucionar el problema:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

En el mismo artículo hay otra sugerencia de establecer su $TERMa linuxvez en OSX.

extracto

Una mejor solución es cambiar el valor predeterminado de TERM a linux o dtterm ya que el valor de TERM se recogerá en el servidor remoto. En la actualidad, apostaría a que la mayoría de los servidores admiten estos dos tipos de terminales.


Hmm ... estoy aún más confundido ahora. Pensé que tenía .vimrcarchivos globales / predeterminados . ¿Se habrían movido o eliminado durante una actualización de OS X?
svidgen

@svidgen: No, no creo que eso hubiera cambiado, pero ese problema sonaba similar al tuyo, y la solución es bastante fácil de probar, así que pensé en compartirlo contigo. Por cierto, $TERMpodría haber cambiado en ti.
slm

Whelp, esta es definitivamente la respuesta más relevante aquí. +1 por eso. No estoy seguro de si todavía lo soluciona, desafortunadamente, ya que no puedo reproducir el problema de manera consistente.
svidgen

Después de haber aplicado esta solución, el problema ha ocurrido nuevamente. Sigue siendo una respuesta relevante, dejando el +1. Pero, consulte mi comentario anterior si está interesado en proporcionar una respuesta adicional.
svidgen

0

Felicidades por la actualización. Hice mi propia actualización durante el fin de semana y he estado lidiando con algunos de mis problemas con el teclado.

Aquí hay un par de cosas que necesitaba hacer:

  • Elimine el antiguo software de juegos Logitech y actualícelo. Antes de hacer esto, tenía problemas para usar mis llaves cuadradas y rizadas. Las teclas especiales a menudo envían secuencias esc- [en el contexto VIM, por lo que esto puede ser relevante.
  • Vaya a Preferencias del sistema: Seguridad y privacidad: Privacidad: Accesibilidad y habilite un par de aplicaciones (synergy_server y Logitech gaming software). Antes de este cambio, no podía controlar mis otras computadoras con sinergia o usar macros con mi G11. Dudo que sea una conexión directa para usted, pero las opciones de Accesibilidad son nuevas y podrían aplicarse a alguna otra aplicación suya.

0

Si está trabajando en .sqlarchivos en vim(no menciona) esto podría ayudarlo. Acabo de lidiar con esto el otro día.

En archivo ~/.vimrc

let g:omni_sql_no_default_maps = 1

este tema en particular se discute aquí

Si no tiene este problema con los .sqlarchivos vim, pido disculpas, mi único pensamiento sería verificar el mapeo vimcuando ocurra el problema.

:map Ctrl V → cuando pierda su capacidad de usar su flecha, ejecute ese comando y vea si la asignación desapareció. si lo hizo, esto le da un lugar para comenzar a cavar.


0

Tuve este problema en una sesión de SSH y lo resolví cerrando la sesión y volviendo a iniciarla:

exit
ssh ...

Gracias por considerar. La respuesta seleccionada siempre ha funcionado para mí. ¿Lo has probado?
svidgen

Sí, la solución aceptada no funcionó en Ubuntu 18. Incluso desinstalé y reinstalé vim (en la misma sesión de ssh) y sin dados. Solo cerrar sesión y luego volver a iniciar la funcionalidad de flecha restaurada.
duhaime

0

Tuve este problema cuando utilicé una "variable de entorno del sistema" en Windows, estableciéndolo TERMen xterm-256color. El problema desapareció (y vimvolví a la normalidad) cuando eliminé la variable nuevamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.