Como criar atalhos de teclado no emacs?

Como criar atalhos de teclado no emacs?

Por exemplo, eu uso C-c a amuito e gostaria de mapear isso facilmente para f1.

Eu sei que posso procurar qual função a primeira ligação finalmente chama (desta vez foi org-agenda-list), mas estou procurando uma solução mais geral. Eu não acho que posso usar (global-set-key KEY COMMAND), pois não tenho certeza se pressionar teclas é um recurso COMMANDem si (mas talvez possa ser?)

Então, como vincular "múltiplos pressionamentos de tecla sucessivos" a outra ligação?

Responder1

O código que você procura é:

(define-key keymap-1 (kbd "new prefix")
 (lookup-key keymap-2 (kbd "old prefix")))

Normalmente você não precisa saber os nomes dos mapas de teclado como as expressões (current-global-map)e (current-local-map)retornar os mapas globais e locais em vigor. Embora o manual do emacs diga que você pode remapear qualquer uma das teclas de função, descobri que coisas estranhas podem acontecer se você tentar remapear f1, f2, f3, f4 ou f10. Por esse motivo, costumo remapear f5 ou f6. Como exemplo do meu arquivo .emacs, o código:

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

sets M-RETe M-S-RETno modo planejador e também transforma o prefixo f5em um alias C-c C-jnesse modo.

Esteja ciente, entretanto, que nem sempre funciona como lookup-keyparece entender macros que, infelizmente, são legais em mapas de teclado. Nesses casos, geralmente você pode encontrar uma maneira de contornar isso. Pergunte novamente se tiver problemas.

Responder2

Eu acho, mas não tentei, que você deveria fazer algo assim:

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

Esta postagemparece ser o lugar para mais detalhes.

informação relacionada