たとえば、私は を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)
この郵便受けさらに詳しい情報についてはここを参照のこと。