¿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).

rahul
fuente
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.

Braiam
fuente
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
2

Si actualizar ~ / .Xresources no funciona para usted, haga lo que dice la documentación y actualícelo en ~/.Xdefaults

http://frequal.com/linux/XTermMetaSendsEscape.html

Adán
fuente
Esto funcionó para mí en el servidor X desnudo, como con startx /usr/bin/xterm, donde ~/.Xresourcesfue ignorado.
Ruslan
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.

vog
fuente