emacs 按键定制 (类似:vim leader)

目的


使用emacs的同学肯定需要将常用的指令绑定到熟悉的按键上,对于刚接手的初学者来说,按键的定制是一个难题.

解决这个难题,便是本文的目的.

如果你以前使用过vim,那么map leader应该是再熟悉不过的了,下面的内容就是类似leader这样的操作定义和使用.

假设

在这里我们做一些假设,确定读者的等级.

  • 假设: 读者对lisp语言有一定的了解. (没有,对这篇文章也没有影响,但如果有,那就会理解更深)
  • 假设: 读者有一定的编程经验,可以对一些常见的术语敏感
  • 假设: 读者有一定的编辑器使用经验,可以对通用术语有一些了解

配置步骤


Note: 保证自己的emacs按键不会被外部应用(如:窗口管理器)阻截,如果是这样,案件不生效也不是奇怪的事情.

基础知识

emacs中的按键是分键位映射图的,所谓键位映射图其实就是不同的引导键而已,亦即引导键所定义的命名按键命令空间.
键位映射图在emacs中主要分为两类:

  • 全局映射图

    对所有模式的编辑缓冲区都生效的键位映射图

  • 局部映射图

    对具体编辑模式起作用的键位映射图,如: org-mode,c-mode, java-mode等.

键位映射图规则:

  1. emacs根据输入,先判断当前缓冲区的编辑模式,寻找局部键位映射图
  2. 如果没有找到局部键位映射图,那么寻找全局键位映射图
  3. 再没有找到,则按键未定义
  4. 如果两种键位图冲突,则使用局部键位屏蔽全局键位

遇到任何不会的地方,请在线使用emacs的帮助文档寻求帮助:

C-h f command-name
C-h k [ret]key-of-command

具体配置步骤

工具: emacs 内置函数

  • (define-prefix-command ‘my-leader)

    配置想要的映射键位图,就是之前所说leader按键,引导后面一系列按键组合.

  • (define-key keymap “keystroke” ‘command-name)

    将快捷键绑定到leader按键后,即和键位图绑定

  • (global-set-key “keystroke” ‘command-name)

    定义全局快捷键

  • (local-set-key “keystroke” ‘command-name)

    定义局部于模式的快捷键

注意: “keystroke”中的CtrlAlt使用'\C''\M'表示
如果是(kbd)函数,那么可以使用'C''M'表示

本文只介绍三种配置步骤:(配置内容只是例子,具体按个人要求配置)

  • 第一种:通用隐含与leader按键绑定配置
(define-prefix-command 'my-map)
(global-set-key (kbd "M-n") 'my-map)
(global-set-key (kbd "M-n b") 'find-file)
  • 第二种:明确与leader按键绑定配置
(define-prefix-command 'my-map)
(global-set-key (kbd "M-n") 'my-map)
(define-key my-map (kbd "b") 'find-file)
  • 第三种:多重leader按键嵌套配置
(define-prefix-command 'my-first-map)
(define-prefix-command 'my-second-map)
(define-prefix-command 'my-thried-map)

(global-set-key (kbd "M-n") 'my-first-map)
(define-key my-first-map (kbd "M-p") 'my-second-map)
(define-key my-first-map (kbd "M-k") 'my-thried-map)

(define-key my-thried-map (kbd "!") 'save-file)
(define-key my-thried-map (kbd "k") 'write-file)
(define-key my-thried-map (kbd "kj") 
  (lambda ()
    (interative)
    (save-buffer)
    (kill-emacs)))
结语:

emacs中的leader前置按键比vim确实要强大一些,可以定义多个,不过量力而行,毕竟我们不会使用那么多.(如果你使用相应模式的键位,那定义一个,就再好不过了)


具体生效的位置不用多提:
1. 如果你使用别人如github: purcell/emacs.d那么请在README下完成配置
2. 如果自己裸配,那么在$HOME目录中的.emacs完成配置
3. 如果使用新版本的emacs,一般在.emacs.d/init.el或者.emacs.d/custom.el中配置

参考:

Emacs Wiki
Emacs 中文网
Emacs 帮助手册
王银的主页

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值