emacs中怎样修改Major Mode的快捷键

我们知道,emacs中修改全局快捷键的格式如下:

(global-set-key KEY COMMAND)

如将M-j绑定到find-file函数如下:

(global-set-key (kbd "M-j") 'find-file)

那么,如何修改特定Major Mode下的快捷键呢?

其基本格式如下:

(global-set-key KEYMAP KEY COMMAND) 

这里多了一个KEYMAP的名字,也就是每个Major Mode有一个KEYMAP的名字.

这里以php-mode为例,假如我想在php-mode的Major Mode下将M-j绑定到find-file函数,

它的做法如下:

(require 'php-mode)
(define-key php-mode-map (kbd "M-j") 'find-file)

注意: 这得先配制了php-mode,同时从php-mode.el文件中找到相应的KEYMAP的名字

 你可能遇到以下两个问题

问题1 怎样获得Major Mode的名字下面的函数可以帮你得到

(defun get-buffer-mode-name (buffer-or-string)
  "Get the buffer major mode name."
  (interactive "bBuffer Name:")
  (message (with-current-buffer buffer-or-string
               major-mode)))

问题2 有时候你会发现以下错误消息,当我设置matlab-shell-mode-map的时候出现了

wrong type argument keymapp nil

你应该先判断是否为空,如下设置

(if matlab-shell-mode-map
    ()    ; Do not change the keymap if it is already set up.
  (setq matlab-shell-mode-map (make-sparse-keymap))
  (define-key matlab-shell-mode-map (kbd "C-c SPC")  'ace-jump-mode)
  (define-key matlab-shell-mode-map (kbd "C-x SPC")  'ace-jump-mode)
  (define-key matlab-shell-mode-map (kbd "RET") 'comint-send-input)
  (define-key matlab-shell-mode-map (kbd "C-c C-c")'comint-interrupt-subjob)
  )

更多设置例子见 链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值