al ejecutar la pantalla en OSX, command + r desordena las teclas de flecha en vim en todas las pantallas

15

¿Cómo se desenrolla esto? porque terminas presionando el comando r todo el tiempo para recargar tu navegador, y a menudo estás en la terminal.

Como no he descubierto cómo volver a habilitar las teclas de flecha, actualmente apago todas mis pantallas y reinicio la pantalla, lo cual es una molestia.

Der Hochstapler
fuente

Respuestas:

28

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+Dpara separar la pantalla de tu terminal, luego corre screen -D -Rpara 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+Zescribir y escribir fgel 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 [ Aa 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

Jander
fuente
Otro problema puede ser el tipo de terminal vim confuso, vea Teclas desordenadas en vim cuando se ejecuta dentro de tmux
kynan
¡Gracias por esta solución! Esto me ha estado molestando como desarrollador web. en el navegador presionas mucho cmd-r para actualizar la pantalla y ocasionalmente debo haber estado presionando cmd-r en vim por accidente. No podía entender por qué mis teclas de flecha estaban siendo borradas hasta ahora. y para ustedes purificadores de hjkl, la razón principal por la que no uso hjkl es porque no están disponibles para el movimiento del cursor en modo de inserción. resuelve ese problema por mí y lo reconsideraré.
rev
6

Puede solucionar esto de forma rápida y sencilla con :!reset

GlifoGrifo
fuente
1

Si está usando iTerm, puede recuperar su sesión de vim presionando command+dycommand+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.

Adam Grant
fuente
1

Asigno Command-r a "Ignorar" en las asignaciones de teclas iTerm.

Captura de pantalla del diálogo de preferencias de iTerm2

Cristiano largo
fuente