如何在emacs中设置左右ALT的快捷方式



我想将Alt_L+j设置为'backward char,并将Alt_R+j设置成'windmove left。遵循OSX Emacs:取消绑定正确的alt?,我尝试了以下配置。但它不起作用。

(setq ns-right-alternate-modifier nil)
(global-set-key (kbd "M-j") 'backward-char) ;; it works
(global-set-key (kbd "Alt_R-j") 'windmove-left) ;; it does not work
(global-set-key (kbd "M_R-j") 'windmove-left) ;; it does not work
(global-set-key (kbd "Meta_R-j") 'windmove-left) ;; it does not work

打开我的emacs时,会出现以下错误错误:密钥序列A l t _ R-j以非前缀密钥A开头。Alt_R、M_R、Meta_R似乎是非法的。我不知道它应该是什么。欢迎提出任何建议。

除上述声明外,我的.emacs没有任何内容。这是版本。GNU Emacs 23.1.1(i486 pc-linux-GNU,GTK+2.20.1版)2012年5月18日,由Debian修改。

只需询问Emacs即可。如果密钥序列被识别,那么在其前面加上C-hk将始终为您提供插入kbd的语法。

编辑:

你读错了。

第一行告诉您"(键序列)运行命令…"

那个告诉你刚才输入了哪个序列。(事实上,同一命令也可能绑定到其他密钥,这不是你想要的。)

您所做的是将命令绑定到Ctrl+Meta+j(我相信如果您键入它,它会起作用)。

然而,从你所说的来看,很明显,实际报告的密钥序列是M-j,这意味着你的右alt键充当Meta修饰符(很可能就像你的左alt键一样),所以你很可能在让操作系统区别对待它们的第一步中没有成功。

Alt_R和Alt_L是键,而不是修饰符。这些键与修饰符相关联(例如通过xmodmap),但如果您想区分它们,则需要将它们与不同的修饰符相关联。Emacs依赖于窗口系统来进行分类,所以您必须通过xmodmap来进行分类。

完成后,您将能够为一个绑定到[?A-j],为另一个绑定[?M-j]

最新更新