주요 모드에서 바인딩을 다시 바인딩하는 방법

주요 모드에서 바인딩을 다시 바인딩하는 방법

나는 org-mode를 사용하고 있으며 기본적으로 C-c C-x C-z바인딩된 의 로컬 바인딩을 재정의하고 싶습니다 . org-resolve-clocks그만큼수동라고

로컬 키맵에 설명된 대로 메이저 모드와 마이너 모드는 로컬 키맵을 정의할 수 있습니다. ... 이러한 키맵 중 하나를 변경하려면 모드 후크를 사용해야 합니다(후크 참조).

그래서 내에는 다음 줄이 있습니다 ~/.emacs.

(global-set-key (kbd "C-c C-x C-SPC") 'my-function)

(global-set-key (kbd "C-c C-x C-z") 'my-function)

(add-hook 'org-mode-hook
      (lambda ()
        (local-set-key (kbd "C-c C-x C-z") 'my-function)))

첫 번째 줄은 바인딩되지 않은 키를 함수에 바인딩합니다. 두 번째 줄은 조직 모드에서 이미 바인딩된 키를 함수에 바인딩합니다. 나머지 줄은 후크를 정의합니다.

Emacs를 새로 시작하고 키를 설명합니다. 조직 버퍼의 기본값 과 다른 곳에 C-c C-x C-SPC바인딩 my-function되고 바인딩됩니다 . 다음을 사용하여 조직 버퍼에서 바인딩 코드를 대화형으로 실행하는 경우 :C-c C-x C-zorg-resolve-clocksmy-functionM-:

(local-set-key (kbd "C-c C-x C-z") 'my-function)

그러면 키는 my-function기본값이 아닌 바인딩됩니다.

나는 또한 다른 답변을 시도했습니다emacs에서 주요 모드 특정 키 바인딩 설정에 대한 이 스레드그리고 그것은 실패했습니다:

(with-eval-after-load 'org-mode
  '(define-key org-mode-map (kbd "C-c C-x C-SPC") 'my-function)
)

저는 Emacs 25.3(9.0)을 실행하고 있습니다.

주요 모드에서 세트의 바인딩을 어떻게 재정의할 수 있나요?

답변1

다음을 사용하여 조직 모드에서 함수를 바인딩할 수 있습니다 define-key.

(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)

모든 전역 바인딩을 재정의하고 조직 모드 버퍼에서만 작동합니다.

관련 정보