如何将C-c重新绑定

各位,请问如何将C-c重新绑定到其他键。我要达到的效果是C-c这个prefix仍然能够使用,但另外绑定的快捷键也能够打开C-c相同的功能。

说一下我现在的配置。我使用的是Evil,SPC被用作leader键。在leader键下,我创建了部分常用的快捷键keymap,我现在想把常用的C-x,C-h和C-c等都绑定到这个leader键的快捷方式下来。

C-h有单独的keymap,我使用h绑定了它的keymap。同理C-x也有它的keymap,我使用x绑定。但C-c我一直无法绑定成功。

查看文档,说是C-c绑定到了mode-specific-map。但我绑定c到这个keymap后,里面却只有一个Magit的快捷键。C-h v搜索mode-specific-map里面给出的也是一样的结果,仅有一个快捷键。which-key上可以看到按下c后,键盘实际接收的是C-c。

这是我的配置:

      ;; Quick C+c
      (evil-define-key nil 'global (kbd "<leader>c") mode-specific-map)
      (which-key-add-key-based-replacements "<leader>c" "C-c")

下图是我使用c,h,x时的不同效果。 Peek 2021-08-27 15-41

我知道doomemacs和spacemacs里有这样的设置,我也用过,所以应该是可以实现的。

用general的simulate key功能:https://github.com/noctuid/general.el#simulating-keypresses

感谢,这个我看过来,原来我也是使用general的,不过后来觉得它的功能使用evil都能实现,本着精简的原则,我把这个包移除了。

源码里面的实现也很复杂的感觉。有没有简单一点的方法实现?

(defun send-ctrl-c ()
  (interactive)
  (push ?\C-c unread-command-events))
2 个赞

哈哈哈,一在坐等回答啊,我翻了好久的reddit和google,没找到答案。你给我解决了,完美。

非常感谢啊!