emacs 명령 이름이 주어지면 키 바인딩을 어떻게 찾을 수 있습니까? (그 반대)


107

emacs 명령 이름을 알고 있으면 "goto-line"이라고 말합니다. 이 명령에 바인딩 된 키 시퀀스가 ​​있는지 여부를 쿼리하려면 어떻게해야합니까?

그 반대로 키 시퀀스가 ​​주어지면 명령 이름을 어떻게 찾을 수 있습니까?

답변:


159

명령에 대한 키 바인딩을 찾으려면 emacs 도움말의 "where-is"기능을 사용할 수 있습니다.

C-h w command-name

명령에 대해 여러 바인딩이 설정된 경우 모두 나열됩니다.

반대의 경우 키 시퀀스가 ​​주어지면 다음을 입력 할 수 있습니다.

C-h k key-sequence

실행할 명령을 얻으려면.

다음을 입력하여 명령에 대한 자세한 정보와 정의 된 비대화 형 기능을 얻을 수 있습니다.

C-h f function-name

키 바인딩을 포함하여 함수에 대한 자세한 정보를 제공합니다.

C-h v variable-name

(바운드) 변수에 대한 정보를 제공합니다. 키 맵은 변수에 보관되지만 키 코드는 원시 형식으로 저장됩니다. 시험C-h v isearch-mode-map예를 들어 .

도움 받기에 대한 추가 도움말을 보려면 다음을 입력하십시오.

C-h ?

펀치를 치십시오. 도.
dmckee --- 전 중재자 새끼 고양이

51
C-h w <function name>전체 문서가 아닌 키가 어디에 있는지 알 수도 있습니다. 반대로 C-h c <key sequence>키 시퀀스에 바인딩 된 기능을 알기 위해 수행 할 수도 있습니다 .
ShreevatsaR

7
또한 : Ch w는 일반적으로 where-is에 바인딩됩니다.
Cheeso

2
그래서 나는 Ch w를 잊었을 때 어디에 있는가를 할 수 있습니다 훌륭합니다! ;)
Sake

1
C-h창 관리자에서 다른 것에 바인딩 한 사람들을 위해 : C-h wM-x where-is. C-h k와 동일합니다 M-x describe-key. C-h f와 동일합니다 M-x describe-function. C-h v와 동일합니다 M-x describe-variable. C-h ?와 동일합니다 M-x help-for-help. 또한 그주의 f1대신에 사용할 수 있습니다 C-h.
Ricardo

13

C-h w(또는 F1-w) : where-isRET somecommandname RET

요청한대로 수행-추가 정보없이 바인딩 된 키를 나열합니다. :)


13

키보드 단축키 (또는 Emacs 용어로 키 시퀀스)에 연결된 명령을 대화식으로 가져 오려면 선택한 답변을 참조하십시오.

주어진 키 시퀀스에 바인딩 된 명령을 프로그래밍 방식으로 가져 오려면 key-binding또는 키 시퀀스를 사용하여 lookup-key바인딩 된 명령을 반환하는 함수를 사용하십시오 . 기능 key-bindingC-h k사용하는 것입니다.

(key-binding (kbd "C-h m"))

C-h m모든 현재 키맵에서 검색하여 바인딩 된 명령을 반환합니다 . 이 함수 lookup-key는 단일 키맵에서 검색합니다.

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char

프로그래밍 방식으로 주어진 명령에 바인딩 된 모든 키 시퀀스를 얻으려면 where-is-internal아마도 사용할 함수일 것입니다. 로 끝나는 함수의 이름은 internalEmacs 사용자가 init 파일에서 사용하는 것이 아니라 독 스트링이있는이 함수가 그렇지 않다는 것을 암시하는 것 같습니다. 사용을 고려중인 사람 where-is-internal은 먼저 다시 매핑 하여 목표를 달성 할 수 있는지 먼저 확인해야합니다 .

특정 명령 (예 :)에 바인딩 된 키를 찾기위한 대안 forward-charsubstitute-command-keys(예 :) (substitute-command-keys "\\[forward-char]")입니다. 이는 특히 큰 텍스트에서 유용합니다.


의 문서를 where-is-internal보면 그것을 사용하는 것이 좋습니다. 또한 일반적 where-is--internal으로 "개인"기능에 대해 (이중 대시에주의) 와 같은 형식을 사용 합니다.
GergelyPolonkai

2
접미사의 사용법은 gnu.org/software/emacs/manual/html_node/elisp/…에-internal 설명되어 있습니다. 내부 C 함수에 사용해야합니다.
Tobias

4

오래된 질문이지만 새로운 독자를 위해 키 바인딩을 보는 다른 좋은 방법이 있습니다.

M-x describe-bindings

현재 사용 가능한 모든 바인딩, isearch 사용, 발생 등을 나열하여이 목록을 잘 활용합니다.

M-x describe-prefix-map

이것은 현재 모드에서 사용 가능한 모든 바인딩을 보여줍니다. 다른 읽기 전용 Emacs 버퍼와 마찬가지로 디스플레이 버퍼를 사용할 수 있습니다. 예를 들어 문자열 등을 자유롭게 검색 할 수 있습니다.

M-x describe-mode

현재 모드에 대한 일반적인 정보를 제공 할뿐만 아니라 사용 가능한 모든 키 바인딩도 나열합니다.

M-x describe-minor-mode

부 모드의 이름을 입력하라는 메시지가 표시되고 해당 부 모드에 대한 정보 및 키 바인딩이 표시됩니다.

참고 : 아래 예제는 추가 패키지를 사용합니다 ( MELPA ).

어느 키

이것은 당신이 그들을 필요로하기 직전에 바인딩을 보여줍니다. 예를 들어 접두사를 입력 C-x하거나C-c 해당 접두사에서 사용 가능한 바인딩 목록이 표시됩니다.

다음을 사용하여 현재 모드에서 사용 가능한 키 바인딩 목록을 볼 수도 있습니다.

M-x which-key-show-top-level

바인딩하는 것이 유용합니다 which-key-show-top-level선택한 키 코드에 하는 하므로 어디서나 사용 가능한 키를 볼 수 있습니다.

예를 들어, C-s( isearch-forward)에는 종종 알려지지 않은 광범위한 키 맵이 있습니다. 예를 들어 현재 검색 문자열을 사용하기 M-s o시작 occur했지만 Emacs를 사용하면서 수년간 이것에 대해 몰랐습니다. which-key주변 을 둘러 보면서 Emacs에서 희귀 한 보석을 많이 발견 할 수있었습니다.

https://github.com/justbur/emacs-which-key

가이드 키

가이드 키는 다음과 같은 방식으로 작동합니다. which-key 기능을 비교하기 위해 살펴볼 것을 권장 합니다.

https://github.com/kai2nenobu/guide-key

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.