在Spacemacs(或Emacs)中,是否可以将密钥绑定到其他密钥?
问题描述:
这是一件很难发现的事情。在Spacemacs(或Emacs)中,是否有可能让一个给定的组合键执行任何其他组合键应该执行的操作?在Spacemacs(或Emacs)中,是否可以将密钥绑定到其他密钥?
换句话说,是否有可能让F5
键始终执行,无论组合C-c C-c
应该做什么?例如:
(global-set-key [remap (kbd "F5")] (kbd "C-c C-c"))
让我举一个具体的例子来说明问题。密钥组合C-c C-c
通常用于将当前缓冲区的整个代码发送给解释器/控制台,以便在代码驻留在.py
文件中时将缓冲区的代码发送给Python解释器,或者将其发送到包含包的R控制台ESS在.R
文件中。
现在,假设人们想让F5
键设置为这两种语言,甚至更多。一个明显的解决方案是简单地实现每个包的不同键绑定。但是,如果可以简单地说:只要按下了“F5
”,就会导致与“C-C C-C”被调用相关的任何命令。
有没有可能有这样的事情?我特别感兴趣的是为Spacemacs做这件事,但当然对于Emacs更通用的答案是可以接受的。
答
尝试
(define-key key-translation-map [f5] (kbd "C-c C-c"))
应该解决您的问题。
几乎完美的解决方案!需要注意的是,出于某种原因,如果新的组合键使用“超级”或“超级”键,则它不起作用。例如:'(define-key key-translation-map [H-f5](kbd“C-c C-c”))' – Louis15
你确定你正在拼写按键吗?我总是做'C-h k'看看帮助/迷你缓冲区给了什么,然后把它放在'kbd'中。例如。使用'(kdb“”)'为'super-F5'(我不能举一个超级示例,因为我没有超级)。 –
jpkotta