In Spacemacs (or Emacs), is it possible to bind keys to other keys?
这是一件很难发现的事情。在 Spacemacs(或 Emacs)中,是否可以设置一个给定的组合键来执行另一个组合键应该做的任何事情?
换句话说,例如,是否有可能让 F5 键始终执行组合 C-c C-c 应该执行的任何操作?类似于:
1
| (global-set-key [remap (kbd"F5")] (kbd"C-c C-c")) |
为了清楚起见,让我举一个具体的例子。组合键 C-c C-c 通常用于将当前缓冲区的整个代码发送到解释器/控制台,将缓冲区的代码发送到 Python 解释器以防代码驻留在 .py 文件中,或者将其发送到在 .R 文件中带有包 ESS 的 R 控制台。
现在,假设有人想要设置 F5 键来为这两种语言甚至更多语言做到这一点。一个明显的解决方案是简单地实现每个包不同的键绑定。但是,如果可以简单地说:每当按下 F5 时,它应该会导致调用与 `C-c C-c 相关的任何命令。
这样的事情有可能吗?我对 Spacemacs 这样做特别感兴趣,但是对于 Emacs,当然可以接受更通用的答案。
试试
1
| (define-key key-translation-map [f5] (kbd"C-c C-c")) |
应该可以解决你的问题。
- 几乎完美的解决方案!需要注意的是,由于某种原因,如果新的组合键使用 super 或 hyper 键,则它不起作用。例如:(define-key key-translation-map [H-f5] (kbd"C-c C-c"))
-
你确定你的按键拼写正确吗?我总是只做 C-h k <keypress> 并查看帮助/迷你缓冲区给出的内容,然后将其放入 kbd 中。例如。将 (kdb"<s-f5>") 用于 super-F5 (我不能给出超级示例,因为我没有超级)。