Emacs でキーバインディングをエイリアスするにはどうすればいいですか?

Emacs でキーバインディングをエイリアスするにはどうすればいいですか?

たとえば、私は をC-c a a頻繁に使用するので、これを に簡単にマッピングしたいと考えていますf1

最初のバインディングが最終的に呼び出す関数 (今回はorg-agenda-list) を検索できることはわかっていますが、より一般的な解決策を求めています。 は使用できないと思います(global-set-key KEY COMMAND)。キーを押すこと自体が であるかどうかはわかりませんCOMMAND(でも、そうである可能性はあるでしょうか?)。

では、「複数の連続したキー押下」を別のバインドにバインドするにはどうすればよいでしょうか?

答え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-RETf5C-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)

この郵便受けさらに詳しい情報についてはここを参照のこと。

関連情報