¿Cómo hacer que xterm envíe la tecla Alt a emacs como Meta?


9

Veo que esta pregunta se ha hecho varias veces . Las soluciones dadas allí no parecen aplicarse a mi configuración. Aquí está mi historia:

Uso ubuntu 12.0.04 LTS, con xmonad (no sobre gnome), y uso xterm para mi trabajo. Preferiría usar xterm en lugar de un terminal diferente o una ventana propia de emacs. Cuando uso emacs -nw, veo que Alt no es reconocido. Verifiqué usando xev que Alt se está generando. Además, si estoy usando rxvt, veo que Alt está siendo reconocido por emacs -nw. Estoy usando el modo malvado (como un usuario vim desde hace mucho tiempo y un emacs newbee), y realmente preferiría no tener mi rebote de la tecla de escape como alt (que fue la solución dada en otro hilo). ¿Qué tengo que hacer? (Si ayuda, Alt-x en la ventana xterm sin ejecutar emacs genera "ø" o si ejecuto emacs -nw -Q).


Si no me equivoco, Alt se lee como M en su lugar.
Braiam

No entendí, te refieres a M en lugar de a Meta, ¿verdad? ¿Por qué dices eso?
rahul

Emacs Meta key. ¿No puedes presionar Mx?
Braiam

Oh, ese es mi problema. Esperaba que Alt-x generara Mx (como lo hace en modo gráfico) pero no lo hace en xterm para mí. En cambio, genera (ø)
rahul

Respuestas:


13

Como se ve en Arch Wiki , debe hacer que Xterm envíe la clave escapada correcta al programa:

Si usa la Alttecla para atajos de teclado, necesitará esto en su archivo de recursos:

XTerm*metaSendsEscape: true

Entonces, solo haz:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources

Y reinicie su sesión de Xterm.


Gracias, eso funcionó. Entonces, si Alt envía escape ahora, ¿cómo maneja xterm Escape? (Escape también funciona, estoy pidiendo mi comprensión.)
rahul

@rahul No dije "Esc" escape, pero escapé presionando la tecla "^ M"
Braiam

44
en lugar de reiniciar su sesión, también puede ejecutarxrdb -merge ~/.Xresources
Christian Fritz


1

Hay una alternativa interesante para administrar sus archivos .Xdefaults/ .Xresourcesproporcionando la cadena de recursos directamente como xtermopción de línea de comando:

xterm -xrm 'xterm*VT100.metaSendsEscape: true'

Esto es útil, por ejemplo, si tiene un alias personalizado de x-terminal-emulatortodos modos.

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.