有時候,我們會爲自己常用的 mode 添加一些特殊的功能,或者將按鍵與函數(defun 定義的功能)捆綁。這次介紹實用的 add-hook 掛鉤及 set-key 按鍵設定。
ADD-HOOK
將函數與某個 mode 掛鉤用。例如,我希望在 python-mode 啓動時,同步啓動 autopair-mode,則可以如下書寫:
(add-hook 'python-mode-hook
(progn
(setq py-load-pymacs-p nil)
(highlight-parentheses-mode t)
(autopair-mode t)))
需注意:
SET-KEY
首先,指定鍵盤按鍵的語法很簡單,原理也一樣,均是對按鍵地圖做調整。
這是全域(整個 emacs 都受影響)
(global-set-key 按鍵組合 函數功能)
(define-key (current-global-map) key binding)
兩者等價。
這是局域(單一 mode 或環境如 gnus 受影響)
(local-set-key 按鍵組合 函數功能)
(define-key (current-local-map) key binding)
會以執行時 (current-local-map) 爲主(看你的 major-mode),所以 local-set-key 一般都會跟 add-hook 合併執行,除非你有某種理由非得指定 local-mop。如下例:
(add-hook 'python-mode-hook
(progn
(local-set-key (kbd "C-c q") 'shell)))
接著,來講講按鍵組合的地方。雖然有多種方式可以指定,我個人是最常用 (kbd "") 這個方式
(global-set-key (kbd "M-a") 'bar-function)
(global-set-key (kbd "C-a") 'foo-function)
(global-set-key (kbd "C-M-x) 'bar-function)
特殊按鍵用<>框起,如上下左右:<up>, <down>, <left>, <right>
或F1等 function-key <f11>
(global-set-key (kbd "<f11>") 'foo-function)
大致上是這樣,詳細的可看參考資料。
Mastering Emacs
ErgoEmacs