So binden Sie eine Bindung aus einem Hauptmodus erneut

So binden Sie eine Bindung aus einem Hauptmodus erneut

Ich verwende den Org-Modus und möchte die lokale Bindung von überschreiben C-c C-x C-z, die org-resolve-clocksstandardmäßig an gebunden ist. DieHandbuchsagt

Wie unter „Lokale Tastaturbelegungen“ beschrieben, können Haupt- und Nebenmodi lokale Tastaturbelegungen definieren. ... Wenn Sie eine dieser Tastaturbelegungen ändern möchten, müssen Sie den Modus-Hook verwenden (siehe Hooks).

Ich habe also diese Zeilen in meinem ~/.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)))

Die erste Zeile bindet einen ungebundenen Schlüssel an die Funktion. Die zweite Zeile bindet einen bereits im Org-Modus gebundenen Schlüssel an die Funktion. Die restlichen Zeilen definieren den Hook.

Ich starte Emacs neu und beschreibe die Tasten. C-c C-x C-SPCist gebunden an my-functionund C-c C-x C-zist gebunden an den Standard org-resolve-clocksin einem Org-Puffer und an my-functionanderswo. Wenn ich den Bindungscode interaktiv in einem Org-Puffer ausführe mit M-::

(local-set-key (kbd "C-c C-x C-z") 'my-function)

dann wird der Schlüssel gebunden my-functionund nicht der Standard.

Ich habe auch eine andere Antwort versucht indieser Thread zum Festlegen von Hauptmodus-spezifischen Tastenkombinationen in Emacsund es schlug fehl:

(with-eval-after-load 'org-mode
  '(define-key org-mode-map (kbd "C-c C-x C-SPC") 'my-function)
)

Ich verwende Emacs 25.3 (9.0).

Wie kann ich eine Bindung in einem Set in einem Hauptmodus überschreiben?

Antwort1

Sie können Ihre Funktion im Org-Modus wie folgt binden define-key:

(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)

Es überschreibt alle globalen Bindungen und funktioniert nur in einem Org-Modus-Puffer.

verwandte Informationen