EMACS


EMACS 프로그램

 

EMACS Community

  • EmacsWiki - EMACS에 대한 많은 노하우가 정리되어 있다.
 

EMACS 가이드

  • A guided tour of Emacs (GNU Site) - 처음 EMACS를 사용해보기로 마음 먹었다면 꼭 한번 읽어볼 만 하다.
  • Effective Emacs - Emacs를 효과적으로 사용하는 방법에 대한 10 가지 내용이 잘 정리되어 있다.
 

EMACS mode

 

알아두면 편리한 팁

Encoding 자동 판별 모듈 - Unicad


Windows 환경의 EMACS에서 Gmail SMTP 사용하기
 

Windows 환경의 GNUS에서 Gmail IMAP 사용하기


유용한 ERC 설정 몇 가지

 

파일 encoding 변환하기

  • 현재 버퍼를 다른 encoding으로 변환하여 저장하고자 할 때는 C-x C-m f 키(또는 M-x set-buffer-file-coding-system)를 누른 뒤 원하는 encoding(예, utf-8, cp949, euc-kr 등등)을 입력하고 엔터를 입력한다.
  • 현재 버퍼의 encoding이 적절하지 않아서 특정 encoding으로 다시 읽어오고자 한다면 C-x C-m r 키를 누른 뒤 원하는 encoding(예, utf-8, cp949, euc-kr 등등)을 입력하고 엔터를 친다.
  • 이제 EmEditor 없이도 그럭저럭 다국어 파일을 편집할 수 있지 않을까? ㅡㅡ^
 

백업 파일을 만들지 않게 설정하기

백업 파일을 생성하지 않도록 하기 위해서는 .emacs 설정 파일 내에 다음을 추가한다.
(setq make-backup-files nil)
 

viper-mode

EMACS에서 VI 에디터와 동일한 키맵을 사용할 수 있게 해준다.
모든 기능을 전부 다 사용해본 것은 아니라 정확하진 않지만, 단순히 키맵만이 아니라 VI 에디터의 다른 기능들도 거의 대부분 다 지원이 되는 것 같다.
  • viper-mode 시작: M-x viper-mode
  • viper-mode 종료: M-x viper-go-away
  • viper-mode 간이 on/off: C-z
 

새로운 scratch buffer를 만들고 싶을 때

실수로 *scratch* buffer를 닫았을 경우 새로운 *scratch* buffer를 열고 싶을 수도 있다.
이럴 때는, C-x b *scratch* <enter>를 입력하면 된다.
그리고, M-x lisp-interaction-mode 라고 실행하여 Lisp Interaction Mode로 변경해준다.
아마 다른 특수 목적 버퍼들도 같은 방법으로 생성할 수 있지 않을까?
 

Windows용 EMACS에서 한글 폰트와 영문 폰트 따로 지정하기

22.x를 포함한 그 이전 버전에서는 아래와 같이 지정해주면 된다. (KLDP에 정리되어 있던 내용을 발췌하여 정리한 것)
아래 예제에 사용된 Bitstream 폰트는 별도로 설치해야 한다.
;; for backup
;(set-face-font 'default "-*-돋움체-normal-r-*-*-12-*-*-*-c-*-ksc5601-*")
(create-fontset-from-fontset-spec "-*-Bitstream Vera Sans Mono-*-*-*-*-14-*-*-*-*-*-fontset-term14,
ascii:-*-Bitstream Vera Sans Mono-normal-r-normal-*-14-*-*-*-*-*-*-*,
korean-ksc5601:-*-굴림체-normal-r-normal-normal-14-*-96-96-c-*-ksc5601.1987-*")

(set-face-font 'default "fontset-term14")

23.x 이후 버전에서는 font 지정 방법이 더 간단하게 변경되었다.
아래 예제에서는 영문 폰트로 Liberation 폰트를 사용하고 있다. Bitstream 폰트의 경우 소문자 m의 간격이 잘못되어 있는 버그가 있고, DejaVu 폰트의 경우 emacs를 멈추게 만드는 위력을 가지고 있다. ㅡㅡ; 더 이상 아무 문제 없이 사용할 수 있다. (한글 글꼴은 맑은 고딕을 사용했음)
그리고, 한글 폰트 지정 시에 'hangul symbol을 사용하면 전각 특수 문자들이 제대로 표기되지 않는 문제가 있어 코드 영역을 직접 지정하는 방법을 사용했다. (코드 영역 직접 지정 방법은 Google 검색을 통해 찾은 이 페이지에서 참고 했음)
(when window-system
 ;(set-face-font 'default "-outline-Courier New-normal-normal-normal-mono-16-*-*-*-c-*-iso10646-1")
 ;(set-face-font 'default "-outline-Bitstream Vera Sans Mono-normal-normal-normal-mono-16-*-*-*-c-*-iso10646-1")
 ;(set-face-font 'default "-outline-DejaVu Sans Mono-normal-normal-normal-mono-16-*-*-*-c-*-iso10646-1")
 (set-face-font 'default "-outline-Liberation Mono-normal-normal-normal-mono-16-*-*-*-c-*-iso10646-1")
 ;(set-fontset-font "fontset-default" 'hangul '("malgun gothic" . "unicode-bmp"))
 (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("malgun gothic" . "unicode-bmp")) ;; 유니코드 한글영역
 (set-fontset-font "fontset-default" 'kana '("ms mincho" . "unicode-bmp"))
 (set-fontset-font "fontset-default" 'han '("ms mincho" . "unicode-bmp"))
 ;(set-fontset-font "fontset-default" 'cjk-misc '("ms mincho" . "unicode-bmp"))
 (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("new gulim" . "unicode-bmp")) ;; 유니코드 사용자 영역
)

Windows 환경에서 폭이 일정한 글꼴 설정하기


EMACS를 Server mode로 구동하기

EMACS에서 다음 명령으로 server mode 구동이 가능하다.
(server-start)

.emacs 파일에 추가해서 자동으로 실행되도록 하는 것도 가능하다.
Server mode가 활성화 되면 emacsclient를 사용해서 새로운 파일을 열 수 있다. (다음 예제 참고)
C:\emacs\bin\emacsclientw.exe -n C:\Temp\test.el

EMACS Lisp 소스 파일 compile 방법

  • 하나의 .el 파일을 .elc 파일로 만드는 방법이다.
    (byte-compile-file "파일 이름")
  • 특정 폴더 내의 모든 .el 파일을 다시 compile하는 방법이다.
  • "사용자 확인 플래그"를 t로 지정하면 개별 파일에 대해 compile할 지 물어본다.
    (byte-recompile-directory "폴더명" "사용자 확인 플래그")
  • 마지막으로 .el 파일을 .elc 파일로 일괄 변환하는 방법이다. batch-byte-compile 명령을 사용한다.
    c:\> emacs -batch -f batch-byte-compile *.el

EMACS에서 세벌식 최종 사용하기

22.x 이하 버전인 경우 세벌식 사랑 모임의 이 페이지에서 필요한 파일을 다운로드 하고 readme.txt 내용 대로 설치한다.
실행 중에 한글 자판 방식을 변경하고 싶다면 *scratch* 버퍼에서 다음과 같이 실행해주면 된다.
(setq default-input-method "korean-hangul3f")

23.x 버전에서는 , 등의 글자도 제대로 입력되고 세벌식까지 지원하는 다른 입력기로 변경되었고, 기본으로 포함되었기 때문에 별도의 한글 입력기를 설치할 필요가 없다.
이 입력기는 블로그 http://sylphong.egloos.com/ 주인장께서 만들었다고 한다.
아무튼, 세벌식 최종을 사용하기 위해서는 .emacs 파일에 다음과 같이 추가하는 것으로 충분하다.
(setq default-input-method "korean-hangul3f")
(setq default-korean-keyboard "3f")


VisEmacs
Visual Studio에서 EMACS를 편집기로 사용할 수 있는 Add-in.
(그런데, 실제로 사용해보니 EMACS 22.1 이후의 버전에 대한 고려가 안되어 있는 것 같다. 소스 코드 일부 수정이 필요할 지도...)

Indent에 tab 문자를 space 문자로 확장하기

M-x tabify       ;; Indent에 tab 문자 사용
M-x untabify     ;; Indent에 space 문자 사용,  Vim에서는 :retab:set expandtab

직접 만들어 본 것