Вы можете связать свою функцию в режиме org, используя define-key
:
(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)
Он будет переопределять любые глобальные привязки и работать только в буфере режима org.
Я использую org-mode и хочу переопределить локальную привязку C-c C-x C-z
, привязанную org-resolve-clocks
по умолчанию. Руководство говорит
Как описано в Local Keymaps, основные режимы и второстепенные режимы могут определять локальные сопоставления клавиш. ... Если вы хотите изменить одну из этих комбинаций клавиш, вы должны использовать ловушку режима (см. Хуки).
Итак, у меня есть эти строки в моем ~/.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)))
Первая строка связывает несвязанный ключ с функцией. Вторая строка связывает ключ, уже связанный в режиме org, с функцией. Остальные строки определяют крючок.
Я запускаю Emacs заново и описываю ключи. C-c C-x C-SPC
связан my-function
и C-c C-x C-z
по умолчанию связан org-resolve-clocks
в буфере org и в my-function
другом месте. Если я в интерактивном режиме запускаю код привязки в буфере org с помощью 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).
Как я могу переопределить привязку в наборе в основном режиме?
Вы можете связать свою функцию в режиме org, используя define-key
:
(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)
Он будет переопределять любые глобальные привязки и работать только в буфере режима org.