다음 이전 차례

2. 이멕스 실행

2.1 시작 & 끝내기

사용자들이 컴퓨터를 처음 사용하다가 보면 이멕스라는 프로그램도 한번씩 해보는 프로그램일 것이다. 일단 이멕스를 실행을 했다면 나가는 방법을 찾아볼 것이다. 그렇지만 아마도 어떻게 해야 나갈 수 있는지 알기 힘들 것이다. 이전에 한번도 이멕스를 사용해보지 않았다면 지금부터 그 과정에 대해 설명을 하겠다. 먼저 쉘 상에서 emacs라고 타이핑을 치고 엔터키를 눌러라. 그러면 이멕스를 실행할 수 있다. 만약 실행이 되지 않는다면 프로그램을 설치하지 않았던가 경로변수(PATH)의 정의 안에 이멕스가 들어있지 않을 것이다.

일단 이멕스를 보았다면 나가는 방법도 알아야 한다. 이멕스를 나가기 위해서는 C-x C-c키를 눌러야 한다. 이 C-x라고 쓰여진 방법은 Ctrl키를 누르고 있는 상태에서 x를 누른다는 것을 의미한다. 이 경우에는 그 다음 Ctrl를 누른 상태에서 c키를 눌러야만 한다.

이멕스에서 사용되는 키의 조합은 좀 이상해 보이고 처음에 사용하기에는 불편할 수도 있다. 특히 여러분이 vi를 사용해 왔다면 더욱 그럴 것이다. 그렇지만 이멕스는 vi와 달리 편집모드와 명령모드를 구분해서 사용하지 않는다.

요약 : emacs은 이멕스 시작. C-x C-c은 이멕스 종료.

여러분이 볼 것

이멕스가 실행이 되면 일단 하나의 X 윈도우 전체에 걸쳐서 실행이 된다.(만일 콘솔에서 작업을 하고 있다면 콘솔전체) 위쪽에는 메뉴화면이 있고 화면의 중앙에서 약간의 텍스트들이 있으면 밑에 부분에는 몇 개의 줄이 있다.

아마 다음과 같은 모습의 화면일 것이다.

+----------------------------------------------------------------------+
|Buffers Files Tools Edit Search Mule Help                             |
|                                                                      |
|Welcome to GNU Emacs, one component of a Linux-based GNU system.      |
|                                                                      |
|                                                                      |
|                                                                      |
| ...                                                                  |
|                                                                      |
|---1:---F1  *scratch*         (Lisp Interaction)--L1--All-------------|
|For information about the GNU Project and its goals, type C-h C-p.    |
+----------------------------------------------------------------------+

NOTE: 이멕스는 일반적으로 전체화면이나 윈도우를 차지한다. 공간을 줄이기 위해서 위의 예제에서는 좀 줄였다. 처음 이멕스를 실행하면 환영한다는 메시지를 볼 수 있다. 그리고 나머지들을 ``...''으로 나타냈다. 환영 메시지에는 당신이 사용하는 이멕스의 버전과 온라인 도움말과 그와 관련한 사항들을 있다.

메뉴바

이멕스의 가장 위에는 메뉴가 있다. X 에서 실행하였다면 일반적으로 마우스로 움직일 수 있는 풀다운 메뉴로 되어있다. 그렇지 않다면 단축키(여기서는 얘기하지 않지만)를 이용해서 메뉴에 접근할 수 있다.

상태바와 미니버퍼

이멕스의 밑에 있는 두 줄 가운데 바로 위에 있는 것은 상태바이다. 여기에는 현재 사용자가 무엇을 하고 있는지를 알려준다. 일단 지금은 그것이 있다는 것만 알고 있자.

가장 밑에 있는 줄은 미니버퍼라고 한다. 이것은 메인버퍼와 상태바로 구분이 되며, 이것을 이멕스의 ``명령줄''이라고 생각하면 된다. 이곳에는 여러분이 이멕스에서 실행을 한 명령어와 그에 대한 이멕스의 응답이 있다.

여기서 내가 얘기한 상태바는 다른 이멕스와 관련된 문서에서는 모드라인이라고 한다. 여기에는 현재시간이나 날짜, 줄수, 파일의 크기를 포함해서 사용자가 사용하고 있는 현재모드에 대한 것들이 있다.

2.2 몇 가지 용어

이 섹션에서는 이멕스를 이용하면서 사용하게 되는 용어에 대해서 알아보자.

버퍼 & 파일

다른 에디터들과는 달리 이멕스에서 파일을 열면 여러분이 사용하는 동안 계속 파일을 ``열어''두지 않는다. 대신 이멕스는 파일을 버퍼라는 메모리에 넣어둔다. 그러므로 버퍼를 편집하는 것이지 파일을 편집하는 것이 아니다. 실제 여러분이 저장을 했을 때만 디스크에 저장이 된다. 이렇게 하는 것은 장단점이 있지만 여러분이 이렇게 작업한다는 점을 이해하는 것이 중요하다.

결과적으로 여러분들은 이멕스와 관련된 문서, 예를 들어 모드나 패키지 등에서 ``버퍼''라는 용어를 볼 수 있을 것이다. 그럴 때 버퍼라고 하는 것은 ``메모리에 넣어둔 현재 파일의 사본''이라고 알면 된다. 종종 이멕스는 사용자의 명령의 결과로서 버퍼를 만든다. 그러한 버퍼는 명령의 결과나 선택할 수 있는 리스트 등을 포함하고 있다.

포인트 & 영역

이멕스 전문용어로 종종 포인트라는 용어를 사용하는 경우가 있다. 일반적인 용어로서 포인트는 커서를 의미한다. 처음 이멕스를 사용할 때에는 포인트나 커서의 차이점은 그리 중요하지 않다. 만일 관심이 있다면 이렇게 한번 생각해 봐라. 커서라고 하는 것은 포인트를 시각적으로 형상화 한 것이다. 커서는 항상 현재 버퍼의 어느 특정 글자위치 ``위''에 있다. 그러므로 이렇게 얘기할 수 있다. ``the''라는 단어의 `h' 글자 위에 커서가 있다는 것은 `t'와 `h' 사이에 포인트가 위치하고 있는 것이다.

다른 에디터들처럼 이멕스도 현재 버퍼의 부분에 여러 가지 기능(들여쓰기, 맞춤법검사, 재포멧, 잘라내기, 복사, 붙이기 등)을 할 수 있다. 사용자들은 키보드를 사용하던지 아니면 마우스를 사용해서 텍스트의 일부분을 돋보이게(혹은 ``마크'') 설정하고 이 블록에 대해 위에 있는 기능들을 사용할 수 있다. 이멕스에서는 텍스트의 블록을 영역이라고 한다.

윈도우

이전에 GUI 인터페이스를 사용하던 사람들은 다소 이상할 것이다. 그러나 기억해야할 사항은 이멕스는 GUI 인터페이스나 윈도우 메니저가 일상화 되기 전에 이미 만들어졌다.

이멕스에서 윈도우는 버퍼가 표시되는 부분이다. 이멕스가 시작되면 사용자의 스크린위에 하나의 윈도우를 만든다. 몇몇 이멕스의 다른 기능(도움말이나 문서 등)들은 이멕스의 윈도우에 [임시로] 추가로 만든다.

이멕스는 GUI관점에서 보면 X 윈도우와 전혀 관계가 없다. 사용자는 새로운 이멕스 버퍼를 보기 위해 X 윈도우를 열어서 두 파일을 비교할 수도 있다. 이때 새로 열린 X 윈도우를 이멕스용어로는 프레임이라고 한다. 계속 읽어보자.

프레임

이멕스에서 프레임이라고 하는 것은 이멕스의 버퍼가 표시되는 분리된 X 윈도우이다. 그러나 두개는 동일한 이멕스 세션이다. 이러한 형태는 넷스케이프에서 Alt+N을 해서 열어보는 것과 같은 것이다.

2.3 Keyboard 기본

이 섹션에서는 이멕스에서 사용하는 기본적인 키에 대해서 알아본다. 모든 강력한 에디터와 동일하게 몇 번의 타이핑으로 이멕스의 모든 것을 사용할 수 있다.

기존의 vi 사용자라면, k, j, l, h 키가 상하좌우로 움직인다는 것을 알 수 있을 것이다. 사실 vi에서 이러한 키를 익혀 파일을 이리 저리로 옮겨다니려면 여러 시간 아니 여러 주가 필요할지 모른다.

이멕스도 차이는 없다. 단지 다른 키와 명령어로 구성되어 있을 뿐이다. vi와 같이 기본적인 것을 익히려면 많은 시간이 필요하다. 그리고 시간이 지남에 따라 천천히 키구성에 대해 좀더 많은 것을 배우고 좀더 빠른 방법을 배울 수 있다.

명령키 (Meta, Esc, Control, Alt)

조금 후에 배우겠지만 이멕스는 여러 가지 키를 같이 사용하는 경우가 많다. 이멕스는 vi처럼 모드에 따라 결정되는 에디터가 아니기 때문에 커서를 움직이거나 명령을 실행하기 위해 ``명령모드''나 ``편집모드''와 같은 것을 알 필요는 없다. 대신 일반적으로 키를 올바르게 조합해서 입력해야만 이멕스가 정확한 명령을 수행을 할 수 있다.

이멕스에서 사용하는 키는 거의 Control이나 Ctrl에 상응하는 C나 Meta키에 대한 M과 같이 약자를 사용한다. 일반적인 현대의 키보드는 한두 개의 Ctrl키와 거의 없지만 Meta라는 키가 있다. 그러나 대부분의 사용자들은 이 Meta키에 대해서 EscAlt키를 사용한다. 일반적인 구성에서 Esc나 Alt는 기능적으로 거의 같다.

그래서 이멕스에 관한 문서에서 참조로 C-x f라는 키의 조합이 나온다면 이것은 ``Ctrl키를 누르면서 x키를 누르고 그 다음 f''를 누르라는 것이다. 또 M-x shell 이러한 조합으로 되어 있는 것은 ``Alt키를 누르면서 x를 누르고 그 다음 shell을 입력하라''라는 의미이다.

초보자들에게 아주 유용한 명령어는 M-x aproposC-h a이다. apropos는 이멕스의 모든 함수에 대한 온라인 메뉴얼에서 사용자가 입력한 정규표현에 대해 검색을 수행한다. 프레임에 관련된 모든 명령어를 찾고 싶은 경우 간단히 C-h a를 입력한 후 frame을 입력하면 된다.

버퍼에서 돌아다니기

이제 여러분은 약어에 대한 의미를 어느 정도 알았을 것이고 이제 버퍼에서 움직여 다닐 수 있는 모든 키에 대해 알아보자.

입력키      행동
-----------------------------------
C-p         한줄 위로 
C-n         한줄 아래로
C-f         한글자 앞으로 
C-b         한글자 뒤로 
C-a         줄의 시작으로        
C-e         줄의 끝으로 
C-v         한페이지 밑으로 
M-v         한페이지 위로 
M-f         한단어 앞으로 
M-b         한단어 뒤로 
M-<         버퍼의 처음으로 
M->         버퍼의 끝으로 
C-g         현재 명령종료 
-----------------------------------

그리고 커서키(방향키)는 일반적으로 예상했던 것과 동일한 방향으로 움직인다. 그렇지만 백스페이스는 그렇지 않다. :-(

필수 명령어

자 이제 여러분들은 버퍼에서 커서를 움직이는 것이나 파일을 열고 닫는 방법, 찾는 방법에 대해 알았다. 이제부터는 기본적인 명령어에 대해서 알아보자.

이러한 명령어로 넘어가기 전에 어떻게 이러한 명령어들이 실행이 되는지에 대해 간단히 설명하고자 한다.

이멕스에서 사용하는 모든 ``명령키''는 실제 이멕스의 한 부분인 함수로의 단축키이다.(예를 들어 M-x 아무것이나 C-아무것) 사용자는 이러한 함수를 M-x 함수이름엔터키를 누름으로 실행시킬 수 있다. 또한 사용자들은 만일 함수에 대한 단축키가 있다면, 함수에 대한 단축키를 이용해서 사용할 수도 있다.

예를 들어 버퍼를 디스크에 저장하는 이멕스 함수는 save-buffer이다. 디폴트 값으로는 C-x C-s로 되어있다. 그러므로 이 키를 이용해서 현재의 버퍼를 저장할 수도 있고, 또한 M-x save-buffer를 이용해서도 똑같은 일을 할 수 있다.

대부분의 기본적인 명령어는 단축키가 존재하며 그 가운데 몇 가지는 다음 표에 나타내었다.

단축키      함수               설명
-------------------------------------------------------------------
C-x C-s     save-buffer        현재 버퍼를 디스크에 저장한다.
C-x u       undo               마지막 명령을 취소한다.
C-c C-f     find-file          디스크에서 파일을 연다.
C-s         isearch-forward    단어를 순차적으로 찾는다.
C-r         isearch-backward   단어를 역순으로 찾는다.
            replace-string     단어를 찾아 교체한다.
            replace-regexp     정규표현식을 이용한 찾기와 교체
C-h t       help-with-tutorial 안내서 사용
C-h f       describe-function  함수에 대한 안내문보기
C-h v       describe-variable  변수에 대한 안내문보기
C-h x       describe-key       키 순서에 대해 보기
C-h a       apropos            단어나 정규표현에 대한 안내문 찾기
C-h F       view-emacs-FAQ     이멕스 FAQ 표시
C-h i       info               info 문서 읽기
C-x r m     bookmark-set       북마크표시
C-x r b     bookmark-jump      북마크로 가기
-------------------------------------------------------------------

이러한 함수를 여러 번 사용하다가 보면 대부분 경우 이멕스가 사용자의 입력을 기다리고 있다는 것을 알게될 것이다. 이러한 것은 미니 버퍼에서 생기며 vi에서 :를 이용할 때나 유닉스 쉘 상에서 사용하는 것과 비슷하다.

이멕스는 실질적으로 수백 개의 내장함수를 가지고 있다. 위에 있는 리스트는 내가 사용하고 있는 아주 적은 수의 샘플을 나타낸 것이다. 온라인 안내문에 있는 사용 가능한 함수에 대한 것과 좀 전에 얘기한 것에 대한 자세한 안내문을 찾아보기 바란다.

탭완성

bash나 csh, tcsh과 같은 많은 일반적인 유닉스 쉘과 같이 이멕스는 Tab키를 이용한 명령어 완성 기능을 제공한다. 사실 bash에서 명령어 완성기능은 이멕스의 기능으로부터 나왔으므로 bash에서 여러분이 사용하는 기능은 이멕스에서 다 될 것이다.

예를 들어 M-x search라고 치고 Tab을 쳐봐라. 이멕스는 여러 가지 다른 가능성을 가지고 있는 단어를 나타내기 위해서 하이픈을 붙여서 표시할 것이다. 그렇지만 그것들은 모두 하이픈을 포함한 단어들이다. Tab을 한번 더 치면 사용자가 선택할 수 있는 단어들의 리스트를 표시할 것이다. 이것은 새 윈도우에서 만들어진다. 새 윈도우는 임시로 여러분의 화면을 두개의 화면으로 나눈다. 하나는 현재 여러분의 버퍼가 있으며, 또 다른 하나는 ``search-''로 시작하는 가능한 단어들이 있을 것이다. 선택을 마치고 난 후 C-g를 입력하면 새 윈도우는 닫힌다.

2.4 Tutorial, Help, & Info

이멕스는 기본적인 편집기능이나 모든 사람들이 알아야할 함수에 대한 온라인 안내서를 가지고 있다. 또한 이 안내서는 이멕스에서 사용할 수 있는 다른 도움말에 대한 기능도 설명하고 있다.

만일 여러분들이 이멕스를 심도 있게 배울 생각이라면 이 안내서를 꼼꼼히 읽어보길 바란다. 위의 표에 나와있듯이 C-h t를 입력하면 안내문을 볼 수 있다. 안내문은 이멕스를 시작하는 사람들을 위해 만들어졌으며 혼자 해볼 수 있는 것으로 구성이 되어있다.

만일 X에서 이멕스를 사용하고 있다면 메뉴의 맨 오른쪽 help라고 되어있는 것을 찾을 수 있다. 여기에서 명령어를 살펴보면 어떠한 것들은 단축키가 지정이 된 것들이 있으며 이러한 것들은 메뉴의 오른쪽에 표시되어 있다.

마지막으로 이멕스에 포함되어 있는 문서들을 볼 수 있는데 이러한 것들을 보는 명령어들은 M-x infoC-h i로 실행시킬 수 있으며 이멕스 문서 탐색기에 Info파일을 보여준다.


다음 이전 차례