vim에서는 기본 모드가 항상 편집 모드이고 쓸수있는 mode가 고정되어 있는 반면에, emacs에서는 주 모드와 부 모드를 입맛에 맞게 바꾸어 쓸수 있습니다. 예를 들어 사용자는 text-mode라는 텍스트 문서를 편집하고 작성하는 기능을 가진 주 모드를 쓰면서, 글자의 색을 바꿔주거나 들여쓰기 내어쓰기등을 사용자 정의대로 기능을 수행하는 부 모드를 쓸 수 있습니다.
- 평소에 너무 IDE에 의존한다는 생각이 들어서 범용적인 TextEditor를 사용해보자는 결심을 하고 쓰는데 어려웠던 사항을 기록하려고 합니다.
- emacs 를 오랫동안 써온 입장에서 IDE 정도는 의존해도 됩니다. OS 의존을 벗어나는게 더 중요한것 같습니다.
- emacs 를 오랫동안 써온 입장에서 IDE 정도는 의존해도 됩니다. OS 의존을 벗어나는게 더 중요한것 같습니다.
- Download는 여기서 하면 됩니다. 윈도우즈 용이라 버전이 약간 낮네요.
- 최소 mac 가능한 ubuntu 에서 사용하는게 정신건강에 좋습니다. ecb, cedet 등을 커맨드 한번에 설치 하느냐, 여러번 거쳐서 설치하느냐는 하늘과 땅 차이입니다.
윈도우는 개발자의 OS 가 아닙니다
Emacs Mode ¶
Major Mode ¶
Minor Mode ¶
Tramp ¶
- emacs 환경 그대로 remote/ssh/docker/sudo 등을 바로 사용할 수 있게 해줍니다.
- emacs 는 dired mode 는 파일을 관리하고 browse 할 수 있는데, tramp 를 활용하여 remote 를 local 처럼 사용할 수 있습니다.
- shell-mode 와도 잘 결합하여 remote 에 쉘로 바로 떨어질 수도 있습니다.
- 옛날부터 multi-hop 접속도 처리할 수 있었습니다.
ssh 설정이 더 쉽습니다
- emacs 는 dired mode 는 파일을 관리하고 browse 할 수 있는데, tramp 를 활용하여 remote 를 local 처럼 사용할 수 있습니다.
- tramp 로 sudo 사용하기 : M-x-f
/sudo::/etc/
- tramp 로 ssh 사용하기 : M-x-f
/ssh:you@remotehost|sudo:remotehost:/path/to/file
Python 사용하기 ¶
Python을 Emacs에서 쓰려니까 환경변수 설정하는데 한 번 삽질하고 경로 잡아주는데 또 삽질 했습니다.
Emacs는 HOME 이라는 환경변수를 이용해서 사용자 설정 파일인 .emacs(이름 앞에 점 하나 있습니다.)파일을 읽어들입니다. 이 환경변수에는 경로가 들어가는데 그 경로에 사용자 설정 파일이 있어야 합니다. 제어판->시스템->고급->환경변수 안에 HOME이라는 환경변수를 추가하고, 그 경로 밑에 .emacs를 설치해야 합니다. .emacs 파일 내용은 다음과 같이 만듭니다.
(autoload 'python-mode "python-mode" "Python Mode." t) (add-to-list 'auto-mode-alist '("\.py\'" . python-mode)) (add-to-list 'interpreter-mode-alist '("python" . python-mode))
경로 잡아주기는 순전히 주변지식이 부족한 탓이었습니다. 파이선 폴더가 윈도우 환경변수인 PATH에 등록되지 않아서 그랬습니다. 이 역시 제어판->시스템->고급->환경변수 안에서 수정할 수 있습니다.
.emacs ¶
- 이맥스 설정 파일입니다.
- 일반적으로 사용자의 HOME 디렉토리 밑에 저장됩니다.
- Emacs 처음 설치 시에는 해당 파일이 존재하지 않는 경우도 있습니다. 이럴 때는 당황하지 마시고 HOME 디렉토리 밑에 .emacs라는 이름으로 파일을 만들어 주시면 됩니다.
- GNU Emacs 사용시 Windows 7 환경에서 c:\Users\UserName\AppData\Roaming 디렉토리에 저장됩니다.
- .emacs 파일을 작성하거나 편집할 필요가 있을 경우에는 C-x-f ~/.emacs로 해 주면 Windows 환경에서도 알아서 HOME 디렉토리 밑에 만들어 줍니다.
- .emacs 파일을 작성하거나 편집할 필요가 있을 경우에는 C-x-f ~/.emacs로 해 주면 Windows 환경에서도 알아서 HOME 디렉토리 밑에 만들어 줍니다.
- ntemacs 에서는 C:\Documents and Settings\UserName\Application Data 에 저장됩니다.
.emacs.d ¶
- Emacs에서 받는 몇몇 파일들이 다운되도록 지정된 디렉토리입니다.
- 주로 Emacs Wiki에서 받은 파일들이나 다양한 .el 파일들을 넣는 데 사용합니다.
- ELPA에서 받은 파일들도 기본적으로 이쪽으로 들어가게 됩니다.
emacs의 유용한 확장 기능 ¶
ELPA ¶
- Emacs Package Manager
- Emacs의 확장 기능은 .el(Emacs Lisp 확장자) 파일을 읽어오는 방법으로 이루어진다. 따라서 .el 파일만 있으면 확장 기능을 사용할 수 있는데, ELPA 이전까지는 통일된 .el 파일의 배포 방법이 없었기 때문에 기능을 추가하려면 직접 파일을 (EmacsWiki나 github이나 다양한 방식으로) 다운받아야 하는 불편함을 감수해야 했다. ELPA는 이러한 흩어진 파일(= 확장 기능)들을 통합해서 받을 수 있는 기능을 제공하고 있다.
- 설치
- Emacs 버전 24 이후부터는 기본적으로 포함되어 있음.
- Emacs 23까지
- package.el을 컴퓨터에 저장한다. 저장 위치는 아무 곳이나 상관 없지만 되도록이면 HOME 디렉토리에 .emacs.d 디렉토리를 만들어서 그 안에 넣어 주도록 하자.
- .emacs 파일에 다음과 같이 적는다.
- package.el을 컴퓨터에 저장한다. 저장 위치는 아무 곳이나 상관 없지만 되도록이면 HOME 디렉토리에 .emacs.d 디렉토리를 만들어서 그 안에 넣어 주도록 하자.
- Emacs 버전 24 이후부터는 기본적으로 포함되어 있음.
(load-file "~/.emacs.d/package.el") (require 'package) ; Add package-archives (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) ; Initialize (package-initialize)
- 사용법
- M-x package-list-packages로 다운 받을 수 있는 Package list를 볼 수 있음.
- 해당 패키지 줄에서 i(install)로 설치할 패키지의 선택, d(delete)로 지울 패키지 선택, x(execute)로 선택된 작업들 실행.
- 강제 삭제 : d -> e(혹은 x)로 해당 패키지를 지울 수 있긴 한데 제대로 지워지지 않는 경우가 좀 있다(...). 그럴 경우는 해당 파일이 ELPA의 폴더 안에 들어가 있기 때문에 ~/.emacs.d/elpa에 들어가서 해당 패키지의 폴더를 지워버리면 된다. 그 후 Emacs를 다시 기동해서 M-x package-list-packages를 보면 해당 패키지가 설치 항목에서 지워진 것을 볼 수 있을 것이다.
- M-x package-list-packages로 다운 받을 수 있는 Package list를 볼 수 있음.
- 추천 패키지 : Anything or helm, auto-complete, tabbar, ecb, yasnippet
CEDET ¶
CEDET이란?
참고#2. lisp코드중에서 load file 하는 부분을 나같은 경우는(load-file "~/.emacs.d/cedet/common/cedet.el")과 같이 적었다. 경로의 ~/는 나는 윈도우에서 cygwin을 통해서 emacs를 쓰고 있어서 환경변수 HOME의 경로를 저렇게 표현할 수 있다.
참고#3. lisp 코드의 (setq byte-compile-warning nil)은 이 코드 바로 위의 주석에 해당하는 오류가 발생하여서 해결책으로 작성한 코드이다. 혹시 이 코드로 인해 다른 오류가 발생하거나 한다면, 이를 지우거나 구글링을 통해 다른 방법을 찿길 바란다.ㅠㅜ
collection of emacs development tool의 약자로서, make파일을 만들거나 automake파일 구성에 도움을 주고, compile하기 쉽도록 도와주는 등, emacs환경을 더욱 풍성하게하는데 도움을 주는 확장 기능이다.
설정(설치)방법- cedet github에 들어가서 압축파일을 받는다.(http://sourceforge.net/projects/cedet/)
- cedet압축을 .emacs.d폴더 혹은 원하는 곳에 푼다.
- cedet압축을 푼곳에 접근하여 $make 명령어를 통해 빌드 시켜준다.
- emacs 설정 파일인 .emacs 혹은 init.el 파일에 설치한 cedet을 로드하기위한 elisp코드를 다음과 같이 써준다.
;; Load CEDET ;; 'warning: cedet-called-interactively-p called with 0 arguments, but requires 1' error repairing (setq byte-compile-warnings nil) ;; See cedet/common/cedet.info for configuration (load-file "~/cedet.el파일의 경로를 써넣는다. cedet압축을 푼 폴더안의 common에 cedet.el이 있다.") ;; Enable EDE (Project Management) features (global-ede-mode 1) ;; *This enalbes the database and idle repasitiory (semantic-load-enable-minimum-features)참고#1. lisp코드에서 ;;는 주석이다.
참고#2. lisp코드중에서 load file 하는 부분을 나같은 경우는(load-file "~/.emacs.d/cedet/common/cedet.el")과 같이 적었다. 경로의 ~/는 나는 윈도우에서 cygwin을 통해서 emacs를 쓰고 있어서 환경변수 HOME의 경로를 저렇게 표현할 수 있다.
참고#3. lisp 코드의 (setq byte-compile-warning nil)은 이 코드 바로 위의 주석에 해당하는 오류가 발생하여서 해결책으로 작성한 코드이다. 혹시 이 코드로 인해 다른 오류가 발생하거나 한다면, 이를 지우거나 구글링을 통해 다른 방법을 찿길 바란다.ㅠㅜ
ECB ¶
ECB란?
emacs code browser의 약자로서, 프로젝트 파일 management나, 디렉토리 management등을 도와주는 확장 기능이다.
설정(설치)방법- ecb 설치전에 우선 cedet설치가 우선되어야한다. cedet은 이 글을 쓴 시점에 1.1 대의 버젼이 최신 버젼이다. cedet설치는 cedet을 설명해둔 부분에서 참조하길 바란다. (참고로 emacs 23부터는 내부적으로 CEDET이 설치되어있다.)
- 현제 emacs의 최신버젼은 24.*대이다. 그리고 이 버젼대의 emacs는 내부적으로 cedet이 설치되어있다고 한다. 이 cedet의 버젼과 ecb의 버젼 사이에 버그때문에 ecb 환경설정을 하려하면 어려움이 많다. 열심히 삽질해서 알아본 결과 어떤 외국 신사분이 버그 fix후 report하기전에 반영이 늦을것같기에 미리 github에 올려두신 수정 버전이 있다.(https://github.com/alexott/ecb/) 여기에서 ecb의 압축파일을 받는 것부터 시작을 한다.
- 받은 압축파일을 .emacs.d 폴더 혹은 원하는 곳에 압축을 푼다.
- emacs 설정파일인 .emacs 혹은 init.el에 다음과같은 elisp 코드를 적는다.
;;ECB Load (add-to-list 'load-path "ecb압축을 푼 폴더 경로를 적습니다.") (load-file "ecb.el의 파일경로를 적습니다. 이 파일은 ecb 압축을 푼 폴더 안에 잇습니다.") (require 'ecb)
참고#1. 나같은 경우, 경로를 써넣는 부분을 아래와 같이 작성하엿다.
(add-to-list 'load-path "~/.emacs.d/ecb-master")
(load-file "~/.emacs.d/ecb-master/ecb.el")
(add-to-list 'load-path "~/.emacs.d/ecb-master")
(load-file "~/.emacs.d/ecb-master/ecb.el")
ELPA 설치시 설치 방법
- 설치
- M-x package-list-packages
- C-s ecb
- 해당 라인에서 i 누른 후 x
- 해당 라인에서 i 누른 후 x
- M-x package-list-packages
- .emacs 설정
(require 'cl) (require 'ecb)
tabbar plugin ¶
소스파일의 tabbar를 쓰기위한 플러그인이다.
emacs wiki에 tabbar 라고 검색하면 소스가 제공된다.
emacs 설정파일이 있는 디렉토리에 소스를 복사해서 tabbar.el이라고 소스파일을 만들어 저장한다.
emacs 설정파일인 .emacs 혹은 init.el에 다음과같이 이어붙이면 사용할 수 있다.
;;Tabbar plugin load (require 'tabbar) (tabbar-mode t) (global-set-key [(control shift tab)]'tabbar-backward) (global-set-key [(control tab)]'tabbar-forward)
highline plugin ¶
커서가 위치한 줄의 색을 달리하여 지금 작업하는 부분을 뚜렷히 보여주는 플러그인이다.
emacs wiki에 highline 이라고 검색하면 소스가 제공된다.
emacs 설정파일이 있는 디렉토리에 소스를 복사해서 highline.el이라고 소스파일을 만들어 저장한다.
emacs 설정파일인 .emacs 혹은 init.el에 다음과같이 이어붙이면 사용할 수 있다.
;;Highline plugin load (require 'highline) (global-highline-mode t)
color-theme plugin ¶
emacs 배경색, 글자색 theme를 제공하는 플러그인이다.
emacs wiki에 color-theme 라고 검색하면 압축파일이 제공된다.
emacs 설정파일이 있는 디렉토리에 color-theme압축파일의 압축을 푼다.
emacs 설정파일인 .emacs 혹은 init.el에 다음과같이 이어붙이면 사용할 수 있다.
;;Color Theme plugin load (add-to-list 'load-path "color theme 폴더 경로를 적어준다.") (require 'color-theme) (eval-after-load "color-theme" '(progn (color-theme-initialize) (color-theme-hober)))