Emacs 定义快捷键别名( key binding alias)

2015-08-26 23:02:25 +08:00
 isaaczeng

我有几个 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

怎么做?

3136 次点击
所在节点    问与答
6 条回复
johnnyb
2015-08-26 23:59:03 +08:00
你需要 evil + evil-leader 或者直接用 spacemacs
isaaczeng
2015-08-27 08:12:46 +08:00
@johnnyb
我用的就是 evil + evli-leader , 怎么设置?
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 作为卖点的,相当完善,而且快捷键设置有条理。
isaaczeng
2015-08-27 14:59:10 +08:00
@johnnyb
我有很多个 key binding
我想通过简单的步骤就把前缀 alias 一下, 这样就不需要去设置
"fm" "mm" ...
我吧 <SPC> 映射成 "C-c c" 之后
"<SPC> f m" 就自动扩展成 "C-c c f m"
johnnyb
2015-08-27 20:04:34 +08:00
(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")))
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX