
Ich verwende den Org-Modus und möchte die lokale Bindung von überschreiben C-c C-x C-z
, die org-resolve-clocks
standardmäß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-SPC
ist gebunden an my-function
und C-c C-x C-z
ist gebunden an den Standard org-resolve-clocks
in einem Org-Puffer und an my-function
anderswo. 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-function
und 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.