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

时间:2013-06-23 16:08:57

标签: emacs configuration

我想将Alt_L + j设置为'backward-char,并将Alt_R + j设置为'windmove-left。 关注OSX Emacs: unbind just the right 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-05-18 on the roseapple,由Debian修改。

2 个答案:

答案 0 :(得分:1)

请问Emacs。如果识别出密钥序列,那么在 C-h k 之前,它将始终为您提供插入kbd的语法。

修改

你读错了。

第一行告诉你“(键序列)运行命令......”

告诉你刚输入的是哪个序列。 (同一命令也可能绑定到其他键的事实不是你想要的。)

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

然而,根据你所说的,显然实际报告的键序列是 Mj ,这意味着你的右Alt键充当Meta修饰符(很可能就像你的左Alt键一样) ),所以很可能你没有成功地让你的操作系统以不同的方式对待它们。

答案 1 :(得分:1)

Alt_R和Alt_L是键,而不是修饰符。这些键与修饰符相关联(通过例如xmodmap),但如果要区分它们,则需要将它们与不同的修饰符相关联(例如,一个与“meta”修饰符相关联,另一个与“alt”修饰符相关联)。 Emacs依赖窗口系统来进行这种分类,所以你必须通过xmodmap来完成。

完成后,您就可以将内容绑定到[?\A-j]一个,[?\M-j]绑定另一个。