emacs中元命令的用户超级密钥

adi*_*ess 6 emacs key-bindings emacs24

我正在尝试学习emacs,并希望在我的键盘上使用emacs中的任何元命令,因为我使用dwm作为我的窗口管理器,它广泛使用元键.我已经阅读了这个页面,用它来试试

(setq x-meta-keysym 'super)
(setq x-super-keysym 'meta)
Run Code Online (Sandbox Code Playgroud)

没有运气.理想情况下,我想简单地翻转它们,但仅限于emacs.当我用Ch v检查变量x-meta-keysym和x-super-keysym时,命令似乎被正确评估.当我用linux实用程序xev检查超级密钥时,它确认我按下的密钥映射到Super_L.

小智 6

我同意@Tyler

就我而言,我使用 dwm 作为窗口管理器,因此元 (ALT) 键用于控制几乎所有功能。使用 emacs 时,元键与某些键绑定发生冲突,例如:当我在单词 Mf 或 Mb 之间移动时(这就是我来到这个线程的原因;)),所以我找到了三个选择来摆脱这个问题:

1) 更改 emacs 键绑定并使用超级键作为元键

(setq  x-meta-keysym 'super
       x-super-keysym 'meta)
Run Code Online (Sandbox Code Playgroud)

两个符号(变量)都是必需的,因为如果您只使用 x-super-keysym 'meta,它会将两个键都启用为元键。如果您只使用 x-meta-keysym 'super,它会同时禁用这两个命令,并且 de 命令缓冲区将返回 sx 未定义。

2) 在 config.h 文件中将 meta 的 dwm 键绑定更改为 super 键。看看http://dwm.suckless.org/customisation/windows_key

 /* key definitions */
 -#define MODKEY Mod1Mask /* meta (ALT) key */
 +#define MODKEY Mod4Mask /* super (windows or cmd) key */
Run Code Online (Sandbox Code Playgroud)

3) 覆盖 xmodmap 键映射绑定,将 mod1 交换为 super,将 mod4 交换为 meta(一定要检查 xmodmap 第一眼返回的内容,并且不影响其他程序的键绑定)

最后,我建议不要更改默认的 emacs 元键,因为它对您的手指来说不太舒服,并且可能会导致您对按键的响应缓慢。根据您的环境尝试选项 2 或 3。


adi*_*ess 5

因此,事实证明,当 emacs 不在终端模式下使用时,上述命令可以工作。我一直在终端上专门尝试它,这就是它不起作用的原因。我不确定如何在终端中修复它,但我想它已经足够好了。

编辑:终端仿真器在按键进入 emacs 之前就吞噬了按键,因此只要按键实际上进入了 emacs,原始命令就可以工作。