Wie kann ich Tastenkombinationen in Emacs mit einem Alias ​​versehen?

Wie kann ich Tastenkombinationen in Emacs mit einem Alias ​​versehen?

Ich muss beispielsweise C-c a aviel verwenden und möchte dies einfach auf zuordnen f1.

Ich weiß, dass ich nach der Funktion suchen kann, die die erste Bindung schließlich aufruft (diesmal war es org-agenda-list), aber ich suche nach einer allgemeineren Lösung. Ich glaube nicht, dass ich verwenden kann (global-set-key KEY COMMAND), da ich nicht sicher bin, ob das Drücken von Tasten COMMANDan sich ein ist (aber vielleicht kann es das sein?)

Wie also bindet man „mehrere aufeinanderfolgende Tastendrücke“ an eine andere Bindung?

Antwort1

Der gesuchte Code lautet:

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

Normalerweise müssen Sie die Namen der Tastenzuordnungen nicht kennen, da die Ausdrücke die globalen und lokalen Zuordnungen in Kraft (current-global-map)zurückgeben (current-local-map). Obwohl im Emacs-Handbuch steht, dass Sie alle Funktionstasten neu zuordnen können, habe ich festgestellt, dass seltsame Dinge passieren können, wenn Sie versuchen, F1, F2, F3, F4 oder F10 neu zuzuordnen. Aus diesem Grund ordne ich normalerweise F5 oder F6 neu zu. Als Beispiel aus meiner .emacs-Datei lautet der Code:

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

setzt M-RETund M-S-RETim Planermodus und macht das Präfix auch f5zu einem Alias ​​für C-c C-jin diesem Modus.

Beachten Sie jedoch, dass es nicht immer funktioniert, da lookup-keyMakros verstanden werden, die in Keymaps leider zulässig sind. In solchen Fällen können Sie normalerweise einen Weg finden, dies zu umgehen. Fragen Sie bei Problemen erneut nach.

Antwort2

Ich denke, Sie sollten so etwas tun, habe es aber nicht ausprobiert:

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

Dieser Beitragscheint der richtige Ort für weitere Einzelheiten zu sein.

verwandte Informationen