ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • emacs를 써보자 #1
    기술 관련/etc 2021. 1. 18. 00:22

    emacs 냐 vi 뭔가 해묵은 취향의 선택지에서 나의 선택은 vi였다.

     

    처음 사회 생활을 시작해서 주변에 vi를 잘 사용하는 사람들이 제법 있었기도 했지만 어지간한 linux shell에 vi는 설치되어 있기 마련이라 이를 익혀 두는것이 도움이 될 것라는 생각에 시작하게 되었다. 사실 vi라기 보다는 vim을 주로 사용하는 것이었지만 ㅎㅎ

     

    물론 emacs를 잘 사용하시는 사람도 있었고, emacs를 배워 볼까 하던 생각도 있었다.  특히 코어 엔진 개발을 하고 있던 분이 애용하고 본인이 필요한 도구를 emacs로 세팅해 놓고 썼으므로 이걸 배워야 뭔가 더 전문 개발자 영역에 들어서는게 아닐까 하는 생각이 들었기 때문이었다.

     

    그 당시 emacs 쓰시는 분에게 emacs랑 vi가 비슷한거 아니냐고 말했다가 완~전 다른 거라는 대답을 받았는데, 그 대답을 하던 표정이 갑자기 떠올랐다.  ㅎㅎ 암튼, 그 당시 둘 다 처음 배우는 입장에서 emacs와 vi 중 emacs를 선택하지 않았던 이유가 ctrl키의 조합이 많이 된다는 것이었다. 일단 편집기라는 것이 커서를 움직이 편집을 하고 저장을 하는 그런 성격을 가졌는데 emacs는 그런 모든 명령을 ctrl 조합으로 구성되어 있는 반면 vi는 command 모드와 edit 모드가 구분되어 있어 관련 부분에 대한 접근이 덜 부담스러웠다.

     

    뒤돌아 생각해보면 복잡한 것은 vim도 마찬가지긴 하다. 이제는 좀 익숙해져 vim의 수많은 기능 중 일부분을 편하게 쓸 수 있지만, 그 당시는 너무 혼란스러웠던 것으로 기억한다. 시작은 했는데 종료를 못하거나 커서를 이동해야 하는데 일반 화살표 방향키를 누르면 삑삑되며 이상한 문자를 찍어대는 통해 정말 당황했던 기억이 있다. 특히 종료 하는 방법을 몰라 우두커니 검은 화면을 보고 있는 것도 기억에 남아있다. 

     

    emacs라는 것이 기억에서 잊혀질까 했는데 눈앞에 다시 나타나버렸다. 안배워도 상관 없다고는 하지만 생각난김에 처음부터 배우는 입장에서 시도해보고자 한다. 그렇지만 위의 vim에서 겪었던 것을 다 겪어야 하므로 익숙해지려면 시간이 좀 오래 걸릴 것 같다. 그래도 뭐 배움에는 달리 방법이 없으니 ㅎㅎ 

    1. emacs 설치

    가장 먼저 할 것은 emacs를 설치해야 한다. emacs는 GNU Project 중 하나인 Software로 emacs 공식 홈페이지에서 다운로드 받을 수 있다.

     

    다양한 플랫폼에 포팅되어 있으며 지금 사용하는 MacOS용도 존재한다.

    www.gnu.org/software/emacs/download.html

     

    GNU Emacs download - GNU Project

    Emacs runs on several operating systems regardless of the machine type. The main ones are: GNU, GNU/Linux, FreeBSD, NetBSD, OpenBSD, MacOS, MS Windows and Solaris. GNU/Linux Most GNU/Linux distributions provide GNU Emacs in their repositories, which is the

    www.gnu.org

    일단 여기서 각자 플랫폼에 맞춰 설치할 수 있다.

     

    2. 기본 명령어 배우기

    편집기의 가장 큰 기능은 뭐다? 커서를 이동하면서 글자를 입력 할 수 있도록 하는 것이다.

     

    VI의 경우는 Command 모드와 Edit 모드를 구분해서 사용하지만 emacs의 경우는 단축키를 조합하는 형태를 사용한다. Control키 또는 Meta키(Alt키)와 알파벳을 조합하는 형태로 구성되어 있다.

     

    관련 된 내용은 cheat sheet을 인쇄해서 보면서 익혀야 할 것 같다. (근데, 이게 너무 옛날것처럼 보이기도 한다 ㅎㅎ)

    ccrma.stanford.edu/guides/package/emacs/emacs.html

     

    https://ccrma.stanford.edu/guides/package/emacs/emacs.html

     

    ccrma.stanford.edu

    참고로, emacs에는 사용 튜토리얼이 내장되어 있다. Ctrl + h t 를 입력하면 나오는 글이 Tutorial이므로 필요한 부분은 찾아서 확인 해 볼 수 있다. 근데 그것도 emacs 상으로 열리게 되므로, 뭔가 검색이라는 걸 하고 커서도 이동할 줄 알아야 시도 해볼 수 있다.

     

    단축키 표기 방법

    본 글에서는 Control 키 조합 표현을 다음과 같이 한다.

    Ctrl + x c

    Ctrl 키는 키보드의 Ctrl키이다. 이 키를 먼저 누르고 있는 상태에서 x키를 누르고, Ctrl 키를 떼지 않은 상태에서 다시 c키를 눌러 입력을 완성한다.

     

    Meta 키의 경우는 ESC키 또는 Alt 키나, Option 키를 이용 할 수 있다.

    Meta + a

     

    참고로, 일반적인 QWERTY 키보드의 경우 '<'와 '>'처럼 반드시 Shift 키를 눌러야 입력 가능한 경우가 있는 경우도 구분하지 않고 표기한다.

    Meta + <

     

    단축키 명령 중지 방법

    만약  Ctrl이나 Meta로 명령을 시작하면 조합이 시작이 되는데 이를 취소하고자 한다면 언제든지 다음 명령을 실행하면 된다.

    Ctrl + g

     

    파일 관련 명령

    emacs 나가기(exit)

    Ctrl + x c

     

    현재 편집 중인 파일을 저장(save)하기

    Ctrl + x s

     

    새 이름으로 파일 저장(write)하기

    Ctrl + x w 파일 이름

     

    기존 파일(file) 로딩하기

    Ctrl + x f 파일 이름

    만약 파일이 없는 경우라면 새 파일 생성으로 동작한다.

     

    글자 단위 커서 이동

    기본적인 커서 이동 방법으로 한 글자씩 이동한다. emacs는 방향키를 인식하므로 이를 이용하면 되지만, vim의 경험 상 이런 건 그냥 외워두는게 좋다.

     

    커서 뒤쪽(backward)로 한 글자 이동

    Ctrl + b

    커서의 왼쪽으로 이동한다.

     

    커서 앞쪽(forward)으로 글자 이동

    Ctrl + f

    커서의 오른쪽으로 이동한다.

     

    단어 단위 커서 이동

    기본적인 커서 이동 방법과 비슷하지만 Meta키를 이용한다. 

     

    커서 뒤쪽(backward)로 한 단어 이동

    Meta + b

     

    커서 앞쪽(forward)으로 한 단어 이동

    Meta + f

     

    문장 단위 커서 이동

    단어 단위 이동 방법과 비슷하게 문장Meta키를 이용하지만, 다른 키를 조합한다.

     

    커서가 위치한 문장의 처음(begin)으로 이동

    Meta + a

     

    커서가 위치한 문장의 마지막(end)으 이동

    Meta + e

     

    줄 단위 커서 이동

    문장 단위 이동 방법과 비슷하지만 하나의 줄을 기준으로 이동한다.

     

    커서가 위치한 줄의 처음(begin)으로 이동

    Ctrl + a

     

    커서가 위치한 줄의 마지막(end)으 이동

    Ctrl + e

     

    커서가 위치한 줄의 바로 이전(previous) 줄로 이동

    Ctrl + p

    윗 줄로 이동한다.

     

    커서가 위치한 줄의 바로 다음(next) 줄로 이동

    Ctrl + n

    아랫 줄로 이동한다.

     

    페이지 단위 커서 이동

    페이지 단위 이동은 다음 키를 이용한다. 단, 처음 시도를 하면 커서의 위치는 그대로이지만 화면이 스크롤되는 효과가 된다.

     

    커서가 위치한 줄의 바로 다음 페이지 만큼 이동

    Ctrl + v

    다음 페이지로 스크롤

     

    커서가 위치한 줄의 바로 이전 페이지 만큼 이동

    Meta + v

    이전 페이지로 스크롤

     

    문서 단위 커서 이동

    페이지 단위 이동까지 했으니 이번엔 문서 전체를 기준으로 이동하는 방법이다. 

    여기서 주의 할 것이 '<'와 '>'를 입력하려면 키보드에서 반드시 Shift 키를 눌러야 입력 가능하다.

     

    문서의 처음으로 이동

    Meta + <

     

    문서의 마지막으로 이동

    Meta + >

    앞서 이야기 한 것 처럼 '<'와 '>'은 shift를 눌러 입력하는 것이 맞다.

     

    문서의 특정 줄로 이동

    Meta + g g 라인수

    문서의 특정 줄로 이동하는 밥으로 명령을 입력 후 원하는 라인 수를 입력한다

     

    검색과 치환

    검색 하기

    Ctrl + s 검색어

    검색은 문서의 처음부터 마지막 방향으로 검색되며 여러 개 된다면 Ctrl + s를 반복하면 다음에 찾은 곳으로 커서가 이동한다.

    이와 반대로 문서 마지막 부터 처음 방향으로 검색하려면 Ctrl + r 명령어를 이용한다.

     

    치환 하기

    Meta + % 검색문자열 변경문자열

    치환을 원하는 문장이나 단어를 찾으려면 우선 다음과 같이 입력하여 검색 창을 활성화 하고 원하는 검색어를 입력한다. 검색된 상태에서 y는 치환후 다음 검색문자열로 이동, n은 제외, q는 중지 명령을 할 수 있다.

     

     

    기타 자주 쓸만한 것

    되돌리기 (undo)

    Ctrl + / 또는 Ctrl + _ 

    편집을 했지만 뭔가 잘못했을 때 되돌리기 기능은 상당히 유용하다.

     

    되돌리기 취소 (redo)

    Ctrl + / 또는 Ctrl + _ 

    되돌리기를 하다가 뭔가 잘못 되돌린 경우 다시 원래대로 돌리기 위한 것인데, 되돌리기와 똑같은 키를 사용한다. 단, 되돌리기를 하다가 Ctrl + g를 눌러 명령을 취소하면 undo 했던것 까지 취소 가능한 상태가 되므로, 이 때 undo를 하면 redo의 효과가 발생한다. 그래서 일반적인 undo/redo와 차이가 동작이 조금 다르다.

     

    영역 선택 시작

    Ctrl + Space 또는 Ctrl + @

    선택 영역을 시작하고 커서를 이동후 범위를 선택을 완료 한다. 그리고, 다음 명령으로 오려두기나 복사하기 명령을 이용하여 선택 영역을 완료한다

     

    선택 부분을 클립보드로 복사

    Meta + w

     

    선택 부분 오려두기

    Ctrl + w

     

    선택 부분 붙여 넣기

    Ctrl + y

     

    커서 이후 내용 삭제하기

    Ctrl + k

    현재 편집 중인 줄에서 커서가 위치한 곳부터 해당 줄 끝까지를 삭제할 수 있다.

     

    단어 대문자로 변경하기

    Meta + u

     

    단어 소문자로 변경하기

    Meta + l

     

     

    댓글

Designed by Tistory.