메뉴 건너뛰기

Hodol's Blog

Documents Emacs 삽질노트[20150421]

2015.04.21 08:35

Hodol 조회 수:1465

Emacs 삽질 노트

목차
여는 말
컴퓨터를 부팅하여 윈도우를 실행하면 메모장(Notepad)라는 기본 문서 편집기가 있듯이 리눅스에도 이러한 기본 문서 편집기가 있다. 바로 Vi이다. 사용자가 마음에 들면 그 값으로 아프리카 우간다 어린이를 위한 기부금을 내도록 하는 Charityware인 Vi는 커맨드 라인에서 실행될 수 있으며 가볍고 플러그인을 추가로 설치하여 다양한 기능을 할 수 있다. 하지만 그 사용법이 직관적이지 않아서 진입 장벽이 있으며 요즘 같이 다른 운영체제의 다른 문서 편집기들과 혼용해야하는 상황에서 이러한 사용법은 생산성을 떨어뜨린다. 리눅스에는 또 다른 전통적인 문서 편집기가 있는데 오픈 진영의 성자로 불리우는 "리처드 스톨먼"이 개발한 Emacs이다. Emacs도 다양한 기능을 포함하며 커맨드 라인에서 실행 가능하지만 Vi 만만찮게 진입 장벽이 있다. 그래도 개선의 여지가 있다. 필자가 Emacs를 쓰는 이유는 다음과 같다.
  • 커맨드라인, 콘솔 화면에서 실행 가능하다. 원격 작업을 해야하는 서버에서 그래픽 UI는 생산성을 떨어뜨리기 때문이다.
  • Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+Z 현대 문서 편집기의 기본 단축키를 지원한다. 이게 Vi보다 Emacs를 선호하는 가장 큰 이유이다. 물론 처음 사용 시 이러한 단축키를 사용하도록 설정해줘야 한다.
  • 현대 문서 편집기에서 마우스로 드래그를 하거나 Shift키를 누르고 방향키로 글자들을 선택하는 마크업 작업과 같은 기능을 지원한다. 이 역시 Vi는 지원하지 않는 기능이다. 사용법은 Ctrl+Space로 마크업 기능을 On/Off 한다.
이 글에서는 Emacs의 기초적인 사용법보다는 알아두면 편리한 단축키나 설정들을 언급하고자 한다. 사용법은 인터넷에 검색하면 많은 자료들이 나오니 참고하기를 바란다. 무엇보다도 이 글의 제목이 어떤 작업을 아무 것도 모른 채, 더듬더듬 하다가 깨우친 것을 기록한다는 뜻의 삽질 노트이다.
설명하기에 앞서 알아두어야 할 것은 Emacs의 단축키 표현법이다. Emacs 단축키들을 여러번 연속으로 입력하여 사용한다. 예를 들어, 메모장에서는 Ctrl+s를 한번 누르면 문서를 저장한다. 하지만 Emacs에서 단축키를 이런 식으로 한 번만 입력하는 경우는 드물다. 문서를 저장을 하려면 Ctrl+x를 누른 후, 한 번 더 Ctrl+s를 누른다. 그리고 관례적으로 편의를 위해 Ctrl키는 C-로, Alt키는 M-으로 나타하며 Shift키 입력 여부는 문자의 대소문자로 구분한다. 즉, C-sCtrl키를 누른 상태에서 s키를 누른 것이고 C-SCtrl키, Shift키를 모두 누른 상태에서 s키를 누른 것을 표현한다. 또한, C-x C-cCtrl+x를 누른 후 다시 Ctrl+c를 눌렀다는 뜻이다.
Cheat Note
  • Esc Esc Esc ( Esc를 세번 누르는 것 )은 단축키열를 잘못 입력했거나 단축키열 입력을 취소할 때 쓴다. 즉, 처음 상태로 되돌리는 기능이다.
  • f10키를 누르면 메뉴가 나타난다. 각 항목 이름 앞에 단축키를 e===>Edit처럼 보여준다. 원하는 항목의 단축키를 누르면 그 항목을 실행하거나 부분 항목을 보여준다.
  • f10 o u 단축키열은 Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+Z키들의 사용 여부를 결정한다. 설정을 한 후 f10 o o를 다시 입력해서 변경한 설정을 저장하자.
  • 문서 저장은 C-x C-s이다.
  • Emacs 종료는 C-x C-c이다.
  • 문서 열기는 f10 f o 단축키열을 입력한 후 아래에 나타나는 입력란에 열고자 하는 파일 경로를 입력하면 된다. 파일 경로를 모르겠다면 tab키를 여러번 두들겨 보자. 현재 디렉토리의 파일들을 보여줄 것이다. 여기서 원하는 파일명의 첫 몇 글자만 치고 tab키를 누르면 자동 완성을 시켜준다.
  • 파일을 여러개 열었을 때, 작업 화면을 다른 파일로 옮기는 것은 C-x 입력 후 좌우 방향키를 입력하면 된다.
  • 문자열을 선택하여 편집하는 마크업 기능은 C-Space로 한다. C-Space로 마크업 상태로 만든 후, 방향키로 원하는 문자열들을 선택한다. 취소하려면 다시 C-Space를 누르면 된다. 마크업 상태에서 잘라내기, 복사하기 기능을 사용할 수 있다.
  • 특정 줄을 찾아가는 기능은 M-g g 단축키열을 입력 후 원하는 줄번호를 입력하면 된다.
  • Emacs를 커스터마이즈(맞춤설정)을 할 때, 보통 .emacs파일을 수정하는데 필자와 같은 초보자는 그냥 emacs를 실행하여 뜨는 메뉴에서 Customize Startup 항목을 사용하는 걸 추천한다.
  • 문자열 검색은 C-s로 하며 다음 검색은 C-s를 한 번 더 누르면 되고 이전 검색은 C-r을 누르면 된다.
  • 리눅스와 윈도우의 엔터 즉, 개행문자의 개념이 좀 다르다. 이는 옛날에 타자기에서 커서의 위치를 한 줄 내리는 Line Feed와 커서를 줄의 맨 앞쪽으로 당기는 Carriage Return에서 유래한다. 이런 기계가 전자화 되면서 이렇게 나누어진 기능들이 엔터키 한방으로 쓰고 있지만 내부적으로는 그 흔적이 남아있다. Line Feed\n 또는 ^J로 나타내며, Carriage Return\r 또는 ^M로 나타낸다. 리눅스에서는 개행 문자가 \n 하나로 표현되지만 윈도우에서는 \r\n로 표현하며 여기에 한 술 더 떠서 Mac OS Classic에서는 \r로 표현한다. 그만 싸워, 미친것들아! 아무튼, 여러 운영체제를 넘나들다보면 이러한 것들이 꽤 에로사항으로 꼽히는데 이러한 Line FeedCarriage Return를 별도로 입력해줘야 하는 경우도 있다. Emacs에서는 Line FeedC-q C-jCarriage ReturnC-q C-m으로 입력한다. 자세한 건 다음 사이트를 참조하자.
    http://ergoemacs.org/emacs/emacs_line_ending_char.html
  • 웹 컨텐츠들을 Emacs로 작성하다 보면 HTML, PHP, Javascript가 섞여서 자동 들여쓰기 기능이 제대로 작동하지 않는다. 이 때 web-mode라는 걸 설치하면 해결이 된다. 다음 사이트를 참조하자.
    http://web-mode.org/
  • C-x 2, C-x 3으로 화면을 가로, 세로로 분할한다. 중복 조합으로 사용 가능하다. C-x 1현재 커서가 위치한 분할 화면만 남기고 모두 닫으며 C-x o 분할된 각 화면을 이동한다.
  • M-! 간단한 쉘 명령을 보낼 수 있다. M-x shell 또는 M-x term으로 Emacs 내부에서 쉘을 실행할 수 있다. 후자가 좀 더 쉘에 가깝게 동작한다. (명령 히스토리 기능 등)
기타 설정
  • Putty를 통해 Emacs를 사용하면 End키가 제대로 동작하지 않는다. Putty 설정의 Connection > Data > Terminal details > Terminal-type string 항목 값이 xterm이라고 되어 있는 것을 linux로 바꾸어 주면 해결된다.
  • OS X 터미널에서 Option키가 Meta키로 인식되지 않는다. 터미널 설정에서 Option키가 Meta키로 인식하도록 설정하는 옵션이 있다. 체크를 하면 문제가 해결된다.
기타 참고 사이트