前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Emacs 快捷键配置方案

Emacs 快捷键配置方案

作者头像
zucchiniy
发布2020-05-22 14:47:14
1.1K0
发布2020-05-22 14:47:14
举报
文章被收录于专栏:洞明学问

Emacs 的快捷键和 Vim 的快捷键是编辑器中的两坐高山,其中 Emacs 的快捷键主要有四类。

四大类型

  • 全局快捷键
代码语言:javascript
复制
(global-set-key (kdb "a") 'command)
  • 全局映射键
代码语言:javascript
复制
(define-key key-translation-map (kbd "a") (kdb "b"))
  • Major-mode 局部快捷键
代码语言:javascript
复制
(local-set-key (kdb "a") 'command)
  • Minor-mode 局部快捷键
代码语言:javascript
复制
(define-key your-minor-mode-map (kbd "a") 'command)

删除、禁用快捷键

代码语言:javascript
复制
(global/local-unset-key (kbd "a"))
(global/local-set-key (kbd "a") 'ignore/nil)

键冲突与解决

最方便的解决方案是找一个空置的 prefix 键,先映射到这个键上,再全局或者局部设置它。

先映射到空闲键上

代码语言:javascript
复制
(define-key key-translation-map (kbd "a") (kbd "M-g A"))

全局或者局部设置

代码语言:javascript
复制
(global/local-set-key (kbd "M-g A") 'command)

快捷键优先级

key-translation-map : 最高级,就是把这个键的意义改变了,想使用原来的快捷键,要重新进行绑定

minor-mode-map : 二级,只在 minor mode 激活时启作用,其它时候会被其它的快捷键覆盖掉

local-set-key : 三级,在 major mode 中启作用

global-set-key : 最弱的级别,但是也是最简单的键绑定方式

设置局域快捷键

代码语言:javascript
复制
(defun f-python-mode ()
  (local-set-key (kbd "C-x C-e")'f-python-shell-send-line)
  (local-set-key (kbd "M-g C-y") 'f-python-shell-send-line))
(add-hook 'python-mode-hook 'f-python-mode)

注意 当键进行重新绑定后,还应该将之前的功能重新绑定到另一个键上。

Minor Mode Map

代码语言:javascript
复制
(define-minor-mode visual-mode
  :init-value nil
  :global t
  :keymap (make-sparse-keymap)
  (if (not visual-mode) (setq cursor-type 'bar)
    (setq cursor-type 'box)))
(define-key visual-mode-map (kbd "h") 'mark-paragraph)

定义之后,可以利用 define-key 来设置当前快捷键。然后在需要启用 Visual mode 的时候可以启用这个 minor mode 的相关快捷键。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 四大类型
  • 删除、禁用快捷键
  • 键冲突与解决
    • 先映射到空闲键上
      • 全局或者局部设置
      • 快捷键优先级
        • 设置局域快捷键
        • Minor Mode Map
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档