我正在尝试学习emacs,并且想在我的键盘上使用emacs中的任何元命令,因为我使用dwm作为我的窗口管理器,并且它广泛使用元键。我看过this page,用它来试试
(setq x-meta-keysym 'super)
(setq x-super-keysym 'meta)
没有运气。理想情况下,我想简单地翻转它们,但仅限于emacs。当我用C-h v检查变量x-meta-keysym和x-super-keysym时,命令确实似乎被正确评估。当我用linux实用程序xev检查超级密钥时,它确认我按下的密钥被映射到Super_L。
答案 0 :(得分:4)
我同意@Tyler
在我的情况下,我使用dwm作为窗口管理器,因此meta(ALT)键用于控制几乎所有功能。当使用emacs时,元键与一些键绑定冲突,例如:当我移动单词Mf或Mb时(这就是为什么我来到这个线程;)),所以我找到三个选择摆脱有这个问题:
1)更改emacs键绑定并使用超级键作为元键
(setq x-meta-keysym 'super
x-super-keysym 'meta)
两个符号(变量)都是必需的,因为如果你只使用x-super-keysym&#meta;它会将两个键都作为元键。如果你只使用x-meta-keysym' super,它会禁用两者,de命令缓冲区将返回s-x未定义。
2)在config.h文件中将meta的dwm键绑定更改为超级键。看看http://dwm.suckless.org/customisation/windows_key
/* key definitions */
-#define MODKEY Mod1Mask /* meta (ALT) key */
+#define MODKEY Mod4Mask /* super (windows or cmd) key */
3)覆盖xmodmap keymap绑定,将mod1交换为super,将mod4交换为meta(确保查看xmodmap乍看之下返回的内容,而不影响其他程序的键绑定)
最后,我建议不要更改默认的emacs元键,因为手指不太舒服,可能会导致您对按键响应缓慢。根据您的环境尝试选项2或3。
答案 1 :(得分:3)
因此,事实证明,在终端模式下不使用emacs时,上述命令有效。我一直在终端上尝试它,这就是它无法正常工作的原因。我不知道如何在终端中修复它,但我认为这已经足够了。
编辑:终端模拟器在他们到达emacs之前吞噬了按键,所以原始命令确实有效,只要按键真正实现了emacs。