2011년 4월 20일 수요일

[Emacs] Meta키 사망사건

사건의 발단은 윈도우 이동키를 새로 바인딩 하던 도중에 발생했다.

"C-[이랑 C-]는 바인딩 된 키가 없으니까 윈도우 이동키로 쓰면 편하겠네 +_+" 라며 describe-key 를 실행시켜 가며 확인하고 있었다.

문제는 C-[ 를 제대로 확인하지 않았다는 것. describe-key 에서 C-[를 누르니 ESC가 찍혔다는 것을 제대로 확인했어야 했는데 눈이 멀었나 보다.

어쨌든 그래서 C-[ 를 (other-window -1) 을 부르는 함수에 바인딩 시켰고 몇 가지 설정을 추가해가며 eval-buffer를 하고 시험해 보니 잘 작동하더라.

그런데... M-x 키가 죽어버렸다.
M-x is undefined.
뿐만 아니라 M- 이 사용되는 모든 단축키가 모두 죽어버렸다.

문제의 원인을 찾지 못 해서 마지막에 추가했던 옵션을 하나하나 제거해가며 확인하다 보니 관계없을 거라 생각했던 C-[ 가 문제를 일으켰던 것이다.

시험삼아 해당 바인딩을 제거한 후 C-[ x를 눌러봤다. M-x와 동일한 효과가 나왔다.

Ctrl-[키가 왜 Meta키로 인식되는지는 Mac OS X의 특징이던가 아니면 터미널의 역사와 관련된 부분을 살펴봐야 할 듯 하지만... 어쨌든 결론는 Ctrl-[ 키는 함부로 쓰지 말라는 것이다. -_-;

결론) Ctrl-[ 키는 Cocoa Emacs 에서는 기본적으로 Meta로 동작하기 때문에 함부러 바인딩 하면 안된다. (다른 OS는 확인 못 해 봤...)

댓글 없음 :