Вот общий способ установки привязок клавиш для конкретного буфера.
- Создайте временный второстепенный режим (сохраните приведенный ниже фрагмент
temp-mode.el
и добавьте require
его в свой init.el
.
- Включите этот
temp-mode
второстепенный режим и определите раскладку этого второстепенного режима только в нужном вам буфере.
Поместите приведенный ниже Local Variables
фрагмент в буфер, где вы хотите, чтобы пользовательская привязка ключа. Ниже приведены примеры org-mode
файлов.
В буфере ОДИН
# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-ONE)
# End:
Если какой-то другой буфер переопределяет ту же привязку ключа, используя
В буфере ДВА
# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-TWO)
# End:
тогда новая привязка вступает в силу M-x revert-buffer
.
Это то, что я сделал бы, если бы мне нужно было очень часто переключаться между этими двумя буферами и использовать F10привязку в обоих:
- Работа в буфере ОДИН,
C-x C-s
(сохранить) и переключиться в буфер ДВА
revert-buffer
(обновить привязки), работать в буфере TWO C-x C-s
и переключиться в буфер ONE
revert-buffer
(обновить привязки), работать в буфере ONE C-x C-s
и переключиться в буфер TWO
Но я бы предпочел привязать разные специфичные для буфера команды к разным клавишам.
Временный второстепенный режим
;; temp-mode.el
;; Temporary minor mode
;; Main use is to enable it only in specific buffers to achieve the goal of
;; buffer-specific keymaps
(defvar temp-mode-map (make-sparse-keymap)
"Keymap while temp-mode is active.")
;;;###autoload
(define-minor-mode temp-mode
"A temporary minor mode to be activated only specific to a buffer."
nil
:lighter " Temp"
temp-mode-map)
(provide 'temp-mode)