使密钥表现为另一个密钥

时间:2012-05-04 16:18:00

标签: emacs keyboard-shortcuts elisp

我希望某些键和键组合在Emacs中表现为其他键或键组合。例如,我希望 F5 代表 Cc 替代涉及它的每个可能的组合,或者 CS - 作为 C- 。是否可以在不手动重新绑定所有这些组合键的情况下执行此操作?

2 个答案:

答案 0 :(得分:8)

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

(global-set-key (kbd "<f5>") mode-specific-map)

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

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

答案 1 :(得分:5)

我更喜欢

(define-key key-translation-map [f5] (kbd "\C-c"))

这是good resource

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

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