GNUEmacsManual:1

From 흡혈양파의 번역工房
Jump to navigation Jump to search
화면의 구성

화면의 구성

X Window System을 이용하는 GNU/Linux 등 그래픽 디스플레이에서 Emacs는 "그래픽 창"을 차지한다. 텍스트 터미널에서 Emacs는 전체 터미널 화면을 차지한다. Emacs가 차지하는 그래픽 창이나 터미널 화면을 의미하도록 프레임이란 용어를 사용하겠다. Emacs는 두 유형의 프레임에서 매우 유사하게 행동한다. 주로 하나의 프레임으로 시작하지만 원한다면 추가 프레임을 생성할 수 있다(162 페이지의 18장 [프레임] 참고).


각 프레임은 여러 구분된 영역으로 구성된다. 프레임 최상단에는 메뉴 바(menu bar)가 위치하여 일련의 메뉴를 통해 명령어로 접근하도록 해준다. 메뉴 바 바로 아래에 그래픽 디스플레이에는 클릭 시 편집 명령어를 실행하는 아이콘 행으로 구성된 툴바(tool bar)가 위치한다. 프레임 가장 하단에는 정보 메시지가 표시되고, Emacs가 요청 시 사용자가 정보를 입력할 수 있는 에코 영역(echo area)이 위치한다.


툴바(가 존재할 경우)의 바로 아래와 에코 영역의 바로 위에 프레임의 메인 영역을 창(the window)이라 부른다. 따라서 본 매뉴얼에서 "창"으로 통일하겠다. 그래픽 디스플레이 시스템들은 "창"이란 단어를 다른 의미로 사용하곤 하지만 앞서 언급하였듯 본문에서는 그러한 "그래픽 창"은 "프레임"이라고 부르겠다.


Emacs 창은 버퍼(사용자가 편집 중인 텍스트)가 표시되는 곳이다. 그래픽 디스플레이에서 창은 버퍼의 스크롤에 사용할 수 있는 스크롤 바(scroll bar)를 한 쪽에 표시한다. 창의 마지막 줄은 모드 행(mode line)이다. 모드 행은 저장하지 않은 변경내용이 존재하는지, 사용 중인 편집 모드가 있는지, 현재 행 번호가 무엇인지 등 버퍼에서 발생하는 일에 대한 다양한 정보를 표시한다.


Emacs를 시작하면 보통 프레임에는 하나의 창만 존재한다. 하지만 이 창을 수직이나 수평으로 세분화하여 독립적으로 버퍼를 표시하는 창을 여러 개 생성할 수도 있다(156 페이지의 17장 [창] 참고).


언제든 하나의 창은 선택된 창으로 존재한다. 그래픽 디스플레이에서 선택된 창은 좀 더 선명한 커서(굵고 깜빡이는)를 표시하고 다른 창들은 덜 선명한 커서(주로 빈 상자)를 표시한다. 텍스트 터미널에는 하나의 커서만 존재하는데, 이는 선택된 창에 표시된다. 선택된 창에 표시되는 버퍼를 현재 버퍼(current buffer)라고 부르는데, 편집이 발생하는 곳이다. 대부분의 Emacs 명령어들은 암묵적으로 현재 버퍼에 적용되고, 선택되지 않은 창에 표시되는 텍스트는 대부분 참조를 위해 표시된다. 그래픽 디스플레이에 다수의 프레임을 사용할 경우 특정 프레임을 선택하면 해당 프레임에 있는 창이 선택된다.


포인트

선택된 창에 위치한 커서는 대부분의 편집 명령어가 발생하는 위치, 즉 포인트1를 표시한다. 많은 Emacs 명령어는 버퍼 내에 여러 위치로 포인트를 이동시키는데, 가령 원하는 위치에서 마우스 버튼 1(주로 왼쪽 방향 버튼)을 클릭하면 포인트를 위치시킬 수 있다.


기본적으로 선택된 창에 커서는 색이 칠해진 사각형으로 표시되고 문자 위에 나타나지만 포인트는 두 문자 사이(between)로 생각하는 것이 옳으며, 커서 아래의 문자 앞에 위치한다. 예를 들어, 사용자의 텍스트가 'frob'의 모양을 하고 커서가 'b' 위에 위치한다면 포인트는 'o' 와 'b' 사이에 위치한다. 그 위치에서 '!' 라는 문자를 삽입하면 결과는 'fro!b', 즉 'o' 와 'b' 사이에 포인트가 위치한다. 따라서 커서는 이전처럼 'b'위에 남아 있다.


Emacs에서 여러 개의 파일을 각자의 버퍼에서 편집 중이라면 각 버퍼는 고유의 포인트 값을 갖는다. 현재 표시되지 않은 버퍼는 향후 사용자가 다시 표시할 때 자신의 포인트 값을 기억한다. 또한 버퍼가 여러 개의 창에 표시될 경우 각 창은 고유의 포인트 값을 갖는다.


Emacs가 커서를 표시하는 방법을 통제하는 옵션은 86 페이지의 11.20절 [커서 디스플레이]를 참고한다.


에코 영역

프레임의 최하단에 위치한 행은 에코 영역이라 부른다. 이는 다양한 목적으로 작은 양의 텍스트를 표시하는 데 사용된다.


에코 영역이라고 명명한 이유는 사용 목적 중 하나가 에코잉(echoing)이기 때문인데, 이는 사용자가 여러 문자로 된 명령어를 입력하는 동안 문자를 표시함을 의미한다. 단일문자로 된 명령어는 에코잉되지 않는다. 다중문자 명령어(11 페이지의 2.2절 [키] 참고)는 명령어 중간에 1초 이상 쉴 때 에코잉된다. Emacs는 지금까지 명령어의 모든 문자를 에코잉하여 나머지를 사용자가 확인할 수 있도록 해준다. 에코잉이 시작되고 나면 명령어의 나머지는 사용자가 입력하는 즉시 에코잉된다. 이러한 행위는 확신이 있는 사용자들에게는 빠른 응답을 제공하고 주저하는 사용자들에게는 최대의 피드백을 제공하도록 설계되었다.


에코 영역은 명령어가 그 업무를 수행하지 못할 경우 오류 메시지를 표시하는 데에도 사용된다. 오류 메시지와 함께 삐 소리 또는 화면이 깜빡일 수 있다.


일부 명령어는 에코 영역에 정보 메시지를 표시하여 명령어가 무엇을 수행했는지 알려주거나 구체적인 정보를 제공하기도 한다. 이러한 정보(informative) 메시지는 오류 메시지와 달리 삐 소리가 나거나 화면이 깜빡이지 않는다. 가령 C-x = (Ctrl 을 누른 채 x를 입력하고 Ctrl 을 놓은 다음 = 를 입력)는 포인트에 있는 문자, 버퍼 내에 위치, 창에서 현재 열(column)을 설명하는 메시지를 표시한다. 시간이 오래 소요되는 명령어는 종종 작업 중에 끝에 '...' 로 끝이 나는 메시지를 표시하고 (때로는 진행 과정을 퍼센트로 나타내기도 한다) 완료되면 'done'를 추가하기도 한다.


정보 에코 영역 메시지는

*Messages*

라는 특수 버퍼에 저장된다. (버퍼는 아직 설명하지 않았으므로 추가 정보는 147 페이지의 16장 [버퍼]를 참고한다.) 화면에 잠시 나타나는 메시지를 놓쳤다면

*Messages*

버퍼로 전환하여 다시 메시지를 표시할 수 있다.

*Messages*

버퍼는

message-log-max

변수로 명시된 특정 수의 행으로 제한되어 있다. (변수에 대해서도 설명하지 않았으므로 추가 정보는 420 페이지의 33.2절 [변수]를 참고한다.) 이 한계를 넘으면 새로운 메시지 행이 끝에 추가될 때마다 처음부터 하나의 행씩 삭제된다.


Emacs가 에코 영역을 사용하는 방법을 통제하는 옵션은 88 페이지의 11.23절 [디스플레이 커스텀]을 참고한다.


에코 영역은 편집해야 할 파일명과 같이 명령어에 인자를 입력할 수 있는 특수 창, 즉 미니버퍼(minibuffer)를 표시하는 데에 사용된다. 미니버퍼가 사용 중이면 에코 영역에 표시되는 텍스트는 프롬프트 문자열로 시작되고, 일시적으로 선택된 창으로 간주되는 미니버퍼 안에 활성 커서가 표시된다. C-g 를 입력하면 언제든지 미니버퍼에서 빠져나올 수 있다. 26 페이지의 5장 [미니버퍼] 내용을 참고한다.


모드 행

각 창의 하단에는 모드 행이 위치하는데, 현재 버퍼에서 무슨 일이 일어나는지를 설명한다. 하나의 창만 있을 경우 모드 행은 에코 영역 바로 위에 표시되는데, 이는 프레임에 끝에서 두 번째 행에 해당한다. 그래픽 디스플레이에서 모드 행은 3D 상자 모양으로 그려진다. Emacs는 선택된 창의 모드 행이 눈에 띄도록 선택되지 않은 창과 다른 색상으로 그린다.


모드 행에 표시되는 텍스트는 아래와 같은 포맷을 가진다:

cs:ch-fr buf	pos line (major minor)


텍스트 터미널에서 이 텍스트 다음에는 대시(dash)가 붙고 창의 오른쪽 가장자리까지 확장된다. 그래픽 디스플레이에서 이러한 대시는 생략된다.


cs 문자열과 그 다음에 오는 콜론 문자는 현재 버퍼에 사용되는 새행 규칙과 문자 집합을 설명한다. 보통 Emacs는 사용자를 위해 이러한 설정을 자동으로 처리하지만 때로는 이러한 정보를 갖는 것이 유용하다.


cs는 버퍼 내에 텍스트의 문자 집합을 설명한다(183 페이지의 19.5절 [부호화 체계]를 참고한다.) 그것이 대시('-')일 경우 이는 어떠한 특수 문자 집합 처리도 나타내지 않는다(다음 단락에 설명된 행 끝 규칙은 예외 가능). '='는 규칙이 없음을 의미하고, 주로 텍스트가 아닌 데이터를 포함한 파일에 사용된다. 여러 문자들은 다양한 부호화 체계를 나타낸다(예: '1'은 ISO Latin-1을 표현).


텍스트 터미널 상에서 cs 앞에는 두 개의 추가 문자가 붙는데, 키보드 입력과 터미널 출력용 부호화 체계를 설명한다. 또한 입력 방법을 이용할 경우 cs 앞에는 입력 방법을 식별하는 문자열이 따른다(181 페이지의 19.3절 [입력 방법]을 참고한다.)


cs 다음에는 주로 콜론이 온다. 다른 문자열이 표시되면 파일을 부호화하기 위한 중요한 행 끝 규칙을 나타낸다. 주로 텍스트 행은 파일 내 새 행 문자에 의해 구분되지만 때로는 두 가지 다른 규칙이 사용된다. MS-DOS 규칙에서는 "복귀(carriage-return)" 문자 다음에 "개행(linefeed)" 문자를 이용하고, 그러한 파일을 편집할 때 콜론은 운영체제에 따라 백슬래시 ('\') 또는 '(DOS)'로 변경된다. 기존 Macintosh 시스템에서 사용하는 또 다른 규칙에서는 새행 대신 "복귀" 문자를 사용하는데, 그러한 파일을 편집하면 콜론은 백슬래시 ('\') 또는 '(Mac)'으로 변경된다. Emacs는 일부 운영체제에서는 새행을 행 구분자로 사용하는 파일에 콜론 대신 '(Unix)'를 표시한다.


모드 행에서 다음 요소는 ch 가 표시한 문자열이다. 이는 창에 표시된 버퍼가 디스크 상에서 상응하는 파일과 동일한 내용을 가진 경우, 즉 버퍼가 "unmodified(수정되지 않음)"인 경우 두 개의 대시를 ('—') 표시한다. 버퍼가 수정된 경우에는 두 개의 별표를 표시한다(

'**'

). 읽기 전용 버퍼의 경우 버퍼가 수정되면

'%*'

를, 그 외에는

'%%'

를 표시한다.


ch 뒤에 오는 문자는 주로 대시('-')가 따라온다. 하지만 현재 버퍼에 대한 기본 디렉터리 값이 원격 기계에 있는 경우 '@'가 대신 표시된다(122 페이지의 15.1절 [파일명]을 참고한다.)


fr 은 선택된 프레임명을 제공한다(162 페이지의 18장 [프레임]을 참고한다.) 이는 텍스트 터미널 상에만 표시된다. 초기 프레임명은 'F1'이다.


buf 는 창에 표시되는 버퍼명이다. 사용자가 편집 중인 파일명과 동일한 것이 보통이다. 147 페이지의 16장 [버퍼]를 참고한다.


pos 는 창 상단 위 또는 하단 아래에 추가 텍스트가 존재하는지 알려준다. 사용자의 버퍼가 작아 모두 창 안에서 보인다면 pos 는 'All'이 된다. 버퍼의 시작을 바라보고 있다면 'Top'이 되고 버퍼의 끝을 바라본다면 'Bot', 그리고 'nn%'에서 nn은 창 상단 위에 버퍼의 비율을 의미한다. Size Indication 모드를 이용하면 버퍼의 크기도 표시할 수 있다. 84 페이지의 11.18절 [선택적 모드 행]을 참고한다.


line 은 문자 'L' 다음에 포인트에 위치한 행 번호가 따라온다. (Column Number 모드를 켜면 현재 열 번호까지 표시할 수 있다. 84 페이지의 11.18절 [선택적 모드 행]을 참고한다.)


major는 버퍼에서 사용되는 주 모드 이름이다. 주 모드란 Text 모드, Lisp 모드, C 모드 등 버퍼에 대한 주요 편집 모드를 의미한다. 199 페이지의 20.1절 [주 모드]를 참고한다. 일부 주 모드는 주 모드 이름 다음에 추가 정보를 표시한다. 예를 들어 Compilation 버퍼와 Shell 버퍼는 하위프로세스의 상태를 표시한다.


minor는 몇 개의 활성화된 부 모드 목록으로, 주 모드의 상단에 추가 기능을 제공하는 선택적 편집 모드이다. 200 페이지의 20.2절 [부 모드]를 참고한다.


일부 기능은 부 모드가 아니지만 켤 때마다 부 모드와 함께 열거된다. 'Narrow'는 표시되는 버퍼가 텍스트 부분으로만 제한된 편집을 갖고 있음을 의미한다(73 페이지의 11.5절 [좁히기]를 참고한다.) 'Def'는 키보드 매크로가 현재 정의되어 있음을 의미한다(114 페이지의 14장 [키보드 매크로]를 참고한다.)


또한 Emacs가 재귀적 편집 수준 안에 있을 경우 모드를 감싸는 괄호 주위로 네모 괄호가 표시된다('[...]'). Emacs가 다른 재귀적 편집 수준 안에 위치한 재귀적 편집 수준이라면 이중 네모 괄호가 나타나는 식이다. 재귀적 편집 수준은 Emacs에 전역적으로 영향을 미치기 때문에 모든 창의 모드 행에는 그러한 네모 괄호가 나타난다. 404 페이지의 31.10절 [재귀적 편집]을 참고한다.


사용자는 모드 행의 모양뿐만 아니라 그 내용의 양식까지 변경할 수 있다. 관련 내용은 84 페이지의 11.18절 [선택적 모드 행]을 참고한다. 또한 모드 행은 마우스 감도 조절이 가능하므로, 모드 행의 여러 부분을 클릭하면 다양한 명령어를 실행한다. 관련 내용은 165 페이지의 18.5절 [모드 행 마우스]를 참고한다.


메뉴 바

각 Emacs 프레임에는 보통 상단에 공통된 연산을 실행할 수 있는 메뉴 바가 있다. 쉽게 볼 수 있기 때문에 이 곳에 열거시킬 필요가 없다.


마우스를 지원하는 디스플레이에서 마우스를 이용해 메뉴 바의 명령어를 선택하라. 메뉴 오른쪽 가장자리에 위치한 화살표는 부메뉴 또는 하위 메뉴(submenu)로 이어짐을 의미한다. 메뉴 항목의 끝에 위치한 '... '는 명령어를 실행 시 실제로 무언가를 하기 전에 사용자에게 입력 값을 요구할 것임을 의미한다.


메뉴 바에 몇몇 명령어는 일반적 단축키(key binding) 역시 이용 가능한데, 이런 경우 단축키는 항목 다음에 괄호 안에 표시된다. 전체 명령어 이름이나 메뉴 항목에 대한 문서화를 보려면 c-h k 를 입력한 다음 일반적인 방식으로 마우스를 이용해 메뉴 바를 선택한다(39 페이지 7.1절 [키 도움말]을 참고).


마우스를 사용하는 대신 (

menu-bar-open

명령어를 실행하는) F10을 눌러 첫 번째 메뉴 바를 호출할 수도 있다. 그 다음 방향 키로 메뉴를 탐색할 수 있다. 선택된 메뉴 항목을 활성화하려면 RET를 누르고, 메뉴 탐색을 취소하려면 C-g 또는 ESC ESC ESC 를 누른다.


텍스트 터미널에서는 에코 영역 내 메뉴바 메뉴로 접근할 수도 있다. 이를 위해서는

tty-menu-open-use-tmm

변수를

nil

이 아닌 값으로 맞춤화하라. 그리고 나면 F10을 입력하면 메뉴가 드롭다운되는 대신

tmm-menubar

명령어가 실행될 것이다. (언제든

tmm-menubar

를 호출하는 M-' 를 입력해도 좋다.)

tmm-menubar

는 키보드로 메뉴 항목을 선택하도록 해준다. 임시 선택이 에코 영역에 표시된다. 이후 사용자는 상하 방향키를 이용해 여러 항목으로 메뉴를 이동시킨 후 RET를 입력하여 항목을 선택할 수 있다. 각 메뉴 항목은 문자나 숫자로 지정되기도 한다(주로 항목명에서 일부 단어의 이니셜에 해당). 이 문자나 숫자는 항목명과

{{{1}}}

로 구분된다. 항목의 문자 또는 숫자를 입력하여 항목을 선택할 수 있다.


Notes