
私はorg-modeを使用しており、デフォルトでC-c C-x C-z
バインドされているのローカルバインディングをオーバーライドしたいと考えています。org-resolve-clocks
マニュアル言う
ローカル キーマップで説明されているように、メジャー モードとマイナー モードはローカル キーマップを定義できます。... これらのキーマップの 1 つを変更する場合は、モード フックを使用する必要があります (フックを参照)。
だから私は次の行を持っています~/.emacs
:
(global-set-key (kbd "C-c C-x C-SPC") 'my-function)
(global-set-key (kbd "C-c C-x C-z") 'my-function)
(add-hook 'org-mode-hook
(lambda ()
(local-set-key (kbd "C-c C-x C-z") 'my-function)))
最初の行は、バインドされていないキーを関数にバインドします。 2 行目は、org-mode ですでにバインドされているキーを関数にバインドします。 残りの行はフックを定義します。
Emacs を新たに起動し、キーを記述します。C-c C-x C-SPC
は にバインドされmy-function
、はorg バッファ内のC-c C-x C-z
デフォルトにバインドされ、他の場所では にバインドされます。org バッファ内で次のようにバインディング コードを対話的に実行すると、org-resolve-clocks
my-function
M-:
(local-set-key (kbd "C-c C-x C-z") 'my-function)
キーはmy-function
デフォルトではなく にバインドされます。
私はまた別の答えを試しましたemacs でメジャーモード固有のキーバインディングを設定するスレッドそして失敗しました:
(with-eval-after-load 'org-mode
'(define-key org-mode-map (kbd "C-c C-x C-SPC") 'my-function)
)
私はEmacs 25.3 (9.0)を実行しています。
メジャーモードでセット内のバインディングをオーバーライドするにはどうすればよいですか?
答え1
org-mode で関数をバインドするには、以下を使用しますdefine-key
。
(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)
これはグローバルバインディングをオーバーライドし、org-mode バッファ内でのみ機能します。