Emacs 한글사용설명서 - yts0227/gitprojectemacs GitHub Wiki

Emacs 개요

Emacs는 무엇인가?

GNU Emacs Manual에서는 Emacs를 확장과 커스터마이징이 가능한 자체 문서화 실시간 편집기라고 부른다. 단지 일반 텍스트 파일을 편집 할 수 있는 것 외에도 Emacs는 프로그램 작성, 실행 및 테스트 도구 뿐만 아니라 다양한 다른 언어 및 프로그래밍/마크 업 언어로 작성하는 데 도움이 되는 특수 기능을 가지고 있다.

특징

  • 다양한 파일 형식의 구문 색상을 포함하는 내용 인식 편집 모드.
  • 새로운 사용자를 위한 튜토리얼을 포함하여 내장 된 완벽한 설명서 제공.
  • 거의 모든 언어에 대한 완벽한 유니 코드 지원.
  • Emacs Lisp 코드 또는 그래픽 인터페이스를 사용하여 고도의 사용자 정의가 가능.
  • 프로젝트 계획자, 메일 및 뉴스 리더, 디버거 인터페이스, 달력 등을 비롯하여 텍스트 편집 이상의 다양한 기능 제공.
  • 확장 기능을 다운로드하고 설치하기 위한 패키징 시스템.

프로젝트의 목표

이런 강력한 에디터인 Emacs를 다루기 위해서는 기초적인 프로그래밍에 대한 이해능력과 지식이 필요하고, 또한 다른 타 에디터와는 다르게 한글로 되어있는 참고 문헌이나 설명 등이 많이 부족한 실정이다. 따라서, 이 프로젝트에서는 크게 Emacs에 대한 배경지식을 설명하고, 영어로만 쓰여져 있는 ‘A guided tour of Emacs’를 번역하여 처음으로 Emacs를 접하는 사람들과 현재 사용하고 있는 사용자들에게 다가오는 Emacs의 진입장벽을 낮추는 것이 목표이다.

Emacs의 사용법과 기본 설정 설명

설치법

  • Linux 설치법(우분투):

      • sudo apt-add-repository -y ppa:adrozdoff/emacs
      • sudo apt update
      • sudo apt install emacs25
  • Windows 설치법:

    1. GNU Emacs 홈페이지 Emacs에서 Windows 버튼 클릭 후 최신버전의 zip 파일 다운로드
    2. 바탕화면에 압축을 푼 후, bin 폴더 안의 runemacs.exe 실행
  • Mac 설치법:

    1. Homebrew 실행
      • $ brew update
      • $ brew install emacs --with-cocoa
      • $ brew linkapps emacs

실행화면

  • 빨간 네모박스는 윈도우(window)라고 한다.
  • 파란 네모박스는 상태표시줄(mode-line)이라고 한다.
  • 상태표시줄 아래 빈칸은 미니버퍼(mini buffer)라고 한다.

윈도우 인터페이스

  • Emacs Tutorial: 클릭을 하면 기본적으로 한글로 되어있는 튜토리얼이 나온다. 어색하게 번역이 돼있지만 이해하는데 어렵지 않다. 만약 영어나 다른 언어로 된 튜토리얼을 읽고 싶다면 메뉴의 Help에서 Emacs Tutorial (Choose language)를 클릭 후 원하는 언어 클릭을 하면 된다. 튜토리얼에는 Emacs를 사용하는데 있어서 필요한 기본적인 단축키들을 설명한다. 튜토리얼답게 중간중간 단축키를 연습을 시키는 문장들이 있다.

  • Emacs Guided Tour: GNU 홈페이지에서 Emacs의 특징에 관한 투어(설명)를 시켜준다. 사실 튜토리얼과 비슷하게 기본적인 단축키를 설명해주는데, 시각적으로 더 잘 되어있다.

  • View Emacs Manual: Emacs에 대한 모든 것.

  • Absence of Warranty: GNU GPL을 쓴다.

Emacs Tour 한글화

A Guided Tour of Emacs

Tour--- 영문버전

GNU Emacs Manual에서는 Emacs를 확장과 커스터마이징이 가능한 자체 문서화 실시간 편집기라고 부릅니다. 그러나 매뉴얼은 초보자들에게 Emacs가 할 수있는 것에 대해 거의 알려주지 않습니다. 여기, Emacs로 할 수 있는 것들을 설명하겠습니다

단지 일반 텍스트 파일을 편집 할 수 있는 것 외에도 Emacs는 프로그램 작성, 실행 및 테스트 도구 뿐만 아니라 다양한 다른 언어 및 프로그래밍/마크 업 언어로 작성하는 데 도움이되는 특수 기능을 가지고 있습니다.

Emacs는 GDB와 통합되어 IDE를 제공합니다. (M-x gdb)

Emacs는 두 파일을 비교하여 차이점을 강조 표시 할 수 있습니다. (M-x ediff)

Emacs는 파일 관리자입니다. (M-x dired)

Emacs로 뉴스, 메일, RSS 피드를 읽을 수 있습니다. (M-x gnus)

Emacs에서 테트리스도 할 수 있습니다. (M-x tetris)

왜 어떤 사람들은 Emacs가 단지 텍스트 편집기가 아니라 거의 완전한 운영체제라고 생각하는지 보실 수 있습니다. 일부 사용자는 Emacs 내에서 거의 모든 작업을 수행 할 수 있다고 합니다.

왜 Emacs를 사용하는가

Emacs는 다양한 종류의 작업을 위한 통합 환경을 제공함으로써 생산성을 높여준다.

  • 코드 편집, 매뉴얼 읽기, 쉘 사용, 전자 메일 작성과 같은 기본적인 편집 명령 (명령이 엄청 많다)을 사용할 수 있다.
  • Emacs가 텍스트를 열고, 저장하고, 검색하고, 처리하는 데 필요한 모든 도구는 사용자가 수행하는 작업에 관계없이 사용할 수 있다. 이러한 일관성은 Emacs내에서 작업하는 것이 별도의 프로그램을 사용하는 것을 배우는 것보다 쉽다는 것을 의미한다.

Emacs가 만약 사용자가 원하는 대로 작동하지 않으면, EmacsLisp (Elisp) 언어를 사용하여 Emacs를 커스터마이징 하거나, 일반적인 작업을 자동화 하거나, 새로운 기능을 추가 할 수 있다. Elisp는 시작하기 쉬우면서도 강력한 툴이다. Elisp를 통해 Emacs의 거의 모든 기능을 변경하고 확장 할 수 있다. 왜냐하면 사실 거의 모든 Emacs의 특성들이 Elisp로 작성되어 있기 때문이다.

Emacs는 이식성이 뛰어나다. GNU/Linux, BSD 및 기타 유닉스 파생 상품 및 Microsoft Windows와 같은 일부 독점 운영 체제를 포함한 많은 플랫폼에서 동일한 구성의 동일한 편집기를 사용할 수 있다.

시작하기 전에 ...

Emacs를 처음 설치하는 경우 여기에 제시된 예제를 따라 할 수 있다. 먼저, Emacs를 처음 사용한다면 Emacs 튜토리얼을 읽어야한다. 실습을 통해 다음과 같은 많은 것들을 익히 게 될 것이다 :

    • Emacs의 시작과 종료
    • 기본 텍스트 이동 및 편집 명령
    • 파일 열기 및 저장
    • Emacs 개념 : 윈도우, 프레임, 파일, 버퍼
    • 키 바인딩과 M-x로 명령 호출

튜토리얼을 실행하려면 Emacs를 시작하고 C-h t를 입력하면 된다. (즉, Ctrl-h 다음에 t를 입력) 이 투어에서 설명하는 모든 기능은 GNU Emacs 23에서 작동한다. 설명 된 일부 기능은 이전 버전의 Emacs에는 포함되지 않았지만 별도로 설치할 수 있다.

Emacs 매뉴얼은 Emacs 를 배우기에 훌륭한 자료이다. Emacs에서 C-h r을 입력하여 읽을 수 있다. 웹에서 매뉴얼을 읽을 수도 있다. (https://www.gnu.org/software/emacs/manual/emacs.html)

Emacs는 수많은 다른 도움말 기능을 가지고 있다. 그 중 일부는 나중에 설명할 것이다. C-h C-h를 입력하면 모든 도움말 기능의 목록을 볼 수 있다.

기본 편집 명령

Emacs가 사용자에게 빠르고 효율적으로 작업하게 하는 한 가지 방법은 텍스트를 이동하고 조작하는 명령을 제공하는 것이다. 문자, 단어, 줄, 문장, 단락, 페이지, 함수 정의, 공백 등을 조작하는 명령이 있다. 소스 코드, 웹 페이지, 쉘, 디렉토리 목록, 전자 메일 메시지 등 텍스트를 읽거나 편집 할 수 있는 곳이면 어디에서나 사용할 수 있다.

버퍼에서의 이동

가장 기본적인 버퍼 이동 명령은 포인트 (커서)를 행 (행) 또는 열 (문자)별로 이동한다.

  • C-f (forward) 한 문자 앞으로 커서이동
  • C-n (next line) 다음 줄로 커서이동
  • C-b (backward) 한 문자 뒤로 커서이동
  • C-p (previous line) 이전 줄로 커서이동

다음은 큰 단위로 이동할 수 있는 몇 가지 방법이다.

  • C-e 줄의 끝
  • M-b 한 단어 뒤로
  • M-e 다음 문장
  • C-v 다음 화면
  • M-> 버퍼의 끝
  • C-a 줄의 시작점으로
  • M-f 한 단어 앞으로
  • M-a 이전 문장으로
  • M-v 이전 화면으로
  • M-< 버퍼의 시작으로

이 단축키에 익숙해지면 손을 많이 움직일 필요가 없으므로 일 처리를 빠르게 할 수 있다. 그리고 이러한 키는 마우스를 사용하여 버퍼에서 이동하는 것보다 훨씬 빠르다.

Emacs는 그때 그때 상황에 맞는 방법으로 이동할 수 있는 추가 명령을 제공한다.

앞서 소개한 명령 중 많은 부분이 커서의 현재 위치와 관련된 위치로 이동하므로 반복적으로 사용할 수 있다 (예 : C-p C-p C-p를 사용하여 세 줄 뒤로 이동). 하지만 더 간단하게 접두사 인수를 사용하면 시간을 절약 할 수 있다. C-u 다음에 숫자를 쓰고, 그 후의 이동 명령은 지정된 횟수만큼 해당 명령을 반복한다. C-u [digit] 대신 M- [digit]를 사용할 수도 있다. 숫자를 지정하지 않고 C-u를 사용하면 기본값은 4이다. 숫자를 생략하던 안하던 어쨌든 점프하려는 단위의 수를 정확하게 모를 때 시간을 절약 할 수 있다.

  • C-u 3 C-p 3줄 뒤로
  • C-u 10 C-f 10 단어 앞으로
  • M-1 M-0 C-f 10 단어 앞으로
  • C-u C-n 4줄 앞으로
  • C-u C-u C-n 16줄 앞으로

버퍼의 특정 행 번호로 바로 이동할 수도 있다.

M-g g 지정된 행 번호로 이동

텍스트 검색은 버퍼에서 이동하는 편리한 방법이다. 특정 항목을 찾고 있을 때 단어 검색을 사용하여 선 또는 페이지 별로 하나하나 찾는 대신 바로 원하는 위치로 데려다 줄 수 있다.

  • C-s 단어 현재 커서 앞의 단어 찾기
  • C-r 단어 현재 커서 뒤의 단어 찾기

버퍼에서 돌아 다니는 다른 방법 중 하나는 마크를 사용하는 것이다.

마크

Emacs는 이전 커서 위치인 마크라는 것을 기억한다. 마크를 설정(C-SPC)하여 버퍼의 특정 위치를 나타내어 쉽게 되돌릴 수 있다. 그리고 나중에 C-x C-x를 입력해 마크로 돌아갈 수 있다. 사실, 이 명령(C-x)은 이전에 어느 지점에 있던 지점으로 이동한다; 따라서 두 번째 C-x C-x는 원래 위치로 점을 반환한다.

텍스트 죽이기 ("잘라내기")

텍스트 이동과 마찬가지로, Emacs는 다양한 양의 텍스트 삭제 명령도 있다.. C-k는 현재 행의 일부를 커서 위치부터 삭제한다. C-k의 접두사 인수는 여러 줄을 제거하는 데 사용할 수 있습니다.

  • C-k 행 삭제
  • C-u 10 C-k 10줄 삭제

다음 명령은 Emacs에서 "잘라내기"및 "복사"와 가장 유사하다.

  • C-w 잘라내기
  • M-w 복사하기

다음 명령도 유용하다.

  • M-d 커서 앞 단어 지우기
  • M-k 커서 위치부터 문장 전체 지우기

텍스트 Yanking ("붙여 넣기")

한 부분의 텍스트가 죽은 후에는 "클립 보드"와 유사한 ‘킬 링’이라고 하는 장소로 간다 : C-y로 킬 링에서 복원 할 수 있는 항목을 홱 잡아 당길 수 있다. 그러나 클립 보드와 달리 킬 링은 여러 항목(이전에 킬 한 항목들)을 보유 한다. C-y를 입력 할 때 홱 잡아 끄려는 항목이 놓여 있지 않으면 M-y를 (필요한 경우 반복적으로) 입력하면서 찾으면 된다.

  • C-y 붙여넣기
  • M-y 붙여넣기로 삭제한 문장을 되살리기

사실 많은 양의 텍스트를 삭제하는 대부분의 명령은 나중에 복원 할 수 있도록 실제로 삭제한다 (즉, 킬링에 넣음). Emacs에서는 텍스트를 영구적으로 잃기가 어렵다. 하나의 클립 보드만 가진 에디터에서는 실수로 많은 양의 텍스트를 삭제하거나 클립 보드의 내용을 손쉽게 잃을 수 있다. 하지만 Emacs에서는 이러한 경우에 손실 된 텍스트를 킬 링에서 쉽게 검색 할 수 있다.

실행취소

Emacs의 실행 취소 기능은 다른 에디터와 약간 다르게 작동한다. 대부분의 에디터가 일부 변경 사항을 실행 취소 한 다음 새로운 변경 사항을 적용한 경우 이전에는 "재실행"으로 액세스 할 수 있었던 상태를 더 이상 복구 할 수 없다. 따라서 "실행 취소"및 "다시 실행"을 광범위하게 사용하는 경우 실수로 다시 실행 목록을 손상시키지 않도록 주의해야한다.

Emacs는 이 결함이 없는 다른 실행 취소 모델을 사용한다. 어떤 순서로도 실행을 끊으면 Emacs는 모든 이전 동작을 실행 취소 할 수 있게 한다.

이 말이 이해하기 어렵다면 "실행 취소"는 항상 버퍼가 있던 이전 상태로 되돌릴 수 있다는 것을 기억하면 된다. (Emacs가 실행 취소 기록을 저장하기 위해 메모리가 부족한 경우 제외). 여기서의 핵심은 Emacs에서는 실수로 작업을 영구적으로 잃기가 어렵다는 것이다. 실행취소는 세 가지 키를 통해 사용할 수 있다.

  • C-/ 실행취소
  • C-_ 실행취소
  • C-x u 실행취소

따라서 이전 버퍼 상태로 되돌아 가야 할 경우 단순히 커서를 움직여 기존의 순서를 벗어나고 원하는 것을 찾을 때 까지 C-/를 누르면 된다.

검색

C-s 검색

C-s 다음에 텍스트를 입력하면 검색이 시작된다. Emacs는 입력한 항목으로 이동한다 (Mozilla Firefox 또는 다른 웹 브라우저에서도 비슷한 동작을 보았을 수 있다). 화면에 보이는 모든 일치 항목이 강조(highlight) 표시된다.

찾고 있는 것을 찾았으면 RET을 입력하거나 C-g ( "취소")를 클릭하여 검색이 시작된 곳으로 돌아갈 수 있다 .

  • C-s C-s 가장 최근에 검색된 항목 검색
  • C-s M-p 검색 기록의 이전 항목
  • C-s M-n 검색 기록의 다음 항목
  • C-h k C-s 검색에서 사용할 수 있는 더 많은 명령 가이드

C-r을 사용하여 뒤로 검색을 수행 할 수 있다. (위의 모든 명령은 역방향 검색에서와 비슷하게 활성화 할 수 있다.) 앞으로 또는 뒤로 검색하는 동안 언제든지 C-r (C-s)을 입력하여 역방향 (정방향) 검색으로 전환 할 수 있다.

검색 및 교체

M-% Query replace

query replace 명령은 검색 문자열 및 대체를 묻는 메시지를 표시한다. 그런 다음 버퍼의 각 일치 항목에 대해 검색 문자열을 바꿀지 여부를 선택할 수 있다. 다음은 사용할 수 있는 옵션 중 일부다.

    • y를 입력하여 현재 일치 항목을 대체.
    • n을 입력하여 교체하지 않고 다음 버퍼로 건너뜀.
    • q를 입력하여 더 이상 대체하지 않고 종료.
    • . 을 입력하여 현재 항목을 대체 후 종료.
    • !을 입력하여 남은 버퍼를 모두 대체.

키보드 매크로

키보드 매크로는 나중에 반복 할 수 있도록 고정 된 키 순서를 기억하는 방법이다. 지루한 편집 작업을 자동화하는 데 편리하다.

  • F3 기록 매크로 시작
  • F4 기록 매크로 중지
  • F4 매크로를 한 번 재생
  • M-5 F4 매크로를 5 번 재생
  • M-0 F4 실패 할 때까지 매크로를 반복해서 재생

명령 도움말

지금까지 이 글을 읽었다면 키보드 명령과 명령 이름을 기억할 필요가 없다는 생각이 들었을 것이다. 다행히도 Emacs에는 포괄적이고 쉽게 액세스 할 수 있는 설명서가 포함되어 있다. 이 문서는 초보자만을 위한 것이 아니다. Emacs는 수천 개의 명령을 가지고 있으며, 대부분의 사람들은 소수만 사용한다. 따라서 Emacs 전문가조차도 새로운 명령에 대해 배우거나 오래된 명령에 대한 기억을 찾기 위해 문서를 자주 참조한다.

특정 키 또는 명령이 무엇인지 기억하지 못하면 다음 명령 중 하나를 사용하여 설명을 읽을 수 있다.

C-h k

특정 키와 관련된 명령에 대한 설명서를 표시.

C-h f

특정 명령에 대한 문서를 이름 (즉, M-x 뒤에 입력 할 내용)으로 표시한다.

예를 들어, C-h k C -s 및 C-h f isearch-forward RET 둘 다 검색을 설명하는 페이지를 표시한다. 예를 들어, C-s가 수행하는 작업을 기억하지 못하거나 검색을 했지만 해당 기능에 대해 더 많이 알고 싶은 경우에 유용하다. 문서는 명령의 전체 이름을 제공하고, (있는 경우) 어떤 키가 바인딩 되어 있는지 보여주며 명령이 수행하는 작업에 대한 완전한 설명을 제공한다.

유용한 기능

일반적인 툴과의 통합

Emacs는 많은 일반적인 툴과의 통합으로 유명하다. 여기 몇 가지 예가 있다.

M-x shell

  • shell *이라는 이름의 버퍼에서 쉘을 시작하고, 이미 존재하는 경우 그 쉘로 전환한다. C-u M-x shell 을 입력하여 다른 이름의 버퍼를 사용하면 된다.

M-x compile

make를 호출하고 (원하는 대상과 옵션으로) 출력을 새 버퍼에 표시한다. Emacs는 파일 이름과 줄 번호가 포함 된 오류 줄을 식별하고 이를 클릭하여 해당 버퍼와 줄로 바로 이동할 수 있다.

M-x gdb

새 버퍼에서 gdb를 호출한다. 해당 버퍼에서 평소대로 gdb 명령 줄을 사용할 수 있다. 그러나 Emacs는 소스 버퍼에서 직접 중단 점을 설정하고 소스 버퍼에 활성 행을 표시하여 실행을 표시한다. Emacs는 또한 중단 점, 로컬을 각각 자신의 창에 동시에 표시 할 수 있다. 다음과 같은 여러 도구도 있다..

  • M-x calculator 계산기
  • M-x calendar 달력
  • M-x phases-of-moon 달의 변화 주기

버전 관리

Emacs는 버전 제어에 저장된 파일을 조작하고 편집하는데 도움을 줍니다. Emacs는 CVS, Subversion, bzr, git, hg 및 다른 시스템을 지원하지만 사용중인 버전 제어 시스템에 관계없이 VC라고하는 통일 된 인터페이스를 제공한다.

Emacs는 편집중인 파일이 버전 제어 하에 있을 때 이를 자동으로 감지하고 모드 라인에 다음과 같이 표시한다 : CVS-1.14를 사용하여 버전 관리 시스템을 표시하고 현재 버전을 표시한다.

VC는 버전 제어 관련 작업을 위한 다른 명령을 제공한다.

C-x v =

현재 파일에 대한 변경 사항을 보여주는 diff를 표시.

C-x v ~

버전 번호를 묻는 메시지를 표시하고 현재 파일의 해당 버전을 다른 창에 표시.

C-x v g

파일의 주석 된 버전을 표시한다. 각 행에 대해 해당 행이 마지막으로 변경된 커밋과 누구에 의해 커밋 되었는지 나타낸다. 어느 행에서나 L을 눌러 해당 커밋에 대한 로그 메시지를 보거나 D를 사용하여 연관된 diff를 볼 수 있다.

C-x v l

파일에 대한 이전 변경 사항 로그를 표시한다. 커서가 특정 로그 항목에 있으면 d를 눌러 해당 변경 사항과 관련된 diff를 보거나 f를 사용하여 해당 파일 버전을 볼 수 있다.

일부 특수 기능은 diff (파일에서 또는 VC에서 생성 한 것)를 보고 있을 때 사용할 수 있다. Emacs를 사용하면 hunk 또는 파일을 사용하여 diff로 이동하고 파일을 개별적으로 적용하고 diff를 역방향으로 수행하고 diff를 읽거나 수동으로 편집하는데 유용한 다른 작업을 수행 할 수 있다.

원격 파일 편집

Emacs는 원격 파일을 Tramp라는 기능을 사용하여 투명하게 (로컬인 것 처럼) 편집 할 수 있다. Emacs가 파일을 요청할 때마다 / myname @ remotehost : / remote / path / to / file과 같은 원격 파일을 지정할 수 있다. Emacs는 SSH, FTP 또는 다른 방법을 통해 파일을 검색하고 완료되면 저장한다. Tramp를 사용하면 원격 컴퓨터에 Emacs가 설치되어 있지 않아도 하나의 Emacs 세션을 사용하여 다른 컴퓨터에서 파일을 편집 할 수 있다.

이맥스 서버

어떤 사람들은 Emacs의 단일 인스턴스만 열어서 거기에 있는 모든 파일을 편집하기를 원한다. 이렇게 하면 몇 가지 이점이 있다.

    • Emacs의 같은 인스턴스의 버퍼들 사이에서 텍스트를 죽이거나 없앨 수 있다.
    • Emacs는 인수 히스토리 (사용했던 명령, 열어 본 파일, 검색 한 용어 등)를 기억하지만 각 인스턴스 내에서만 사용한다.
    • 커스터마이징이 많은 경우 Emacs의 새 인스턴스를 시작하는 속도가 느리다.

또한, 파일을 편집하기 위해 쉘에 emacs를 입력하면 (또는 $ EDITOR가 외부 프로그램에 의해 호출 될 때) Emacs의 새로운 인스턴스가 시작된다. emacsclient를 사용하면 이 문제를 피할 수 있다. 대신 Emacs의 기존 인스턴스에 연결된 새 프레임을 열게 된다:

Emacs의 기존 인스턴스에 M-x server-start를 입력하라. 또는 .emacs 파일에 (server-start)를 추가하여 시작할 때 자동으로 실행되도록 할 수 있다.

파일을 편집하려면 프롬프트에서 emacsclient -t FILENAME을 입력하라. $EDITOR를 자동으로 호출하는 프로그램을 사용하는 경우 $EDITOR를 emacsclient -t로 변경할 수도 있다.

Emacs를 비생산적으로 즐기기..

  • M-x tetris 테트리스
  • M-x hanoi 하노이 게임
  • M-x doctor 심리치료사

일반적인 Emacs 개념들

접두사 인수

지금까지 살펴본 것처럼 접두사 인수는 반복을 나타내는 데 종종 사용된다.

  • C-u 10 C-f 커서를 10번 앞으로 이동
  • C-u M-a 커서를 4문장 뒤로 이동

또한 다음 명령을 수정하는 데 사용되는 접두어 인수를 보았다 (제공된 경우 숫자 인수는 무시 됨).

  • M-x shell shell이라는 이름의 쉘 버퍼를 생성하거나 스위치
  • C-u M-x shell 지정된 이름을 가진 셸 버퍼를 만들거나 전환.

주요 모드

모든 버퍼는 관련 메이저 모드를 가지며, 특정 동작, 키 바인딩 및 해당 버퍼의 텍스트 표시를 변경한다. 버퍼의 내용을 기반으로 사용 가능한 모양과 기능을 사용자 정의하는 것이다.

Emacs에는 널리 사용되는 프로그래밍 언어, 마크 업 언어 및 구성 파일 형식을 편집하기 위한 수십 가지 주요 모드가 제공된다. 이 주요 모드들은 Emacs에게 다음과 같은 방법을 알려준다 :

    • 코드를 올바르게 들여 쓰기 (일반적으로 TAB을 한 번 누르면 Emacs가 현재 행을 들여 쓴다).
    • 구문 강조 표시
    • 함수의 경계를 확인.
    • 코드에 대한 인터프리터, 컴파일러 또는 디버거를 호출.

M-x dired, M-x compile, M-x shell과 같은 몇 가지 명령은 버퍼에 특정 기능 (예 : 컴파일 오류 강조 표시 및 클릭 가능)을 제공하기 위해 자체 특수 모드를 사용한다.

현재 주요 모드가 모드 라인에 표시된다. 모드 라인의 마지막 항목은 (Python Narrow)와 같이 괄호 안에 하나 이상의 항목이어야 한다. 첫 번째는 주요 모드의 이름이다.

M-x와 모드 이름을 사용하여 기존 버퍼의 모드를 전환 할 수 있다.

  • M-x java-mode 자바 모드
  • M-x python-mode 파이썬 모드
  • M-x text-mode 텍스트 에디팅 모드
  • M-x fundamental-mode 보통 모드

Emacs는 파일을 열 때 사용할 올바른 모드를 저절로 결정하는 능력이 매우 뛰어나므로 위의 명령을 거의 사용할 필요가 없다.

그 외 모드

또한 모든 버퍼에는 여러 가지 마이너 모드가 있을 수 있다. 마이너 모드는 상호 작용 및 주요 모드와 독립적으로 사용할 수 있는 추가 기능이다. 보조 모드는 괄호 안의 주요 모드 다음에 모드 라인에 나열된다. 다음은 일반적으로 사용되는 몇 가지 예다.

M-x auto-fill-mode

70자를 초과하면 줄을 자동 줄 바꿈을 한다.

M-x flyspell-mode

입력하는 동안 철자가 틀린 단어를 강조 표시한다.

M-x follow-mode

두 개의 창에 나란히 표시되는 버퍼가 있는 경우, 후속 모드는 두 번째 창에 표시된 텍스트가 첫 번째 창에서 텍스트 바로 뒤에 오고 왼쪽 아래에서 커서를 움직이도록 함께 스크롤 하도록 한다. 창은 오른쪽 창 상단에 나타난다.

미니 버퍼

미니 버퍼 (프레임 하단의 공간)는 Emacs가 대부분의 상황에서 입력을 요구하는 곳이다 : 명령의 경우, M-x를 입력하면; M-x find-file 내의 파일 이름; Elisp 표현식, M-x eval-expression 등이다. 다음은 대부분의 미니 버퍼 프롬프트에 공통적인 몇 가지 기능이다.

    • 대부분의 버퍼 편집 및 이동 명령을 사용할 수 있다. 사용자는 안으로 이동해서 텍스트를 죽이고, 미니 버퍼로 텍스트를 끌어 올 수 있다.
    • M-p 및 M-n을 사용하여 이전 프롬프트를 현재 프롬프트로 찾아 볼 수 있다.
    • 탭 완성 기능도 있다. 예를 들어, M-x 프롬프트는 탭 완성 기능을 제공하므로 M-x wdired-ch 까지 입력 후 TAB을 누르면 M-x wdired-change-to-wdired-mode와 같은 긴 명령을 입력하는 것에 대해 걱정할 필요가 없다.

초심자를 위한 팁

비상시에는 ...

우연히 잘못된 키를 누를 경우 수행 할 작업은 다음과 같다.

    • 명령을 실행했고 Emacs가 버퍼를 수정했다면 C- /를 사용하여 변경을 취소하면 된다.
    • 접두어 키 (예 : C-x)를 누르거나 입력을 요청하는 명령 (예 : 파일 찾기 : ...)을 호출 한 경우 C-g을 필요한 경우 반복해서 입력하여 취소하면 된다.

C-g은 또한 Emacs가 동결 된 것처럼(렉) 보이면 장기 실행 작업을 취소한다.

키보드 및 터미널 설정

일부 Emacs 사용자는 Caps Lock 가 더 편한자리에 위치해 있다고 느껴서 Ctrl 키 역할을 하도록 다시 매핑하기도 한다. Ctrl 이동에 대한 지시 사항을 참조하면 된다.

(https://www.emacswiki.org/emacs/MovingTheCtrlKey)

키보드 또는 터미널 구성으로 인해 일부 키가 잘못된 것일 수 있다. DEL 키가 작동하지 않는 경우 (때로는 DEL을 입력하면 C-h를 입력 한 것처럼 도움말 화면이 표시됨) M-x normal-erase-is-backspace-mode를 시도하라.

메타 키가 작동하지 않는 경우 메타가 포함 된 키를 입력하려면 ESC를 입력 한 다음 나머지 키를 입력하면 된다. 예를 들어 ESC x는 M-x와 같고 ESC C-s는 C-M-s와 같다.

자주 묻는 질문

Emacs에는 자주 요청되는 많은 작업을 수행하는 방법을 설명하는 FAQ가 있다. C-h C-f를 눌러 내용을 읽으면 된다.

Emacs 로 이주하기

Emacs는 다른 편집 환경에서 쉽게 전환 할 수 있는 다양한 옵션을 제공한다.

Windows 사용자를 위한 Emacs

Windows에서 가장 기본적인 명령은 C-z, C-x, C-c 및 C-v이다. 안타깝게도, 이 키들은 Emacs에서 다른 용도 (일시 중지, 접두어 키, 접두어 키 및 다음 페이지)로 자주 사용된다. 옵션 메뉴에서 "CUA 모드"를 켜면 실행 취소, 잘라 내기, 복사 및 붙여 넣기를 위해 해당 키를 다시 가져올 수 있다. CUA 모드를 사용하면 Windows에서와 마찬가지로 Shift 키와 이동 키를 함께 사용하여 선택을 할 수 있다.

C-x와 C-c는 Emacs 연산에 매우 중요하기 때문에 (많은 명령의 접두사 키), CUA 모드는 텍스트를 선택했을 때 C-x와 C-c를 각각 잘라내기 복사하기만 한다.

CUA 모드에 대한 자세한 내용은 C-h f cua-mode RET을 입력하여 확인할 수 있다.

vi / vim 사용자를 위한 이맥스

바이퍼 (M-x viper-mode)는 Emacs에서 vi 편집 동작을 에뮬레이트하기 위한 모드 집합입니다. 그것은 당신이 Emacs를 원하는 것과 같은 vi에 따라 다른 수준의 vi-adherence를 제공합니다.

결론

Emacs는 얼마나 어려울까

희망사항

Emacs는 리차드 스톨만이 개발하였는데 그는 Emacs를 일종의 AI 머신으로 만드려고했다. 즉, 역사가 40년이나 된 에디터이고, 에디터를 넘어 하나의 거대한 플랫폼이다. 이것과 항상 같이 언급이 되는 에디터가 vim 이다. 그리고 현재 vim 뿐만 아니라 역사가 비교적 깊진 않지만 많이 사용되는 nano, Atom 등도 있다. Emacs는 다른 에디터보다 살짝 무겁긴 하지만 그만큼 기능도 많다는 말이다. 다만, 진입장벽이 너무 높아 사용자들이 꺼려하는 것이 흠이다. 부족하지만 한글화된 이 프로젝트를 통해 다른 에디터 뿐만 아니라 프로그래머들이 Emacs의 특징과 장점을 알아가는데 도움이 되었으면 한다.