레이블이 ecb인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ecb인 게시물을 표시합니다. 모든 게시물 표시

2012년 5월 15일 화요일

emacs를 써보자

출처 : http://poongbek-textcube.blogspot.com/2009/08/emacs%EB%A5%BC-%EC%8D%A8%EB%B3%B4%EC%9E%90.html


1. 윈도우용 emacs를 sorceforge(http://sourceforge.net) 에서 다운받는다.
2. emacs를 설치하고자 하는 폴더로 이동후 압축해제.
3. addpm.exe 를 실행하면 C:\Documents and Settings\nick\Application Data 에 .emacs.d 디렉토리와 .emacs 파일이 생성되고 emacs 는 이곳을 home folder로 인식하게 된다.

emacs 설치는 끝이다. emacs를 좀 더 파워풀하게 사용하기 위해서 plug-in을 설치한다.
1. cscope 설치
  • http://iamphet.nm.ru/cscope/ 에서  cscope-16.0a-win32.7static 를 다운받아 압축해제하면 scsope.exe 와 sort.exe 파일이 있다. 이파일을 emacs/emacsW32/gnuwin32/bin 폴더에 복사해준다. 윈도우에서 사용가능하게 만든 리눅스 명령어쯤으로 생각하자.
  • sourceforge에서 gunutil 중에서 findutil을 찾아서 window용으로 다운받는다.
  • 다운로드시 의존성(dependency) 파일도 같이 다운받는다.
  • 압축 푼 파일을 emacs/emacsW32/gnuwin32/bin 에 카피한 후 command 창에서 find를 쳐보자. error가 발생한다면 의존성파일에 있는 dll 파일을 같이 카피한다.
  • xcscope.el 파일을 sourceforge에서 다운받는다. 홈폴더의 .emacs.d폴더에 plugin이란 이름으로 폴더를 하나 만든후 그곳에 xcscope.el 파일을 복사하자.
  • emacs 설정파일인 .emacs을 편집기로 연 후 중간쯤에 (require `xcscope) 를 써넣자.
  • emacs를 실행해 보면 메뉴라인에 Cscope 항목이 보인다면 설치 완료.
  • 설치만 해서 사용할려고 하면 문제가 생길것이다. cscope.out 파일을 만들지 않아서이다.
  • 편집기로 간단하게 bat파일을 만들어서 사용하기 위해 메모장을 연 후
    • dir *.c *.h *.s /s/b > cscope.files
    • dir *.c *.h *.s /s/b|etags -
    • cscope -b
    • 리눅스 상에서는 find . -name "*.[ch]" -print | xargs etags -a 로 태그 파일 만들것(etag만들기)
    • emacs상이라면 A-x cscope-index-file 할것( cscope tag 파일만들기)
  • 이렇게 쳐준다. 첫째라인은 sorce file list를 scope.files 란 파일로 만들고 두번째 라인은 emacs 기본 기능인 etage를 쓰기위해 세번째는 scope.files을 기준으로 scope가 분석가능한 파일 cscope.out 파일을 만든다.
  • 위 bat file을 실행하면 총 3개의 파일이 생성된다. scope.files, cscope.out, TAGS


2. tabbar 추가
울트라 에디터처럼 열려있는 버퍼들을 tab 형식으로 보여주는 plugin
  • sourceforge에서 tabbar.el 을 다운받아서 .emacs.d/plugin 폴더에 복사.
  • 설정파일인 .emacs에 다음을 추가.
    • (require 'tabbar)
    • (tabbar-mode t)
    • (global-set-key [(control shift tab)] 'tabbar-backward)
    • global-set-key [(control tab)]       'tabbar-forward)
3. highline mode 추가. 
cusor가 있는 위치를 highlight 해준다.
  • emacswiki에서 highline.el 을 다운받아서 .emacs.d/plugin에 복사.
  • 설정파일 .emacs 에 다음을 추가한다.
    • (require 'highline)
    • (global-highline-mode t)
4. theme 추가.
emacs 배경색등 테마기능
  • emacswiki 에서 color-theme 을 다운받아서 .emacs.d/plugin 폴더에 복사.
  • .emacs 에 다음을 추가.
    •  (setq load-path (cons (expand-file-name "~/.emacs.d/plugins/color-theme-6.6.0") load-path))
    •  (load-library "color-theme") 
    •  (require 'color-theme)   
    •  (color-theme-initialize)
    •  (color-theme-tango)   ;; Select the theme which you want
5. ecb추가
     emacs code browser로서 코드 분석시 유용하게 사용된다.
  • ecb 설치(ubuntu의 경우 package manager에서 자동설치)
  • .emacs에 다음을 설치
    • (add-to-list 'load-path "~/app/ecb-2.32/")
      (require 'ecb)

      (custom-set-variables
        ;; custom-set-variables 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.
       '(ecb-fix-window-size (quote width))
       '(ecb-layout-name "left1")
       '(ecb-layout-window-sizes (quote (("left9" (0.32857142857142857 . 0.9791666666666666)))))
       '(ecb-options-version "2.32")
       '(ecb-windows-width 0.33))
      (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.
       )

      ;; customize the keys for ECB
      (define-key ecb-mode-map (kbd "M-1") 'ecb-goto-window-directories)
      (define-key ecb-mode-map (kbd "M-2") 'ecb-goto-window-sources)
      (define-key ecb-mode-map (kbd "M-3") 'ecb-goto-window-methods)
      (define-key ecb-mode-map (kbd "M-4") 'ecb-goto-window-history)
      (define-key ecb-mode-map (kbd "M-5") 'ecb-goto-window-compilation)
      (define-key ecb-mode-map (kbd "M-0") 'ecb-goto-window-edit1)

      ;; auto ecb mode
      (setq ecb-auto-activate 'true)
      (put 'scroll-left 'disabled nil)

앞으로 추가해야할것
doxymacs
YAsnippet

2012년 5월 14일 월요일

Window 에서 Emacs 사용하기

출처 : http://blog.ezion.net.au/904


Windows에서 Emacs사용하기

다운로드

GNU Emacs와 X Emacs를 모두 설치해봤지만, EmacsW32에서 다운로드 받는 버전이 가장 잘되어 있는것 같다. 이곳에서 가장 최신의 패치된 버전을 받는다.

단축키

encoding change : (C-x C-m f utf-8)

기본명령

명령단축키
실행명령emacs
파일열기C-x C-f, /디렉토리명/디렉토리명/파일명
파일종료C-x k 현재 파일을 닫는다.
실행종료C-x C-c emacs 종료
파일저장C-x C-s
실행취소C-/ 또는 C-x u
명령취소C-g (단축키를 잘못 누른 경우 반드시 명령취소를 해야 한다. 그렇지 않으면 emacs는 계속 명령을 대기한다.)

이동

명령단축키
한줄아래C-n 또는 방향키 아래
한줄위로C-p 또는 방향키 위
한칸앞으로C-f 또는 방향키 우측
한칸뒤로C-b 또는 방향키 좌측
한단어 앞으로M-f
한단어 뒤로M-b
PageUpM-v
PageDownC-v
HomeC-a 커서를 줄의 맨 처음으로 이동
EndC-e 커서를 줄의 맨 끝으로 이동

삭제

명령단축키
한글자 삭제C-d 또는 삭제할 글자 앞으로 이동하여 백스페이스 키
한단어 삭제M-d 또는 삭제할 단어 앞으로 이동하여 백스페이스 연타
한줄 삭제C-k 커서가 위치한 현재 줄의 끝까지 삭제

복사/붙여넣기

명령단축키
영역지정C-<SPC>(or C-@) 키를 누르고 원하는 영역을 방향키 또는 Ctrl + n,p,f,b 키등으로 이동
복사M-w
잘라내기C-w
붙여넣기C-y
prefix넣기“M-x string-rectangle” (C-x r t)
블럭복사C-x r r
블럭삭제“M-x kill-rectangle” (C-x r k)
Paste (yank) a cut rectangular selection of textC-x r y
open rectangle, shifting text rightC-x r o
blank out rectangleM-x clear-rectangle
prefix each line with a stringM-x string-rectangle

Abbrevs

명령단축키
add global abbrevC-x a g
add mode-local abbrevC-x a l
add global expansion for this abbrevC-x a i g
add mode-local expansion for this abbrevC-x a i l
explicitly expand abbrevC-x a e
expand previous word dynamicallyM-/

검색/치환

명령단축키
검색C-s 검색어 (C-s를 반복해서 누름으로써 계속 검색을 할 수 있다)
정규표현식 검색C-M-s 정규표현식을 사용해서 매우 정교한 검색이 가능
일반 치환M-% 또는 M-x query-replace 와 같이 명령어를 입력하는 방법도 있다.
정규표현식 치환C-M-% 또는 M-x query-replace-regexp

들여쓰기와 내어쓰기

명령단축키
들여쓰기C-u 8 C-x TAB 또는 C-8 C-x TAB
내어쓰기C– C-u 8 C-x TAB 또는 C– C-8 C-x TAB

사각형 영역지정

명령단축키
지정한 사각형 영역 지움사각형 영역지정, C-x r k
지정한 영역만큼 공백삽입영역지정, C-x r o

대소문자 변경

명령단축키
선택영역을 대문자로C-x C-u
선택영역을 소문자로C-x C-l

주석 달기

명령단축키
기본 주석영역지정, M-; 또는 M-x comment-region 참고. emacs에서 주석 문자와 형태는 각 mode에 따라 다르다. 예, sql mode에서는 알아서 표준 주석인 – 문자가 입력된다.
주석 제거M-x uncomment-region

탭과 공백

명령단축키
줄 끝 공백제거M-\
 

커스터마이징

  1. 유용한 줄 끝 공백제거 사용자 정의 함수
    ;; 버퍼전체
    ;; delete horizontal space for the whole buffer
    (defun delete-horizontal-space-buffer ()
      "Deletes horizontal spaces at the end of every line in buffer."
      (interactive)
      (delete-horizontal-space-region (point-min) (point-max)))
     
    ;; 지정된 영역만
    ;; delete horizontal space in region
    (defun delete-horizontal-space-region (beg-region end-region)
      "Deletes horizontal spaces at the end of every line in the region.
    BEG-REGION and END-REGION are args which specify the region
    boundaries."
      (interactive "*r")
      (let ((end-region-mark (make-marker))
            (save-point (point-marker)))
        (set-marker end-region-mark end-region)
        (goto-char beg-region)
        (end-of-line)
        (delete-horizontal-space)
        (while (and  (= (forward-line 1) 0)
                     (< (point) end-region-mark))k
          (end-of-line)
          (delete-horizontal-space))
        (goto-char save-point)
        (set-marker end-region-mark nil)
        (set-marker save-point nil)))
        ; FIXME emacs에서는 설정파일에 아래처럼 해준다고 해결 될만큼 TAB은 단순한것 같지 않다. :(
    (setq default-tab-width 4)

redo+.el

emacs에서 undo는 기본 기능에 있는데 redo는 없다. redo+.el로 해결
단축키 : undo = C-/  , redo=C-?

윈도우

  • 수평으로 나누기 C-x 3 (M-x split-window-horizontally)
  • 수직으로 나누기 C-x 2 (M-x split-window-vertically)
  • 윈도우 옮겨다니기 C-x o (시계방향으로 이동한다. 또는 마우스로 클릭한다.)
  • 윈도우 삭제 C-x 1
  • 윈도우 창 늘리기
    • 길이 C-x ^
    • 폭 C-x } 또는 C-x {
  • 윈도우 사이즈 통일 C-x +
보통은 mode line을 마우스로 드래그하여 조정한다. 사이즈를 조정하기 위해 단축키를 여러번 누르기 싫다면 C-u를 사용하는 방법도 있다. 예, C-u 20 C-x ^ TIP. M-x compare-windows 버퍼의 내용을 비교하고 처음으로 다른 부분을 보여준다. 만약 두개이상일 경우 현재 커서가 위치해 있는 윈도우와 시계 방향으로 다음 윈도우의 내용이 비교된다.

Customize

반드시 Customize가 필요하다. 기본 세팅에는 없는 기능들이 좀 있다. 여러 파일들을 관리하기 위해서 ECB를 추천한다. 줄번호 표시와 undo/redo 기능을 넣기 위해서 추가적인 el파일들을 설치해 주어야 한다.
이외에 추가적인 내용은 EmacsWiki를 참조하면 도움이된다.
내 dotemacs 파일 : dotemacs.el emacs.png
 

기타

글꼴설정을 해주면 더욱 보기 편하다.
emacs.png