리눅스2010.03.30 10:44
이맥스 좋다는 말을 하도 많이 들어서!!
나도 이맥스 한번 써 보자 싶어서 쓰기 시작함!!
이맥스 익숙해지면 vi vs emacs 에 대해서도 함 써봐야지 ㅡ.ㅡ;;
일단은 그저 단축키 외우기도 바쁘네 치매는 안걸리겟어 ㄲㄲ..

설치 : 우분투 9.10

emacs 저장소 추가
 # add-apt-repository ppa:ubuntu-elisp/ppa
 # apt-get update
 # apt-get install emacs23
  그냥 emacs 깔면 22 버전인데 글씨가 후덜덜하게 못 생겨서 보기 시름
  폰트도 그렇고 그러니 저장소 추가해서 최신 쓰는게 좋을듯.

ctags
  # apt-get install exuberant-ctags
  # ctags -e -R
    TAGS 라는 파일이 생성 됨
  M-.  : TAGS 를 선택해 주면 됨
  C-x 4 . : M-.이랑 똑같은데 창을 나눠서 보여줌

gdb
  bt, br, r, p, up
  이거면 다 된거지 뭥..
  실행 한번 해보면 gdb가 확실히 emacs에서 하는게 좋음을 바로 느낌

cscope
  # apt-get install cscope
C-c s d : 함수의 정의 찾기
C-c s c : 해당 함수를 호출하는 함수 찾기
C-c s C : 함수가 호출하는 다른함수 찾기
C-c s u : 이전 위치로 이동

emacs 단축키!!
색칠 해 둔거는 가장 많이 쓰게 되는 것들.
C-x C-c     Emacs 종료
C-x C-s     파일 저장하기(save)
C-x C-w     다른 이름으로 파일 저장하기(save as...)
C-x C-f     파일 불러오기(load)
C-x k     버퍼 지우기(kill)
C-x b     다음 버퍼로 전환
C-x C-b    버퍼 목록 보여주기
C-x 3    창 세로로 나누기
C-x 2     창을 가로로 나누기
C-x 1     현재 창을 제외한 다른 창 닫기
C-x o     다른 창으로 커서 이동
C-l     현재 줄을 창의 가운데 부분으로 보여줌
C-a     커서를 줄의 맨 처음으로
C-e     커서를 줄의 맨 마지막으로
C-x [   문서의 시작으로 이동
C-x ]   문서의 끝으로 이동
C-k     현재 커서 위치에서 줄 끝까지 지우기
C-space   블럭 시작 위치 지정
M-w    복사
C-w     잘라내기
C-y     붙여 넣기(paste)
C-/     undo
C-s     검색
C-g     명령 취소
M-;     기본 주석
M-!     shell command
C-M-\   정렬(블록 지정후 사용)   << 위에 c style 에 영향을 받음
C-x h    전체 선택

C-v     다음 페이지
M-v     이전 페이지
C-p     커서 up
C-n     커서 down
C-f     커서 right
C-b     커서 left
M-f     다음 단어로
M-b     이전 단어로
C-d     한 글자 지우기
M-d     한 단어 지우기
S-n     화면 바탕 색이 바뀜
         창크기 조절(아직 못 찾음)

M-x dynamic-completion-mode  최근 사용된 word list를 가지고, 자동 완성구현, 3글자 이후에 M-RET
M-x compile -> gcc hello.c
M-x shell  (M-!)
M-x gdb -> gdb --annotate=3 a.out



emacs 설정 파일
  # vim ~/.emacs
;; ----------------------------------------------------------------------------
;; cscope
;; ----------------------------------------------------------------------------
(require 'xcscope)

;; ----------------------------------------------------------------------------
;; shortcut
;; ----------------------------------------------------------------------------
(global-set-key [f5] 'compile)
(global-set-key [(ctrl f5)] 'kill-compilation)
(global-set-key [(s up)] 'next-error)
(global-set-key [(s down)] 'previous-error)
(global-set-key [(f11)] 'shell)
(global-set-key [(s t)] 'tabify)

;; ----------------------------------------------------------------------------
;; c style
;; ----------------------------------------------------------------------------
(setq c-default-style "k&r")

;; ----------------------------------------------------------------------------
;; encoding
;; ----------------------------------------------------------------------------
(set-default-coding-systems 'utf-8)

;; ----------------------------------------------------------------------------
;; tab
;; ----------------------------------------------------------------------------
(setq default-tab-width 4)
(setq-default c-basic-offset 4)
(setq-default indent-tabs-mode nil)

;; ----------------------------------------------------------------------------
;; column number
;; ----------------------------------------------------------------------------
(column-number-mode t)

;; ----------------------------------------------------------------------------
;; delete
;; ----------------------------------------------------------------------------
(delete-selection-mode nil)

;; ----------------------------------------------------------------------------
;; match parenthesis
;; ----------------------------------------------------------------------------
(show-paren-mode t)

;; ----------------------------------------------------------------------------
;; no new line at end
;; ----------------------------------------------------------------------------
(setq next-line-add-newlines nil)

;; ----------------------------------------------------------------------------
;; no backup file
;; ----------------------------------------------------------------------------
(setq make-backup-files nil)

;; ----------------------------------------------------------------------------
;; syntax highlighting
;; ----------------------------------------------------------------------------
(global-font-lock-mode t)

;; ----------------------------------------------------------------------------
;; highlight line
;; ----------------------------------------------------------------------------
(global-hl-line-mode t)

;; ----------------------------------------------------------------------------
;; highlight marked region
;; ----------------------------------------------------------------------------
(transient-mark-mode t)

;; ----------------------------------------------------------------------------
;; M-up M-down M-left M-right
;; ----------------------------------------------------------------------------
(windmove-default-keybindings 'meta)

;------------------------------------------------------------
;; for colorful ls in the shell-mode
;------------------------------------------------------------
(ansi-color-for-comint-mode-on)

;; ----------------------------------------------------------------------------
;; buffer move ctrl+tab
;; ----------------------------------------------------------------------------
(ido-mode 'buffer)
(global-set-key [(ctrl tab)] 'ido-switch-buffer)
(global-set-key [(ctrl shift tab)] 'ido-switch-buffer)
(add-hook
 'ido-setup-hook
 (lambda ()
   (define-key ido-buffer-completion-map [(ctrl tab)] 'ido-next-match)
   (define-key ido-buffer-completion-map [(ctrl shift tab)] 'ido-prev-match)))

;; ----------------------------------------------------------------------------
;; Showing and hiding blocks of code
;; ----------------------------------------------------------------------------
(add-hook 'c-mode-common-hook
  (lambda()
    (local-set-key (kbd "C-c <right>") 'hs-show-block)
    (local-set-key (kbd "C-c <left>")  'hs-hide-block)
    (local-set-key (kbd "C-c <up>")    'hs-hide-all)
    (local-set-key (kbd "C-c <down>")  'hs-show-all)
    (hs-minor-mode t)))



참고
http://wiki.kldp.org/wiki.php/EmacsGdbEtagsCscope
http://sylphong.egloos.com/2006579
Posted by 발칙한사람
TAG