comandos emacs gnu-screen

comandos emacs



"Pantalla" de alguna manera desmarca mis teclas de flecha en emacs después de ^ Z (7)

Cada vez que uso emacs, puedo usar las teclas de flecha para mover el cursor. Pero cuando ejecuto emacs dentro de la pantalla, y presiono emacs al fondo (ctrl-Z) y luego lo devuelvo al primer plano, mis teclas de flecha ya no funcionan, por ejemplo

M-[ a is undefined

Este comportamiento no ocurre cuando estoy ejecutando emacs fuera de la pantalla.

¿Algunas ideas? ¿Es esto un ajuste de pantalla?


Aquí hay una solución que me funcionó para romperlo una vez roto (ubuntu 14.04, emacs 24.1). Sin separarse de la pantalla intente lo siguiente:

1) Ctrl-z para detener emacs.

2) Inicia otro emacs: emacs -nw

3) Ctrl-z en segundo emacs, y ¡voilá !, el primer emacs funcionará de nuevo. (Luego vuelvo a abrir el segundo emacs y lo cierro Ctrl-x Ctrl-c).


El terminal vt100 que emula Screen (y casi todos los emuladores de otros terminales) tiene dos modos, modo normal y modo de aplicación. El modo normal se usa para aplicaciones línea por línea y el modo de aplicación para aplicaciones de pantalla completa. Entre las diferencias entre los modos es que las teclas de flecha envían diferentes secuencias de control (no sé por qué): por ejemplo, ESC OA en modo de pantalla completa y ESC [ A en modo normal. Parece que cuando presiona Ctrl + Z , Emacs vuelve a cambiar el terminal al modo normal, pero cuando lo regresa al primer plano, no vuelve a cambiar al modo de pantalla completa, o la pantalla no reacciona correctamente a los comandos de Emacs.

Una posible solución es vincular las mismas secuencias de caracteres en ambos modos en su .screenrc , por ejemplo

bindkey -k ku stuff ^[OA bindkey -k kd stuff ^[OB bindkey -k kr stuff ^[OC bindkey -k kl stuff ^[OD

Otra posible solución es decirle a Emacs que interprete ambas secuencias clave independientemente de lo que diga el terminal. Aunque en principio es una mala idea, ya que algunos terminales pueden usar estas secuencias de teclas para diferentes claves, nunca he encontrado un terminal tan incompatible, y sospecho que no se han creado en los últimos 20 años o más.

(define-key function-key-map "/eOA" [up]) (define-key function-key-map "/e[A" [up]) (define-key function-key-map "/eOB" [down]) (define-key function-key-map "/e[B" [down]) (define-key function-key-map "/eOC" [right]) (define-key function-key-map "/e[C" [right]) (define-key function-key-map "/eOD" [left]) (define-key function-key-map "/e[D" [left])

Una verdadera solución implicaría encontrar qué está causando el problema. Podría ser un error en la pantalla, un error en Emacs, un error en la terminal (emulador) en el que se está ejecutando la pantalla, un error o una configuración incorrecta en su base de datos termcap o terminfo. Si desea investigar esto, comience mencionando su sistema operativo, qué terminal (emulador) (s) se está ejecutando la pantalla, dónde obtuvo la pantalla (o cómo la compiló, si es lo que hizo) y qué versión, ídem para Emacs, si ha observado el mismo problema fuera de la pantalla, la salida de echo $TERM y echo -E "$TERMCAP" dentro de la pantalla.


Estamos teniendo el mismo problema aquí, una solución que encontramos (pero todavía tenemos que encontrar el origen del problema) es configurar la "secuencia de aplicación" manualmente desde emacs:

  • Navega a tu *scratch* buffer
  • Pegar: (send-string-to-terminal "/e[?1h")
  • Mx eval-buffer

y voilá.

Además, un simple Cz fg puede ser suficiente, y es más rápido de escribir þ


No es una respuesta, pero vale la pena notar que el comportamiento descrito también ocurre cuando se ejecutan emacs de GNU en tmux en la Terminal de Ubuntu o xterm

La solución rápida es no ejecutar emacs en tmux.

Versiones

Emacs: GNU Emacs 24.3.1 (x86_64-pc-linux-gnu) de 2014-06-06 en brownie, modificado por Debian)

tmux: 1.9

Ubuntu: 14.10


Para lo que vale, esto me acaba de pasar, y pude corregirlo desconectándome de la pantalla y luego reconectándome:

Ctrl+A, d screen -R


Primero, empuje los emacs al fondo.

Ctrl+z

y llevar a la vanguardia de nuevo.

fg


Tuve mi ventana xterm a pantalla completa y estaba en pantalla y esto sucedió. Hice doble clic en el borde xterm para salir de la pantalla completa. Ctrl-z para emacs de fondo. Luego fg para traerlo de vuelta y luego las teclas de flecha funcionaron. Podría entrar en pantalla completa sin ningún problema.

Debería dedicarme a aprender todos los comandos de navegación de Emacs, pero mis viejos hábitos de migración a las teclas de flecha son difíciles de entender: /