使密钥表现为另一个密钥

Mir*_*lov 14 emacs elisp keyboard-shortcuts

我希望某些键和键组合在Emacs中表现为其他键或键组合.例如,我希望F5能够代替C-c涉及它的每个可能的组合,或者C-S-作为C-.如果不手动重新绑定所有这些组合键,是否可以这样做?

Tyl*_*ler 8

您所指的密钥称为"前缀密钥".前缀键具有自己的键映射,因此要使另一个键的行为相同,您需要将其分配给相同的键映射.对于control-c,您使用mode-specific-map:

(global-set-key (kbd "<f5>") mode-specific-map)
Run Code Online (Sandbox Code Playgroud)

控件本身不是前缀键,或者根本不是键,因为在你按下另一个键之前它不会向Emacs [1] 发送按键.我不确定如何在Emacs中重新映射CS-到C-.你可以使用xmodmap在系统范围内进行,但这可能不是你想要的.

[1]控制键(和shift,alt)确实向操作系统发送了一个按键,但Emacs没有"看到"这个,除非同时按下另一个键


pmr*_*pmr 6

我更喜欢

(define-key key-translation-map [f5] (kbd "\C-c"))
Run Code Online (Sandbox Code Playgroud)

这是一个很好的资源.

总结上面给出的链接:global-set-key的缺点是,当你定义一个键组合来输入一个符号时,它在isearch中不起作用.

key-translation-map也有问题.想象一下,您定义了一个符号|来执行命令并C-|输入符号|,按下C-|将执行该命令.