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

来源:互联网 发布:怎么打开php文件 编辑:程序博客网 时间:2024/04/29 05:42

我们知道,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)  )

更多设置例子见链接


0 0
原创粉丝点击