我有几个 key bindings :
C-c c f m
C-c c m m
C-c c ...
上面几个 key binding 都有公共的前缀。
我想定义一个 alias 就达到替换 ” C-c c “ 公共前缀的目的。
把 <SPC> 映射成 C-c ,这样第一个 key binding 就变成
<SPC> f m
怎么做?
1
johnnyb 2015-08-26 23:59:03 +08:00
你需要 evil + evil-leader 或者直接用 spacemacs
|
3
johnnyb 2015-08-27 13:24:43 +08:00
(setq evil-leader/leader "<SPC>")
(evil-leader/set-key "fm" 'functionX "mm" 'functionY ) 在 evil mode 下按 `SPC f m` 就相当于以前按 `C-c c f m` 了。还是建议试试 spacemacs ,它就是以 SPC 为 leader key 作为卖点的,相当完善,而且快捷键设置有条理。 |
4
isaaczeng OP @johnnyb
我有很多个 key binding 我想通过简单的步骤就把前缀 alias 一下, 这样就不需要去设置 "fm" "mm" ... 我吧 <SPC> 映射成 "C-c c" 之后 "<SPC> f m" 就自动扩展成 "C-c c f m" |
5
johnnyb 2015-08-27 20:04:34 +08:00 1
(define-prefix-command 'my-prefix )
(global-set-key (kbd "C-c c") 'my-prefix ) (global-set-key (kbd "C-c c m m") 'find-file ) ;; 换成你的 function (define-key evil-normal-state-map (kbd "SPC") ;; 只能绑定到 evil-normal (lookup-key (current-global-map ) (kbd "C-c c"))) |
6
feiyongzhai 2021-03-31 19:21:56 +08:00
虽然说现在回答已经为时已晚,不管能不能帮到楼主,我就写个回答给自己备忘吧。哈哈~
(define-key key-translation-map (kbd "SPC") (kbd "C-c c")) 其实这就是 vim 中的 map 的功能,将一个快捷键进行重映射 参考链接: https://zhuanlan.zhihu.com/p/26068894 |