例如,我經常使用C-c a a它,並且希望輕鬆地將其映射到f1.
我知道我可以搜尋第一個綁定最終呼叫的函數(這次是org-agenda-list
),但我正在尋找更通用的解決方案。我認為我不能使用(global-set-key KEY COMMAND)
,因為我不確定按鍵COMMAND
本身是否是 a (但也許可以是?)
那麼如何將「多次連續按鍵」綁定到另一個綁定呢?
答案1
您正在尋找的程式碼是:
(define-key keymap-1 (kbd "new prefix")
(lookup-key keymap-2 (kbd "old prefix")))
您通常不需要知道鍵盤映射的名稱作為表達式
(current-global-map)
並(current-local-map)
傳回有效的全域和本機映射。儘管 emacs 手冊說您可以重新映射任何功能鍵,但我發現如果您嘗試重新映射 f1、f2、f3、f4 或 f10,可能會發生奇怪的事情。因此我通常會重新映射 f5 或 f6。作為我的 .emacs 檔案的範例,程式碼:
(add-hook 'planner-mode-hook
#'(lambda ()
(local-set-key (kbd "M-RET") 'muse-insert-list-item)
(local-set-key (kbd "M-S-RET") 'pcomplete)
(define-key (current-local-map) (kbd "<f5>")
(lookup-key (current-local-map) (kbd "C-c C-j")))))
在規劃器模式下設定M-RET和M-S-RET,並將前綴設定 為該模式下f5的別名。C-c C-j
但請注意,它並不總是像lookup-key
看起來理解的巨集那樣工作,不幸的是,巨集在鍵盤映射中是合法的。在這種情況下,您通常可以找到解決方法。有問題再問。
答案2
我認為,但沒有嘗試,你應該這樣做:
(defun org-execute-my-action ()
(local-set-key (kbd "C-c q") 'org-name-of-function))
(add-hook 'org-mode-hook 'org-execute-my-action)
這個帖子似乎是了解更多詳細資訊的地方。