Например, мне приходится использовать 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-RETв режиме планировщика, а также превращает префикс f5в псевдоним для C-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)
Эта почтакажется, здесь самое время рассказать подробнее.