emacs 기본 설정하기 (.emacs파일)

2015. 1. 16. 14:52

emacs는 자체의 언어인 emacs lisp을 통해 에디터 자체를 제어합니다. 즉, 에디터를 프로그래밍 할 수 있다는 얘기입니다. 그래서 emacs를 email client로 사용하는 사람도 있고, mp3기능도 탑재하여 사용하는 사람도 있다고 하네요. 그런 고급기능들은 차치하고라도, 글꼴설정이나, 여러 기능설정을 위해서 .emacs파일을 만들고, 수정해 봅니다.


윈도우즈에서는 파일명 없이 확장자만 존재하는 파일생성이 불가능합니다. 하지만 emacs에디터에서라면 가능합니다. 설정한 .emacs는 윈도우의 환경변수중 %home%디렉토리에 있어야 로드하고, 해당위치는 윈도키+R에 %home%을 입력하시면 들어갈 수 있고, 제어판에서 변경할 수도 있습니다. emacs의 바로가기 설정에서 starts in을 runemacs.exe의 위치디렉토리가 아닌 %home%으로 지정하시면 emacs의 기본 작업디렉토리가 %home%으로 설정됩니다.


먼저 C-x C-f를 눌러 find file명령을 실행합니다. 존재하는 파일을 입력하면 열리고, 존재하지않는 파일명을 입력하면 생성할 수 있습니다. 기본디렉토리가 %home%디렉토리일 것이므로 .emacs라고 입력하고 엔터를 누르면 새 파일이 생성됩니다. 아래와 같은 것들을 입맛에 맞게 조정하시고  C-x C-s를 누르시면 파일이 저장되고 다음번 emacs 실행시 .emacs파일에 설정된 내용을 불러들여 조정하게됩니다.


1. 창 크기와 위치 지정

항상 같은 크기로 창을 열고 싶은 경우 사용할 수 있는 메뉴입니다.

;;#frame size
(add-to-list 'default-frame-alist '(height . 48))
(add-to-list 'default-frame-alist '(width . 80))
(set-frame-position (selected-frame) 0 0)

위에 지정된 것은 높이 48, 너비 80, 창의 왼쪽 위 모서리를 화면상 0,0좌표에 위치하도록 한 것입니다.


2. 글꼴설정

이 것은 이맥스 창의 메뉴에서도 설정할 수 있지만, .emacs에 저장해두면 더 편리할 것입니다. 

;;#emacs windows
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:family "글꼴이름" :foundry "unknown" :slant normal :weight normal :height 98 :width normal)))))

원하는 글꼴을 높이 98(아마도 11혹은 12pt)로 설정한 것입니다.


3. Rainbow-delimiters

코딩을 하다보면 수많은 괄호를 만나게 됩니다. C같은 언어는 큰 상관 없겠고, Python같은 언어는 더더욱 별 상관이 없겠지만 Lisp같은 언어를 하다보면 괄호가 너무 많아 괄호 색이 연해지고 매칭되는 괄호끼리 조금씩 다른색으로 나타나면 보기 편해집니다.

따라서 "http://www.emacswiki.org/emacs/RainbowDelimiters"에 방문하여 하라는대로 설치하도록 합시다. 위에서 별 상관없다고 한 언어도 훨씬 보기 깔끔해집니다.

.el파일은 "emacs 설치 디렉토리\share\emacs\site-lisp"에 넣어주면되고, 기왕이면 하라는대로 M-x byte-compile-file <location of rainbow-delimiters.el>을 실행하여 속도도 향상시키도록 합시다.


4. 매칭되는 괄호 강조하기

수많은 nesting을 하다보면 지금 이 괄호가 몇번째 괄호인지 헷갈릴 때가 있습니다.(특히 LISP 사용시) 따라서 아래와 같이 설정해줍니다.

;;show paren mode
(show-paren-mode 1)
(setq show-paren-delay 0)


5. 시작화면 스킵하고 기본 모드 설정하기

괜히 쓸데없이 첫화면을 보여준다는 생각이 들 때가 있습니다. 다음을 추가해 줍시다.

;;skip startup screen and specify default mode
(setq inhibit-startup-screen t)
;;(setq initial-major-mode 'scheme-mode)

그러면 실행시 바로 *scratch* buffer로 넘어가서 지정된 모드(위의 경우 scheme-mode)로 전환됩니다. 현재는 주석처리해두고 기본 lisp-interaction mode로 사용중입니다.


6. 상태표시줄에 시간표시하기

;;show time on status bar
(display-time)


7. 몇가지 유용한 설정

;;#useful settings
(transient-mark-mode t)
(global-linum-mode t)
(global-set-key [C-kanji] 'set-mark-command)

첫번 째 줄은 선택영역 음영처리하는법입니다. emacs에서는 마우스드래그로 블록설정을 하지 않습니다. C-Spc로 시작지점을 정하고 커서를 이동한 후 C-Spc로 끝점을 설정하여 블록설정을 하게 됩니다. 이 때 어디부터 어디까지 설정되고있는지를 보여주게하는 설정입니다.

두 번째 줄은 줄수를 보이게 하는 방법입니다. 몇번째 줄의 코드인지를 알 수 있게 해줍니다.

세 번째 줄은 윈도에서 S-Spc, C-Spc로 한영전환키와 한자키를 대체해서 사용하는 경우에 C-spc를 한자키로 인식하여 생기는 문제를 해결하기 위함 입니다.


8. 단축키 설정

;;#useful shortcut setting
(global-set-key [f3] 'compile)
(global-set-key [f4] 'gdb)

(global-set-key [f5] 'comment-region)
(global-set-key [f6] 'uncomment-region)
 
(global-set-key [f7] 'previous-buffer)
(global-set-key [f8] 'next-buffer)
 
(global-set-key [f12] 'shell)

여러가지 키를 설정하는 방법입니다. f3, f4는 gcc로 C언어를 사용할 때 기준으로, compile과 디버깅 명령을 실행하는 키이고, 나머지 5개는 일반적으로 유용하게 사용할 수 있도록 설정했습니다. f5,f6은 선택영역의 각주화, 비각주화를 담당하고 f7, f8은 버퍼간 이동을 쉽게해줍니다. f12를 누르면 shell(windows에서는 cmd) 버퍼가 실행됩니다.



이쯤되면 기본적인 설정은 모두 마쳤고, 이후에 C++을 제대로 사용하기위한 컴파일러설정이나 다양한 편의를 제공해주는 모드(auto complete, autopair 등)를 설치하는 법을 게제할 예정입니다.


emacs/General