리눅스마스터 2급 필기 11 — 에디터 (vi·vim·emacs·nano·pico) 명령어 총정리
리눅스마스터 2급 필기 11 — 에디터 (vi·vim·emacs·nano·pico) 명령어 총정리
출제기준: 2차 1과목 리눅스 운영 및 관리 > 에디터 (편집기의 종류와 특징, 편집기의 활용)
기출 빈도: 2019~2023 기출 기준 약 7.3% (전체 5위권).
외울 키가 정해져 있어서 가성비 최고인 단원입니다.
vi 한 가지만 파고드는 단원이라고 생각하기 쉬운데, 기출은 vi(60%) + emacs(25%) + nano·pico(15%) 비율로 골고루 나옵니다. "누가 만들었나 / 모드가 있나 / 저장·종료 키가 뭔가" 세 가지만 잡으면 됩니다.
1. 편집기의 종류와 특징 ⭐⭐⭐⭐
1-1. CLI vs GUI
| 구분 | 편집기 | 특징 |
| CLI(터미널) | vi/vim, emacs, pico, nano | X 윈도 없이 사용 (SSH 원격 접속 환경에서 필수) |
| GUI | gedit(GNOME), kwrite(KDE) | X 윈도 환경에서만 사용, 윈도우 메모장과 비슷 |
1-2. 편집기별 비교표
| 편집기 | 개발자 / 시기 | 모드 | 핵심 특징 |
| vi | 빌 조이(Bill Joy), 1976, BSD | 있음 (3모드) | 화면 단위(screen) 편집기, 거의 모든 배포판에 기본 설치 |
| vim | 브람 무레나르(Bram Moolenaar), 1991 |
있음 | Vi IMproved. 다단계 undo/redo, 문법 강조, Tab 자동완성, GUI판 gvim |
| emacs | 리처드 스톨먼(Richard Stallman), GNU |
없음 | LISP 기반, 컴파일·메일·도움말까지 통합하는 확장성, Ctrl·Alt(Meta) 조합 |
| pico | 워싱턴 대학 (Pine Composer) | 없음 | 초보자용, 하단에 단축키 안내, 비자유 라이선스 |
| nano | 크리스 앨러가타, 1999 | 없음 | pico의 GNU 대체품 (TIP Isn't Pico), pico와 기본 사용법 동일 |
📌 기출 포인트
"vi 개발자 → 빌 조이 / emacs → 리처드 스톨먼 / vim → 브람(Bram)" 세 쌍이 그대로 출제됩니다.
기출 선택지의 "브람 브레나르"는 vim 개발자 Bram Moolenaar를 가리키는 표기입니다(공식 한글 표기는 무레나르).
시험에서는 "브람"으로 시작하는 사람 = vim으로 연결하세요.
"기본 사용법이 동일한 조합" → pico, nano"비모드형(modeless) 편집기 + 컴파일·강력한 도움말" → emacs
"화면(screen) 에디터가 아닌 것" → ed (ed는 줄 단위 라인 에디터의 시초)
⚠️ 함정 ① — 보기에 섞여 나오는 "편집기가 아닌 것"
sh(셸),gcc(컴파일러),notepad(윈도우 전용)는 편집기가 아닙니다.
⚠️ 함정 ② — "X 윈도에서만 사용 가능한 편집기" → gedit, kwrite.
nano·pico·vim·emacs는 터미널에서도 돌아갑니다. (emacs는 X에서도 돌지만 -nw 옵션이면 터미널 전용)
2. vi / vim 사용법 ⭐⭐⭐⭐⭐
2-1. 세 가지 모드와 전환
i, a, o … :
명령 모드 ────────→ 입력 모드 명령 모드 ────────→ 마지막 행(ex) 모드
←──────── ←────────
Esc Enter(실행) 또는 Esc
| 모드 | 하는 일 | 진입 |
| 명령 모드 | 커서 이동·삭제·복사·붙여넣기 (vi 시작 시 기본) | Esc |
| 입력 모드 | 글자 입력 | i, a, o 등 |
| 마지막 행(ex) 모드 | 저장·종료·검색·치환·환경설정 | : / ? |
⚠️ 함정 — "입력 모드에서 Esc를 누르면 ex 모드로 전환" → 틀림!
Esc는 명령 모드로 갑니다. ex 모드는 명령 모드에서 :를 눌러야 들어갑니다.
⚠️ 기본 모드에 "출력 모드", "그래픽 모드"는 없습니다.
2-2. 입력 모드 진입 키 ⭐⭐⭐⭐⭐ (대·소문자 구분!)
| 키 | 동작 |
| i | 커서 앞에서 입력 |
| a | 커서 뒤에서 입력 |
| I | 행의 처음에서 입력 |
| A | 행의 끝에서 입력 |
| o | 현재 행 아래에 새 행 삽입 후 입력 |
| O | 현재 행 위에 새 행 삽입 후 입력 |
외우는 법: i(in) a(after) o(open a line below), 대문자는 "더 크게" — 행 처음(I)/행 끝(A)/위쪽(O)
⚠️ 함정 — "다음 중 입력 모드로 전환하는 명령이 아닌 것 → X". X(대문자)는 커서 앞 글자를 삭제하는 명령입니다.
2-3. 커서 이동 (명령 모드)
| 키 | 동작 |
| h / j / k / l | 좌 / 하 / 상 / 우 |
| 0 (또는 ^) | 행의 처음 |
| $ | 행의 끝 |
| gg | 문서 맨 처음 |
| G | 문서 맨 끝 |
| nG | n번째 행으로 이동 |
⚠️ 함정 — "커서 이동 명령 중 틀린 것 → i". i는 이동이 아니라 입력 모드 진입입니다. (h·j·k·l만 이동)
2-4. 편집 (명령 모드) ⭐⭐⭐⭐⭐
| 키 | 동작 |
| x | 커서 위치 문자 삭제 (nx = n개 삭제) |
| X | 커서 앞 문자 삭제 |
| dd / ndd | 현재 행 / n행 삭제(잘라내기) |
| dw | 단어 삭제 |
| D 또는 d$ | 커서부터 행의 끝까지 삭제 |
| dG | 커서부터 파일 맨 끝까지 삭제 |
| yy / nyy | 현재 행 / n행 복사 (예: 3yy = 3행 복사) |
| p / P | 커서 아래(뒤) / 위(앞)에 붙여넣기 |
| u | 실행 취소(undo) — 직전에 삭제한 줄 복원 |
| Ctrl+r | 다시 실행(redo) |
| J | 현재 행과 다음 행 합치기 |
| . | 직전 명령 반복 |
| ZZ | 저장 후 종료 (:wq와 같음) |
⚠️ 함정 (실제 기출) — "D 또는 d$ : 커서부터 그 행의 맨 처음까지 삭제" → 틀림! 정답은 맨 끝까지입니다.
2-5. 마지막 행(ex) 모드 — 저장·종료 ⭐⭐⭐⭐⭐
| 명령 | 동작 |
| :w | 저장 (:w 파일명 = 다른 이름으로 저장) |
| :q | 종료 — 변경 사항이 없을 때만 종료됨 |
| :wq | 저장 후 종료 |
| :q! | 저장하지 않고 강제 종료 |
| :x | 변경이 있을 때만 저장하고 종료 |
| :e 파일명 | 해당 파일을 열기(편집 대상 불러오기) |
| :e! | 마지막 저장본으로 되돌리기 |
⚠️ 함정 ① — ":q는 수정된 사항이 있어도 무조건 종료한다" → 틀림. 수정 후엔 :q!를 써야 합니다.
⚠️ 함정 ② — ":e 파일명은 파일명으로 저장하고 종료한다" → 틀림. :e는 파일을 여는 명령입니다.
2-6. 마지막 행 모드 — 설정·검색·치환 ⭐⭐⭐⭐⭐
| 명령 | 동작 |
| :set nu (number) | 행 번호 표시 / :set nonu 해제 |
| :set ic | 검색 시 대소문자 무시 (ignorecase) |
| :set ai | 자동 들여쓰기 (autoindent) |
| :set sm | 대응되는 괄호 표시 (showmatch) |
| :set list | 탭·행끝 같은 제어문자 표시 |
| /문자열 | 아래 방향 검색 |
| ?문자열 | 위 방향 검색 |
| n / N | 같은 방향 다음 결과 / 반대 방향 이전 결과 |
| :%s/기존/신규/g | 문서 전체 치환 |
| :.,$d | 현재 행부터 마지막 행까지 삭제 |
치환 명령은 정규표현식 기호와 합쳐서 나옵니다.
| 명령 | 의미 |
:%s/linux/Linux/g |
전체에서 linux → Linux |
:%s/^linux$/Linux/g |
한 줄이 정확히 linux인 줄만 치환 (^=행 시작, $=행 끝) |
:%s/linux$/linux./ |
linux로 끝나는 줄의 끝에 마침표 추가 |
📌
%는 "파일 전체",s는 substitute,g는 "행 안의 모든 일치 항목".^·$가 보이면 행 시작·행 끝 조건이라고 읽으세요.
2-7. vim 실행 옵션 ⭐⭐⭐⭐
| 옵션 | 의미 | 예 |
| -R | 읽기 전용으로 열기 (Read-only) | vi -R /etc/passwd |
| -r | 스왑 파일로 비정상 종료 파일 복구 (Recover) | vi -r file.txt |
| +n | n번째 행부터 열기 | vi +10 file |
| +/문자열 | 해당 문자열이 처음 나오는 곳에서 열기 | vi +/root /etc/passwd |
| -b | 바이너리 모드 |
외우는 법: Read-only → 대문자 -R, recover → 소문자 -r (둘이 헷갈리기 쉬워서 대·소문자가 곧 함정 포인트)
3. emacs 사용법 ⭐⭐⭐⭐
emacs는 모드가 없는 편집기라 입력 모드 전환 없이 바로 타이핑하고, 명령은 Ctrl(C-)과 Alt(M-, Meta) 조합으로 실행합니다.
3-1. 파일·종료
| 키 | 동작 |
| C-x C-f | 파일 열기 |
| C-x C-s | 저장 |
| C-x C-w | 다른 이름으로 저장 |
| C-x C-c | 종료 |
| C-g | 진행 중인 명령 취소 |
| C-x u | 실행 취소(undo) (교재 표기) |
3-2. 커서 이동
| 키 | 동작 |
| C-f / C-b | 오른쪽 / 왼쪽 (forward / backward) |
| C-n / C-p | 아래 / 위 (next / previous) |
| C-a / C-e | 행 처음 / 행 끝 |
| M-a / M-e | 문장 처음 / 문장 끝 |
| M-< / M-> | 문서 처음 / 문서 끝 |
| C-v / M-v | 다음 화면(앞으로) / 이전 화면(뒤로) |
⚠️ 기출 함정 — "emacs 커서 이동 중 틀린 설명: Ctrl+v : 한 화면 뒤로 이동" → 정답이 ②입니다.
실제 emacs에서 C-v는 화면을 앞(아래)으로 넘기고, M-v가 뒤(위)로 넘깁니다.
기출 해설의 "Page Up/Page Down" 표현은 헷갈리게 쓰여 있으니, "C-v는 앞으로, Alt+v가 뒤로"로만 외우세요.
3-3. 삭제·복사·검색
| 키 | 동작 |
| C-d | 커서 위치의 한 글자 삭제 |
| M-d | 단어 삭제 |
| C-k | 커서부터 행 끝까지 잘라내기 (Kill) |
| C-y | 붙여넣기 (Yank) |
| C-s / C-r | 앞 방향 / 뒤 방향 검색 |
3-4. 질의 치환 (M-%) ⭐⭐
| 입력 | 의미 |
| y | 발견한 패턴을 치환 |
| n | 치환하지 않고 다음 패턴으로 |
| q | 질의·치환 종료 |
| ! | 나머지 모든 일치 항목을 한꺼번에 치환 (삭제가 아님!) |
3-5. 실행 옵션
| 옵션 | 의미 |
| -nw | X 창 없이 터미널에서 실행 (no window) |
| +n | n번째 행부터 열기 |
| -u 사용자 | 해당 사용자의 설정으로 실행 |
4. pico / nano 사용법 ⭐⭐⭐
두 편집기는 화면 아래에 단축키가 표시되어 초보자도 쉽게 쓰고, 조작법이 거의 같습니다. (^ = Ctrl)
| 키 | 동작 | 기억법 |
| ^O | 저장 | Write Out |
| ^X | 종료 | eXit |
| ^R | 파일 읽어 삽입 | Read |
| ^W | 검색 | Where is |
| ^K | 행 잘라내기 | Kut |
| ^U | 붙여넣기 | Uncut |
| ^G | 도움말 | Get help |
| ^J | 정렬(Justify) | |
| ^C | 현재 커서 위치 | |
| ^A / ^E | 행 처음 / 행 끝 | |
| ^V / ^Y | 다음 / 이전 페이지 | |
| ^I | Tab 삽입 | (기출: pico에서 Tab 삽입 = Ctrl-I) |
| 옵션 | pico | nano |
| 읽기 전용 | -v | -v |
| 마우스 사용 | -m | -m |
| 현재 행 번호 표시 | — | -c |
| 백업 파일 생성 | — | -B |
| 자동 줄바꿈 끔 | -w | — |
📌 읽기 전용 옵션 대응: vi -R = pico -v = nano -v
5. 편집기 한눈에 비교 ⭐⭐⭐⭐⭐
| 기능 | vi/vim | emacs | nano/pico |
| 저장 | :w |
C-x C-s |
^O |
| 종료 | :q / :wq / :q! |
C-x C-c |
^X |
| 모드 | 있음 (3모드) | 없음 | 없음 |
| 행 삭제 | dd |
C-k (행 끝까지) |
^K |
| 붙여넣기 | p |
C-y |
^U |
| 검색 | / ? |
C-s C-r |
^W |
| 읽기 전용 실행 | -R |
— | -v |
기출 문제 Q&A
Q. vi 편집기에서 한 줄이 정확히 linux인 경우에만 Linux로 전부 치환하는 명령은?
A. :% s/^linux$/Linux/g — ^는 행의 시작, $는 행의 끝이므로 한 줄 전체가 linux일 때만 일치합니다.
Q. vi 명령 모드에서 바로 직전에 삭제한 줄을 복원하는 명령은?
A. u (undo). dd는 삭제, c는 변경, r은 한 글자 교체입니다.
Q. vi에서 아래 방향으로 문자열을 검색하는 기호와, 다음 결과로 이동하는 키는?
A. / 와 n. (위 방향은 ?, 반대 방향 이동은 N)
Q. emacs 편집기에서 한 글자만 삭제하는 명령은?
A. C-d (M-d는 단어, C-k는 행 끝까지 Kill)
Q. 편집 중인 파일을 저장하지 않고 종료하는 vi 명령은?
A. :q! (:w 저장, :wq 저장+종료, :set nu 행 번호)
Q. 편집기로 보기 어려운 것은? (pico / vi / emacs / sh)
A. sh — 셸입니다. 같은 맥락으로 gcc(컴파일러), notepad(윈도우)도 편집기가 아닙니다.
Q. 다음 중 화면(screen) 에디터가 아닌 것은? (vi / pico / ed / emacs)
A. ed — 줄 단위 라인 에디터의 시초입니다.
Q. vi 편집 중 이전 비정상 종료 파일을 복구하며 여는 방법은?
A. vi -r 파일명 (읽기 전용은 -R)
💡 실무에서는?
서버 설정 파일을 만질 때는 일단 vi -R이나 view로 읽기 전용으로 열어서 확인하고, 수정할 때만 일반 모드로 다시 엽니다.
실수로 dd 한 번 누르고 :wq 해버리는 사고를 막아줍니다.
그리고 /etc/fstab, sshd_config처럼 한 줄 오타가 부팅·접속 불가로 이어지는 파일은 수정 전 cp로 백업부터 뜨고, 수정 후 :set nu로 행 번호를 켜 두면 오류 메시지의 "line 12" 같은 위치를 바로 찾을 수 있어요.
SSH 세션이 끊겨 vi가 비정상 종료되면 .swp 파일이 남는데, 그때 vi -r로 복구하는 게 바로 이 단원의 실전 활용입니다.
핵심 정리
✅ vi=빌 조이(1976) / vim=브람(1991) / emacs=리처드 스톨먼 / nano=pico의 GNU 대체 (사용법 동일)
✅ 모드 있음: vi·vim (명령/입력/마지막 행) — 모드 없음: emacs·pico·nano
✅ GUI(X 윈도 전용): gedit, kwrite / ed = 라인 에디터 / sh·gcc·notepad는 편집기 아님
✅ i(앞) a(뒤) I(행 처음) A(행 끝) o(아래 행) O(위 행) — X는 입력 모드 아님!
✅ x 문자삭제, dd 행삭제, yy 복사, p 붙여넣기, u 취소, D·d$ = 행 끝까지 삭제
✅ :w 저장 / :q 변경 없을 때만 종료 / :wq 저장+종료 / :q! 강제 종료 / :e 파일 열기
✅ :set nu(행번호) ai(자동들여쓰기) ic(대소문자무시) / /아래검색 ?위검색 n·N
✅ :%s/기존/신규/g 전체 치환, ^=행시작 $=행끝, :.,$d 현재~끝 삭제
✅ vi -R(읽기전용) -r(복구) +n(n행부터)
✅ emacs: 저장 C-x C-s / 종료 C-x C-c / 한 글자 삭제 C-d / Kill C-k, Yank C-y / -nw
✅ nano·pico: 저장 ^O / 종료 ^X / 검색 ^W / 잘라내기 ^K, 붙여넣기 ^U / 읽기전용 -v
다음 편 예고: 12편은 소프트웨어 설치 입니다.
rpm·yum·dnf, dpkg·apt, 그리고 tar·gzip 같은 아카이브 명령까지 — 기출 8%를 차지하는 효자 단원이에요!
궁금한 점은 댓글로 남겨주세요!