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

댓글 없음:

댓글 쓰기