如何使xterm将Alt键作为Meta发送到emacs?


9

我看到,这个问题已经被问 时间。此处给出的解决方案似乎不适用于我的设置。这是我的故事:

我将ubuntu 12.0.04 LTS与xmonad一起使用(而不是通过gnome),并将xterm用于我的工作。我宁愿使用xterm而不是使用其他终端或emacs自己的窗口。使用emacs -nw时,我发现无法识别Alt。我使用xev验证了确实生成了Alt。此外,如果我使用的是rxvt,则可以看到emacs -nw识别了Alt。我使用的是邪恶模式(作为vim的长期用户和emacs newbee),我真的更希望不要将我的转义键反弹设置为alt(这是另一个线程提供的解决方案)。我该怎么办?(如果有帮助,在没有运行emacs的情况下,xterm窗口上的Alt-x会生成“ø”或如果我运行emacs -nw -Q)。


如果我没记错的话,Alt被读为M。
Braiam'4

我不明白,您是说M而不是Meta,对吗?为什么这么说
rahul 2014年

Emacs Meta键。你不能按Mx吗?
Braiam 2014年

哦,那是我的问题。我期望Alt-x会生成Mx(就像在图形模式下一样),但是对我而言,它不会在xterm上生成。相反,它生成(ø)
rahul 2014年

Answers:


13

Arch Wiki中所见,您需要使Xterm将正确的转义密钥发送到程序:

如果将Alt键用于键盘快捷键,则资源文件中将需要此键:

XTerm*metaSendsEscape: true

因此,只需:

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

并重新启动Xterm会话。


谢谢,那行得通。那么,如果Alt现在发送转义,xterm如何处理转义?(逃生也是有效的,我也在寻求我的理解。)
rahul 2014年

@rahul我没有说“ Esc”转义,而是逃脱了按键“ ^ M”
Braiam 2014年

4
除了重新启动会话,您还可以运行xrdb -merge ~/.Xresources
Christian Fritz


1

通过直接提供资源字符串作为命令行选项来管理.Xdefaults/ .Xresources文件,还有一种有趣的替代方法xterm

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

例如,如果您有自定义别名,这将很方便x-terminal-emulator

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.