2009-05-27 3 views
32

Emacs에서 Ctrl + Tab 키 바인딩을 설정하려고합니다. 내가 그것을 사용할 때마다Emacs C-TAB에 대한 global-set-key

(global-set-key (read-kbd-macro "C-TAB") 'my-func) 

그러나, 나는

<C-tab> is undefined 

오류 메시지가 : 나는 다음과 같은 호출을 사용했다. 바인딩을 "C-tab"으로 설정하려고하면 오류 메시지가 나타납니다.

내 바인딩을 C-TAB에 어떻게 설정합니까?

답변

37
(global-set-key [C-tab] 'my-func) 
+0

감사합니다 [] 구문이 내가 잘못 갔다. –

3

read-kbd-macro을 사용하는 대신보다 일반적인 구문을 사용해보십시오.

;(global-set-key [(control tab)] 'my-func) 

더 간단한 구문이 효과가있을 것 같습니까?

자세한 내용은 read-kbd-macroglobal-set-key입니다.

+1

사용의 가장 큰 장점'(KBD) '같은 구문을 사용할 수 있다는 것을 이맥스 반환 'describe-key'를 호출하면 (Trey의 대답에 의해 잘 표현 된 것처럼) 다루기가 완전히 사소 해집니다. – phils

11

read-kbd-macro이 잘못 사용 되었기 때문입니다. 당신이 키에 바인딩 것을 볼 때 :

C-h k C-TAB 

이맥스를 알려줍니다 :

<C-tab> is undefined. 

당신은 read-kbd-macro 당신의 호출에>는 <을 포함해야합니다.

(global-set-key (read-kbd-macro "<C-tab>") 'my-func) 

, 나는 <C-TAB>을 생성하는 방법을 모르겠지만, <C-tab> 같은 아니에요. 다른 제안과는 달리

(equal (kbd "<C-TAB>") (kbd "<C-tab>")) 
-> 
nil 
45

, 당신이 이제까지 이맥스의 다른 버전에서 동일한 구성 파일을 사용하려는 경우 (기본적으로 같은 일 또는 read-kbd-macro) kbd를 사용하는 것이 좋습니다; kbd은 키 시퀀스의 내부 표현이 다른 여러 버전의 Emacs와 XEmacs에서 작동합니다.

  • 특수 단어 RET, SPC, TAB, DEL, LFD, ESC 및 NUL 특별한 를 나타낸다 :

    (global-set-key (kbd "<C-tab>") 'my-func) 
    

    read-kbd-macro에서 사용하는 입력 형식

    edmacro-mode의 참조 문에 설명되어 제어 문자. 단어는 대문자로 작성해야합니다.
  • 각괄호의 단어, 예를 들어, 창 <>

    , < 다운> 또는 < F1>는 기능 키이다. 표준 구성에서 기능 키 < return> 및 제어 키 RET는 동의어입니다. RET, SPC 등의 단어에는 꺾쇠 괄호를 사용할 수 있지만 은 필요하지 않습니다.

다소 불행하게도 작성된 것입니다; 첫 번째 글 머리 기호에서 언급 한 TAB은 TAB의 ASCII 문자이며 Control 수정자를 추가하면 무의미 해집니다. Control-Tab을 누를 때, Emacs는 윈도우 시스템을 통해 (텍스트 터미널에서는 작동하지 않을 것입니다) <tab>과 같이, C-<tab> 또는 <C-tab>과 같이 표현할 수있는 Control 수정자를 볼 수 있습니다.

+0

텍스트 단말기의 emacs에서 ''에 대한 해결 방법이 있습니까? 나는 serverfault에 물었다 : http://serverfault.com/questions/81688/problem-with-ctrl-tab-keybinding-in-emacs-in-gnome-terminal – Tom

+0

kbd는 무엇을 의미합니까? 덕분에 – why

+0

kbd는 http://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Sequences.html에서 문서화 된 매크로이며 Emacs 문서에서 사용 된 키 바인딩 형식을 함수에서 이해할 수있는 값으로 변환하는 데 사용됩니다 글로벌 세트 키 (global-set-key). –

6

global-set-key을 대화식으로 호출 할 수 있습니다. 그런 다음 repeat-complex-command와 올바른 바인딩 명령을 볼 수있다 (또한 KeybindingGuide 참조)

  1. M-x: global-set-key
  2. 입력 키 조합을 당신은 apropiate 명령을 볼 수
  3. 사용 C-x ESC ESC (repeat-complex-command)합니다. 귀하의 경우에는 내가 얻을 :은 GNU 이맥스에서

    (global-set-key (quote [C-tab]) (quote my-func)) 
    
0

은 참조 설명서를 LISP, 섹션 21.1 "키 시퀀스", 그들은 탭 키를 나타 내기 위해 \의 t를 사용하여 참조합니다. 리습 참조 설명서에 표시된 구문을 사용

, 나는 다음과 같은 명령을 사용합니다 :

(global-set-key (kbd "C-\t") 'my-func)

관련 문제