Например, я часто использую Cc aa и хотел бы легко отобразить это на f1.

Я знаю, что могу найти, какую функцию вызовет первая связывающая функция (на этот раз это был org-agenda-list), но мне нужно более общее решение. Я не думаю, что могу использовать (global-set-key KEY COMMAND) , потому что я не уверен, что нажатие клавиш само по себе является COMMAND (но, может быть, это может быть?)

Итак, как связать "несколько последовательных нажатий клавиш" с другим связыванием?

2 ответа2

2

Код, который вы ищете:

(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 и MS-RET в режиме планирования, а также превращает префикс f5 в псевдоним Cc Cj в этом режиме.

Имейте в виду, однако, что это не всегда работает, поскольку lookup-key кажется, понимает макросы, которые, к сожалению, являются законными в таблицах ключей. В таких случаях вы обычно можете найти способ обойти это. Спросите еще раз, если у вас есть проблемы.

-1

Я думаю, но не пытался, что вы должны сделать что-то вроде этого:

(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)

Этот пост, кажется, место для дальнейших деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .