【发布时间】:2012-05-04 16:18:00
【问题描述】:
我希望某些键和组合键的行为与 Emacs 中的其他键或组合键一样。例如,我希望 F5 在涉及它的每个可能组合中充当 Cc 的替代品,或 CS- 作为 C- 。是否可以在不手动重新绑定所有此类组合键的情况下做到这一点?
【问题讨论】:
标签: emacs keyboard-shortcuts elisp
我希望某些键和组合键的行为与 Emacs 中的其他键或组合键一样。例如,我希望 F5 在涉及它的每个可能组合中充当 Cc 的替代品,或 CS- 作为 C- 。是否可以在不手动重新绑定所有此类组合键的情况下做到这一点?
【问题讨论】:
标签: emacs keyboard-shortcuts elisp
您所指的键称为“前缀键”。前缀键有自己的键映射,因此要使另一个键的行为相同,您需要将其分配给相同的键映射。对于 control-c,您使用 mode-specific-map:
(global-set-key (kbd "<f5>") mode-specific-map)
控件本身不是前缀键,或者根本不是键,因为它不会向 Emacs 发送按键[1],直到您按下另一个键。我不确定如何在 Emacs 中将 C-S- 重新映射为 C-。您可以使用 xmodmap 在系统范围内执行此操作,但这可能不是您想要的。
[1] 控制键(和 shift、alt)确实会向操作系统发送按键,但 Emacs 不会“看到”这一点,除非同时按下另一个键
【讨论】:
我更喜欢
(define-key key-translation-map [f5] (kbd "\C-c"))
总结上面给出的链接:global-set-key的缺点是,当你定义一个组合键输入一个符号时,它在isearch中不起作用。
key-translation-map 也有问题。想象一下,你定义了一个符号 | 来执行一个命令,并定义一个 C-| 来输入符号 |,按下 C-| kbd> 将执行命令。
【讨论】: