如何在 emacs 中為鍵綁定設定別名?

如何在 emacs 中為鍵綁定設定別名?

例如,我經常使用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-RETM-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)

這個帖子似乎是了解更多詳細資訊的地方。

相關內容