EmacsWithGentoo

From 흡혈양파의 인터넷工房
Jump to navigation Jump to search
Emacs를 Gentoo에서 처음 사용할때

설치

emerge emacs로 설치한다. 버전은 24로 사용. 대략 사용된 USE Flag는 다음과 같다.

root ~ # emerge -pv emacs

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] app-editors/emacs-24.2:24  USE="X alsa dbus gconf gif gnutls gpm gtk gzip-el imagemagick jpeg m17n-lib motif png sound svg tiff toolkit-scroll-bars xft 
xpm -Xaw3d (-aqua) -athena -games -gsettings -gtk3 -hesiod -kerberos -libxml2 -livecd -pax_kernel (-selinux) -source -wide-int" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

 * IMPORTANT: 2 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

지금의 use flag는 gtk2를 대상으로 설치하게 된다. 본인은 gnome2기때문에 gtk3가 싫다. (2013년2월17일기준)


테마세팅

emacs는 기본적으로 ~/.emacs 를 설정파일로 사용한다. resource는 ~/.emacs.d/ 안에 넣게된다.

일단 아래의 사이트에서 아래의 파일을 받는다


https://github.com/chriskempson/tomorrow-theme/blob/master/GNU%20Emacs/tomorrow-night-bright-theme.el


받아서 아래의 디렉토리에 넣는다.

~/.emacs.d/theme/


아.. 쉽다.. 일단 테마파일은 설치했고 이제부터 설치한 테마파일을 설정 해야할차례가 됐음.

~/.emacs파일에 아래의 내용을 넣고 이맥스를 다시 시작해주도록한다.

(add-to-list 'custom-theme-load-path "~/.emacs.d/theme")
(load-theme 'tomorrow-night-bright t)
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror)
(put 'upcase-region 'disabled nil)

emacs의 기본 바탕이 검은색으로 바뀐다. 아 좋다.


폰트설정

폰트의 설치

대다수의 gentoo에서 사용하는 나눔고딕코딩은 사실 emacs에서 조금의 문제가 있다. 그래서 license덕분에 나눔고딕코딩을 emacs에서 사용할 수 있도록 수정한 무난코딩이라는게 있다.

감사하게도 관련된 이빌드를 올려주신분이 있으니... 이 URL을 참고하도록 한다.


http://www.gentoo.or.kr/tips/406545


받아서 ebuild파일로 만들어 설치를 하도록한다. 문제는.... 저 ebuild가 완벽한게 아니라서 설치 디렉토리가 /로 잡힌다...

설치된 ttf파일을 /usr/share/fonts/TTF 정도로 넣어주도록 한다. 물론 fc-cache를 해주는것도 잊지 말도록 한다.

아까의 ~/.emacs 파일을 열어서 아래의 라인을 추가해주도록 한다

(set-fontset-font "fontset-default" '(#x1100 . #xffdc) '("무난코딩" . "iso10646-1"))


emacs를 재시작한다. 여기까지하면 다음정도의 화면을 볼 수 있다.

Emacs tomorrorw theme.png


간단한팁 몇가지

emacs에 현재 작성한 lisp코드를 바로 emacs에 적용하는법

  • C-x b scratch 로 새로운 버퍼를 연다
  • lisp코드를 작성한다
  • M-x eval-buffer 로 현재 열려있는 버퍼의 lisp코드를 emacs에 적용시킨다
  • 사실......... 실패하면 emacs 재시작........


emacs에서 buffer란?

emacs는 파일을 열면 실제 파일을 편집하는게 아니라 메모리상에 buffer를 잡아서 편집을 다 하고 save를 하면 그때 파일에 저장한다

C-x b 는 새로운 버퍼를 생성하는 단축키. 고로 버퍼를 저장하는경우는 C-x C-s로 Save를 하는게 제일 좋다.


emacs의 elisp 명령행모드

M-x ielm 으로 하면 elisp의 명령행모드를 사용할 수 있다.


emacs의 shell호출

M-x eshell 을 누르면 shell이 나온다. 물론 ctrl-d 또는 exit를 누르면 emacs로 돌아올 수 있다.


emacs의 daemon mode

  • emacs --daemon 으로 daemon mode로 실행
  • emacsclient -c 로 daemon mode의 emacs를 호출해서 사용


emacs에서 buffer관련 단축키

  • C-x 0 없애고 싶은 버퍼에서 이 단축키를 누르면 현재 버퍼가 죽는다
  • C-x 1 남겨두고싶은 버퍼에서 이 단축키를 누르면 다른 버퍼가 죽는다
  • C-x 2 (vertical) 화면 split
  • C-x 3 (horizotal) 화면 split
  • C-x 5 2 프레임 하나 더 띄우고 싶은경우


emacs에서 mode를 전환하기

  • M-x mode_name 하면 mode가 바뀐다
  • M-x sql-mode는 sqlmode, M-x c-mode는 C언어 mode


emacs에서 주석을 처리하는 단축키

  • mode에 따라서 주석 처리시 삽입되는 문자가 바뀜
  • sql mode는 -- 문자열
  • c mode는 // 문자열


emacs 에서 검색을 하려고 할때

  • C-s 순방향검색
  • C-r 역방향검색
  • grep같은 async 방식은 M-x list-matching-lines
  • M-x grep / find-grep / find-grep-dired 등도 있음
  • 고급검색은 https://kldp.org/node/61514 주소를 참고


emacs 에서 영역을 선택 하려고 할때

gtkemacs(xemacs)에서는 별로 쓸모가 없지만 사실 terminal 에서 사용하는경우에는 꽤나 필요하다. 복사를위한 영역등을 선택하는 key 를 설명한다.

C-SPC 다음에

  • C-n 혹은 C-p로 라인단위
  • C-f/b는 글자단위
  • M-f/b는 단어단위
  • M-a/e는 문장단위
  • M-}/{는 단락단위


emacs 의 c-mode

emacs 의 c-mode 에서 c 소스를 comile 하려고할때의 단축키

  • M-x compile RET


해당되는 C 소스에 compile 관련 option 을 넣어놓으려 할때는. 소스코드의 맨 아래부분에 아래같은 부분을 넣어주면 된다.

// Local Variables:
// Compile Command: gcc blah blah -o blah
// End:


그외 emacs단축키

  • C-x C-c emacs종료(몇년동안 익지않은 단축키)
  • C-x C-f 현재 버퍼로 파일열기
  • C-x C-s 현재 버퍼를 저장하기
  • M-l 커서기준 현재단어 소문자
  • M-u 커서기준 현재단어 대문자


참고자료

Programming in the Emacs

  • 신성국님이 KLDP 10주년 컨퍼런스에서 발표하신내용
  • 자료는 http://www.cinsk.org/articles/ <- 이 주소에서 찾으면 된다.
  • 물론 자료원본은 저자에게 확인받고 올리는것.
  • File:Emacs-devel.odp 이 파일을 다운로드받으면 된다