실제에 C- [를 바인딩하는 방법


11

C-[무언가 에 바인딩 하고 모든 M-(메타) 바인딩을 엉망으로 만들 수있는 방법이 있습니까?

이 질문이 처음 나오는 것은 아닙니다 . 불행하게도, 이전 스레드에서 제공되는 유일한 솔루션은 a) Linux 전용입니다. b) Emacs와 관련이없는 외부 도구 (Linux 전용)가 필요합니다. 같은 맥락에서 나는 OS X에서 Karabiner 와 같은 것을 사용 하여 C-[Emacs가 그것을 얻기 전에 시퀀스 를 훔칠 수 있었지만 이것은 어색하고 비싸다.

이 번역 주장 이맥스 인 점을 감안 C-[ESC, C-iTAB아마 다른 사람 나는 것 매우 이러한 관계를 끊고 다시 귀중한 키 시퀀스를 얻을 것을 좋아합니다. 최근 에이 문제에 전속력으로 달려 조용한 무고한 smartparens 모드를 비난했습니다 .

참여하는 것이 가능한 솔루션 function-key-mapkey-translation-map여기서 논의 (또는 내가 뭔가 잘못된 일을 해요)하지만 슬프게도 그 중 하나가 더 이상 일을하거나 처음부터하지 작업을했다. 나는 그것이 올바른 방향으로 가고 있다고 생각합니다.


3
이맥스는 "번역 주장하지 않습니다 C-[ESC". 둘은 같은 것 입니다. 마찬가지로, C-iTAB다른 이름입니다 같은 ASCII 제어 코드는.
Drew

2
@Drew control과의 키 조합 이 GUI 응용 프로그램에서 ASCII 제어 코드 (32 개만 있음)에 매핑 되어야 한다는 것이 가장 분명한 것은 아닙니다. (또는 xterm에서도 많은 경우 고유 한 이스케이프 시퀀스를 전송하기 위해 modifyOtherKeys 모드가 있습니다. 특히 이것에 대해서는 잘 모르겠습니다)
Random832

3
@ Random832 : 문자 를 구분할 권리가 있습니다. 에디터가 키 시퀀스 C-[ (press Ctrland hit [)를 C-[제어 캐릭터 (일명 ESC캐릭터) 에 매핑하는 것은 다소 논리적이고 간단 하지만 에디터를 설계하는 사람에게는 의무가 아닙니다. 그리고 네, 이맥스는 그렇게합니다. C-[ESC같은 문자하지만 키 Ctrl+ [Esc필요는 없습니다 특정 문자에 매핑 될 수있다.
Drew

답변:


8

내 자신의 구성 에서 적응 :

(define-key input-decode-map [?\C-\[] (kbd "<C-[>"))
(global-set-key (kbd "<C-[>") 'butterfly)

이것은 분명히 GUI에서만 작동합니다.

편집 : input-decode-map터미널 로컬이므로 참고하면 수정하면 작동 emacsclient하지 않지만을 사용하면 수정됩니다 emacs. 프레임에서 작동하는 명령으로 래핑하고 after-make-frame-functions후크에 추가하여 구성의 문제를 해결했습니다 .


이 합법적으로 나타납니다 감사합니다! Emacs가 Meta와 ESC를 같은 것으로 취급하지 못하게하는 방법이 있는지 궁금합니다. 또한 내가 단순히 일부 Emacs 용어를 엉망으로 여기에서 바로 생각하지 않는지 궁금합니다
zeRusski

1
다른 질문입니다. 새로운 질문을여십시오.
wasamasa

흥미롭게도 가지고 <C-i><C-[>바인딩 된 뒤로 TAB하고 ESC당신이 당신의 설정 플랫 아웃 제안처럼 글로벌 맵에서 내 이맥스 내가 그들을 누를 때마다 충돌 :
zeRusski

1
글쎄, 당신이 문자 "j"를 입력했을 때 조타 충돌에 대한 버그를 겪은 사람이라는 것을 고려할 , 나는 Emacs 빌드 가 충돌 한 것으로 비난하고 OS X에 대해 다른 것을 시도해 보라고 제안합니다.
wasamasa

내가 많은 빌드를 시도했다고 믿습니다. 내가 살아야 할 또 다른 미스터리가 될 것이다. 내가 관리합니다-) 솔루션 주셔서 감사합니다
zeRusski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.