Como buen defensor de Vim, me siento obligado a decirte que aprendas a usar hjkl como teclas de cursor. A la mitad de la exploración del problema, pensé que se había solucionado misteriosamente, hasta que me di cuenta de que estaba probando usando hjkl en lugar de las teclas de flecha reales.
De todos modos, ahora para una respuesta real.
En lugar de apagar todas las pantallas y reiniciar, puede aprovechar la capacidad de la pantalla para moverse entre terminales. Presiona CTRL+A
CTRL+D
para separar la pantalla de tu terminal, luego corre screen -D -R
para volver a conectarla. Esto debería hacer que las teclas de flecha funcionen nuevamente.
Si no está en la pantalla, sino solo en Vim, puede CTRL+Z
escribir y escribir fg
el mismo efecto.
También podría solucionar el problema de la tecla del cursor en Vim, pero el reinicio podría haber cambiado otras opciones de terminal, por lo que es más seguro hacerlo como se describió anteriormente para que no vea otros problemas de pantalla / teclado aleatorios. Si quieres las reasignaciones de todos modos, aquí están:
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>
Detalles sucios:
Tanto Vim como la pantalla usan la biblioteca ncurses para administrar el terminal. Una de las cosas que ncurses está haciendo cuando toma el control de un terminal compatible con VT100 es cambiar las teclas de flecha al "modo de aplicación", que cambia los códigos que emiten. La tecla de flecha hacia arriba, por ejemplo, cambia de Esc
[
A
a Esc
O
A
. El código de control VT100 que emite para hacer esto es Esc
[
?
1
h
. El comando de reinicio de terminal enviado por Command + R restablece las teclas del cursor al valor predeterminado.
Al desconectar y volver a conectar la pantalla, ncurses retoma el control del terminal, que vuelve a aplicar todas las configuraciones que le gustan, por lo que probablemente sea la forma más portátil y confiable de restaurar las cosas a la normalidad.
Códigos de control VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm
Puede solucionar esto de forma rápida y sencilla con
:!reset
fuente
Si está usando iTerm, puede recuperar su sesión de vim presionando
command+d
ycommand+w
¿Por qué?
command+d
dividirá el panel de terminales, restaurando mágicamente el que vino.command+w
ahora cerrará el panel dividido que acaba de abrir.fuente
Asigno Command-r a "Ignorar" en las asignaciones de teclas iTerm.
fuente