Emacs에서 키 바인딩의 별칭을 지정하는 방법은 무엇입니까?

Emacs에서 키 바인딩의 별칭을 지정하는 방법은 무엇입니까?

예를 들어, 저는 많이 사용하게 되는데 C-c a a이것을 f1.

나는 첫 번째 바인딩이 마지막으로 호출하는 함수(이번에는 org-agenda-list)를 검색할 수 있다는 것을 알고 있지만 보다 일반적인 솔루션을 찾고 있습니다. 를 사용할 수 없을 것 같습니다 (global-set-key KEY COMMAND). 키를 누르는 것 자체가 a인지 확실하지 않기 때문입니다. 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)

이 게시물자세한 내용을 확인할 수 있는 곳인 것 같습니다.

관련 정보