[Emacs] 이맥스 24 설치 방법 및 새 기능 소개

yoo-2011의 이미지

이맥스 24에서 바뀌는 것 및 새 기능을 소개합니다.

이맥스 현재 공식 버전은 23.3이고 새로 나올 버전 24는 지금 테스트 기간이지만 쓸 만합니다.

이맥스 24 설치하기

윈도에 설치하시려면 다음 링크에서 가장 최근 ZIP파일을 다운받아 압축을 풉니다. (2013년 이후에 이 글을 읽는 분은 이맥스 공식 홈페이지에서 다운받으세요.)

http://code.google.com/p/emacs-for-windows/updates/list

압축 풀고 그 안에 bin 폴더에 있는 runemacs.exe를 실행하면 이맥스 24가 실행됩니다. 윈도 7 사용자라면 이제 작업표시줄에서 이맥스 아이콘을 오른쪽 클릭하고 "이 프로그램을 작업표시줄에 고정"을 누릅니다. 이맥스 24를 종료한 후, 다시 작업표시줄에서 이맥스 아이콘을 오른쪽 클릭하는데 이번에는 SHIFT를 누른 상태에서 오른쪽 클릭합니다. 이때 나오는 메뉴에서 "속성"을 누릅니다. "대상" 입력하는 곳에서 텍스트 끝부분에 emacs.exe를 runemacs.exe로 바꿔 적어준 후 "확인"을 누릅니다. 바꿔주는 이유는 emacs.exe를 실행하면 cmd창이 딸려나와 약간 거추장스러운 반면 runemacs.exe를 실행하면 cmd창이 나오지 않기 때문입니다.

기존의 이맥스 23.3을 이미 쓰고 있는 분은 .emacs 파일의 내용을 다음 형식으로 정리하면 같은 설정파일로 이맥스 23.3과 이맥스 24를 같이 쓸 수 있습니다.

;; -*- coding: utf-8 -*-
(when (<= emacs-major-version 23)
  ;; emacs 23.3 설정 코드
  )
(when (>= emacs-major-version 24)
  ;; emacs 24 설정 코드
  )
;; 공통 설정 코드

이맥스 24에 새롭게 추가되는 기능 소개

이맥스 패키지 관리 기능

메뉴에서 Options > Manage Emacs Packages를 클릭하면 설치 가능한 패키지들이 쭈욱 나옵니다. 쉽게 골라서 설치할 수 있습니다. 더 다양한 패키지를 보려면 이맥스 설정파일에 다음 코드를 추가하면 좋습니다.

(require 'package)
;;  패키지 저장소 Marmalade 추가
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
;; 설치된 패키지들 활성화
(package-initialize)

위 코드를 설정파일에 넣고 이맥스를 재시작한 후 M-x package-refresh-contents를 실행하면 Options > Manage Emacs Packages에서 더 많은 패키지들을 볼 수 있습니다.

개인적으로 설치 추천하는 패키지 목록:

  • markdown-mode
  • yasnippet (자동완성 기능)
  • browse-kill-ring
  • anything
  • anything-config
  • auctex (TeX, LaTeX 편집)
  • cursor-chg (커서 색깔이 한글 모드와 영어 모드에서 다르도록 설정 가능)
  • paredit (리스프 편집)

나머지 내용은 다음 두 글에서 발췌합니다.

What’s New In Emacs 24 (part 1) | Mastering Emacs

What’s New in Emacs 24 (part 2) | Mastering Emacs

completion(자동완성) 기능 통합

이맥스 24 이전에는 completion 기능을 각 패키지마다 따로 구현했지만 이맥스 24부터 completion-at-point 함수와 completion-at-point-functions 변수를 사용하도록 통합합니다. completion-at-point는 C-M-i 키에 연결되어있으니 시험해보세요.

그리고 substring이라는 completion style이 새로 추가되었습니다. 원래 있던 completion style 중 basic은 prefix로 자동완성하지만 substring은 말 그대로 substring으로 자동완성합니다. 버퍼 바꿀 때 (C-x b) 버퍼 이름 입력 시 substring으로 자동완성됩니다. 따라서 C-x b를 누르고 scr까지만 입력하면 *scratch* 버퍼가 선택됩니다. 다른 경우에도 substring 자동완성 기능을 쓰려면 변수 completion-styles 또는 completion-styles-alist를 변경해주세요. 사실 이맥스 24 이전에 ido 패키지가 이미 제공하던 방식의 자동완성 기능이기는 합니다.

Isearch 기능 변경사항

C-s를 누르고 C-y를 누르면 클립보드 내용이 검색어가 됩니다. 그 상태에서 M-y를 누르면 그 전에 복사한 내용이 검색어가 됩니다. 이맥스 23 이전에 C-s 누르고 C-y 누르면 커서가 있는 줄의 나머지가 검색어가 되었는데 이맥스 24부터 그 기능은 C-y 대신 M-s C-e를 눌러줘야 합니다.

just-one-space (M-SPC)의 추가기능

just-one-space 명령에 negative argument를 주면 newline도 같이 지웁니다. 즉, M-- M-SPC를 누르면 커서 주위 space와 newline을 모두 지우고 space 하나만 남습니다.

텍스트 선택, 복사 관련 변경사항

이맥스 24부터는 텍스트를 선택하고 delete-forward-char나 delete-backward-char에 해당하는 키를 누르면 텍스트가 지워집니다. 예전 방식으로 바꾸려면 delete-active-region을 nil로 설정하면 됩니다.

이맥스 24부터 select-active-regions의 기본값이 t가 되어, 마우스로 텍스트 선택 시 kill ring에 텍스트가 들어가지 않고 리눅스의 경우 선택부분이 primary selection이 됩니다.

Edit 메뉴의 Copy, Cut, Paste 항목은 각각 M-w, C-w, C-y와 정확하게 일치하도록 변경되었습니다.

Customize 관련 추가 기능

Customize 버퍼에 검색창이 생겼습니다.

electric (소스자동수정) 기능 통합

각종 electric 기능이 electric-pair-mode, electric-indent-mode, electric-layout-mode 세 개로 통합됩니다. electric-pair-mode는 괄호나 따옴표를 쌍으로 자동입력되게 도와주고, electric-indent-mode는 indent를 자동으로 하는 모드입니다.

Occur Edit mode 기능

occur 버퍼에서 M-x occur-edit-mode 또는 C-x C-q를 누르면 occur 버퍼에서 텍스트 수정한 내용이 원래 버퍼에 반영됩니다. 파일이름을 한꺼번에 수정할 때 쓰는 wdired 기능과 비슷합니다.

pcase.el 라이브러리

Mathematica, Haskell 등에서처럼 패턴 인식 기능을 제공하는 라이브러리입니다.

사용 예: Does anyone know how to use pcase.el in Emacs 24? : emacs

lexical scoping 기능

이맥스 리스프는 원래 다른 언어들과는 달리 dynamic scoping을 쓰는 언어였는데 이맥스 24에서는 lexical scoping도 쓸 수 있습니다. lexical scoping을 쓰려면 해당 이맥스 리스프 파일에 파일 변수 설정 lexical-binding: t 를 추가해주면 됩니다.

lexical scoping and dynamic scoping in Emacs Lisp | Yoo Box

lexical scoping과 dynamic scoping의 차이점은 제가 최근에 위 글에서 언급한 예로 설명해보겠습니다.

(setq a 17)
(defun my-print-a ()
  (print a))
(setq a 1717)
(let ((a 8))
  (my-print-a))

둘의 차이는 위 코드에서 my-print-a를 호출할 때 함수 my-print-a 안의 변수 a가 무엇을 가리키느냐의 차이입니다. 전역 변수 a를 가리키느냐 아니면 my-print-a를 호출할 때 잠시 만들어진 지역번수 a를 가리키느냐의 문제인데 lexical scoping이 전자이고 dynamic scoping이 후자입니다. lexical scoping은 함수가 정의된 환경에서, dynamic scoping은 함수가 호출된 환경에서 a가 가리켜야할 것을 찾습니다.

이맥스 리스프 유닛 테스트 기능

이맥스 리스프 유닛 테스트를 위한 ERC 라이브러리가 추가되었습니다.

(info "(ERC)")

prog-mode 추가

prog-mode는 프로그래밍 언어 전체에 해당하는 major mode입니다. 모든 텍스트 관련 모드가 text-mode로부터 상속받는 것처럼 이맥스 24에서 python-mode, javascript-mode 등은 prog-mode에서 상속받습니다. 사용 예: 소스코드가 있는 버퍼에서 항상 flyspell-prog-mode (주석과 스트링에서 스펠링 검사하는 모드)가 켜지게 하려면 다음을 설정파일에 추가해줍니다.

(add-hook 'prog-mode-hook 'flyspell-prog-mode)
Forums: 
oppor의 이미지

깔끔하게 정리해주셔서 감사합니다.

24도 기웃거려봐야겠네요.

24버전에서 가장 맘에 드는건 테마 기능이더군요.^^

초보는 시각적인 효과에 약하죠.ㅋㅋㅋ

권순선의 이미지

와우 잘 읽었습니다. 감사합니다...

황병희의 이미지

친구 컴터에 우비로 우분투를
깔아두었습니다. 저도 쓰고
친구에게도 바이러스 걱정없는
컴터가 세상에 있다는 사실을
알려주려구요

예전에 프비어선 포트에서 24버전
설치해서 썼었어요

우분투(10.04LTS)에서는
어찌하면 이맥스 24버전을
설치할수있을까요..

피와살이되는 좋은글
올려주셔서 감사합니다^^

//안드로이드에서씁니다

--
^고맙습니다 감사합니다_^))//

lateau의 이미지

http://savannah.gnu.org/projects/emacs

여기 가시면 개발 버젼(24) 받으실 수 있습니다.
pre-build된 건 아니니 직접 컴파일하셔야 합니다.

git으로 받아봤는데 1시간 넘게 걸리더군요. 인내심을 가지셔야 합니다. :)

--
I think to myself...what a emerging world.

마잇의 이미지

ppa:cassou/emacs

https://launchpad.net/~cassou/+archive/emacs

emacs snapshot PPA 입니다. 10.04도 지원 합니다.


--
마잇

fm100의 이미지

Marmalade가 기본으로 포함되는 건가요? el-get 을 쓰고 있었는데...
갈아타야 되나..ㅡ_ㅡ;;

=================================================
Do the python !
=================================================

vivisection의 이미지

http://alpha.gnu.org/gnu/emacs/windows/
여기서도 받을수 있어요

jj의 이미지

Pattern matching 이라니... 한번 봐야겟네요. 감사

--
Life is short. damn short...

jsk의 이미지

cursor-chg 좋은데요 :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.