2011년 3월 21일 월요일

[Emacs] 쉘(shell) 버퍼의 글자나 색상이 깨지는 경우

Emacs의 shell 명령(M-x shell)은 Emacs 버퍼 내에 쉘을 띄워준다. 거의 모든 것을 Emacs 내에서 처리한다는 주의(?)에 의해 이 명령은 eshell과 함께 굉장히 자주(?) 사용되는데 터미널 설정이나 OS에 따라 특정 문자가 깨지거나 색상이 표현되는 부분에서 알 수 없는 문자가 출력되는 경우가 있다.


위 스크린샷은 우분투에서 폰트 설정을 몇 가지 한 후에 M-x shell 로 쉘을 실행시켜서 ls를 실행해 본 화면이다. 보다싶이 깨져보이는 듯한 문자가 표시되고 있다. (파일 내용들 자체는 신경쓰지 말자. 그냥 홈디렉토리다 -_-;;)

이 문제를 해결하기 위해서는 단순히 M-x ansi-term 이라는 함수를 실행하는 것이 있다. ansi라는 이름에서 보이듯이 터미널 출력 문자를 ansi 표준에 맞게 바꿔서 출력해 주기 때문에 깨지는 현상이 어느 정도(?) 해결된다.

하지만 ansi-term 이라는 걸 타이핑 하는건 shell을 타이핑 하는 것 보다 귀찮다. -_-;; 따라서 몇 가지 설정을 해서 M-x shell이 ansi 모드로 실행되도록 설정할 수 있다.

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
이 두 줄의 명령을 scratch 버퍼에 쓰고 실행(M-x eval-buffer) 시킨 후 M-x shell 을 실행해서 ls를 해서 확인해보자.


(출력된 내용은 앞의 이미지랑 뭔가 다른게 그냥 넘어가자 -_- 찍어 놓은 스크린샷을 고치기가 너무 귀찮다;;)

어쨌든 또 한 건 해결~

댓글 없음 :