우분투 · 리눅스 입문 — 13편 (중급)

vim 사용법 기초 — 모드·생존 키트·이동

"vim에 들어갔는데 못 나오겠어요" — 모두가 한 번씩 겪는 그 공포. 사실 키 8개면 안 죽고, 익히면 nano보다 훨씬 빨라요.

2026년 5월 12일 · 약 8분 · 26편 입문 시리즈 13편

터미널에 vim 편집기가 열려 NORMAL·INSERT 모드 표시가 보이는 화면 — vim 사용법 기초를 상징하는 일러스트

8편에서 nano를 배웠고, "vim은 한참 뒤 13편에서 따로"라고 했죠. 그 13편입니다. 그 사이 9편에서 "vim에서 빠져나오는 법만 외워두라"(Esc:q! → Enter)고 한 마디 했고요. 이번엔 그걸 제대로 — 왜 vim을 쓰고, 어떻게 안 죽고, 익히면 뭐가 좋은지.

먼저 솔직하게 — 일상적인 한 줄 편집은 nano로 충분합니다. vim은 "다음 단계"예요: ① 우분투 외 서버(특히 옛날 시스템)엔 nano가 없고 vi/vim만 있는 경우가 많고, ② 익숙해지면 손이 키보드를 떠나지 않아 편집이 훨씬 빠르고, ③ 많은 개발 도구·환경이 vim 키 조작을 흉내냅니다. 이 글의 목표는 "vim 마스터"가 아니라 — vim에서 안 죽고, 필요할 때 쓸 수 있게 만드는 것. 26편 입문 시리즈 13편, 여기서부터 "중급" 묶음입니다.

준비물 — 우분투 + 터미널. vim은 보통 깔려 있어요(없으면 sudo apt install vim — 11편). 8편에서 만든 ~/linux-practice에서 연습 파일로 실습하세요. 처음이면 시스템 파일(/etc/...)이 아니라 연습 파일로만 — 못 빠져나와도 연습 파일이면 부담 없으니까.

nano도 있는데 왜 vim — '모드'라는 발상

nano는 메모장처럼 "열면 바로 타이핑". vim은 다릅니다 — "지금 타이핑 모드냐, 명령 모드냐"가 따로 있어요(모달). 처음엔 이게 어색하지만, 익숙해지면 강력해집니다. 키 하나하나가 명령이 되니까(예: 그냥 dd 누르면 한 줄 삭제) 손이 화살표·메뉴를 안 거치고 바로 일을 합니다.

편집기방식 · 입문자 관점
nano모드 없음. 열면 바로 타이핑. 화면 아래 단축키 안내. 일상 편집은 이걸로 충분(8편).
vim / vi모달. "타이핑하려면 먼저 입력 모드로 들어가야" 함. 학습 곡선 있지만 익히면 빠름. 거의 모든 유닉스 서버에 깔려 있음 — 그래서 "최소한"은 알아두면 든든.

그러니까 — nano를 메인으로, vim은 "필요할 때 쓸 수 있는 비상 기술"로. 이 글의 분량이면 그 비상 기술은 충분히 익혀집니다.

모드가 핵심 — Normal · Insert · Command-line

vim의 모든 혼란은 "내가 지금 어느 모드에 있는지" 모를 때 옵니다. 모드는 셋만 알면 돼요:

  • Normal 모드 (기본·돌아오는 곳) — vim을 열면 여기. 글자를 쳐도 입력이 안 되고 명령으로 해석됩니다(dd=줄삭제, x=글자삭제 등). 길 잃으면 무조건 Esc → Normal로 돌아옴.
  • Insert 모드 (타이핑하는 곳) — Normal에서 i를 누르면 진입. 이제 nano처럼 글자가 입력됩니다. 화면 아래에 -- INSERT -- 표시가 떠요. 다 쳤으면 Esc로 Normal로 복귀.
  • Command-line 모드 (저장·종료하는 곳) — Normal에서 :(콜론)을 누르면 화면 맨 아래에 : 프롬프트가 뜸. 여기에 w(저장)·q(종료)·wq 등을 치고 Enter.
황금률: 헷갈리면 Esc를 한두 번 누른다 → 무조건 Normal 모드. 거기서 다시 시작. vim에서 "갇혔다"는 느낌의 90%는 Insert 모드인 줄 모르고 명령을 쳤거나, 그 반대일 때입니다. Esc → Normal → 침착하게.

생존 키트 8개 — 이거면 안 죽는다

딱 이 여덟 개. 외우면 vim에 들어가도 무사히 나옵니다. (전부 Normal 모드에서 — 안 되면 먼저 Esc.)

하는 일
iInsert 모드로 (커서 자리부터 타이핑 시작). 비슷한 a=커서 다음부터, o=아랫줄 새로 만들고 입력.
EscNormal 모드로 복귀. 모든 길의 시작점.
:w + Enter저장(write). 파일 그대로 유지하면서 디스크에 씀.
:q + Enter종료(quit). 단, 저장 안 한 변경이 있으면 거부함("E37" 어쩌고).
:wq + Enter저장하고 종료. 가장 자주 씀. (ZZ — Shift 누르고 Z 두 번 — 도 같은 뜻.)
:q! + Enter저장 안 하고 강제 종료. "다 망쳤다, 그냥 나갈래" 할 때. 9편에서 외우라던 그 명령.
dd현재 줄 삭제(잘라내기). 5dd면 5줄 삭제. 실수로 눌렀어도 u로 되돌리면 됨.
u실행 취소(undo). 여러 번 누르면 계속 거슬러 올라감. 되돌리기를 되돌리려면 Ctrl+r(redo).

실습: vim ~/linux-practice/test.txt로 열고 → i → 아무 글이나 몇 줄 쓰고 → Esc:wq Enter. 다시 열어서 cat ~/linux-practice/test.txt로 확인. 그다음 또 열어서 dd로 줄 지워보고, u로 되살리고, :q!로 나가보기. 이 한 바퀴면 "vim 못 나가는 공포"는 끝납니다.

조금 더 — 이동·복사·검색, 그리고 vimtutor

생존 키트 위에 이 몇 개를 얹으면 vim이 "쓸 만"해집니다(여전히 다 Normal 모드):

  • 이동: h(←) j(↓) k(↑) l(→) — 손이 홈 포지션을 안 떠나는 그 유명한 이동키. w=다음 단어, b=이전 단어, 0=줄 맨앞, $=줄 맨끝, gg=파일 맨위, G=파일 맨아래. (화살표 키도 그냥 됩니다 — 처음엔 그거 써도 OK.)
  • 편집: x=글자 하나 삭제, dd=줄 삭제, yy=줄 복사(yank), p=붙여넣기(아랫줄에), cw=단어 바꾸기(지우고 Insert).
  • 검색: /단어 + Enter → 그 단어로 점프. n=다음 결과, N=이전. :%s/옛것/새것/g Enter = 파일 전체 일괄 치환(8편 nano의 Ctrl+\에 해당).
가장 좋은 vim 연습: 터미널에 vimtutor라고 치세요. vim이 직접 만든 30분짜리 인터랙티브 튜토리얼이 열립니다 — 화면이 시키는 대로 따라 치면 기초가 손에 박힙니다. 책 백 권보다 이 30분이 낫습니다. (한국어판도 있어요: vimtutor ko.)

욕심내지 마세요 — 생존 키트 8개 + 위 이동/편집 몇 개면, 서버에서 설정 파일 한 줄 고치고 나오는 데 아무 문제 없습니다. 더 깊은 건(매크로·플러그인·정규식 치환…) 정말 필요해질 때, 그때 배우면 됩니다. 그게 vim의 흔한 함정 — "한 번에 다 익히려다 질리기". 한 입씩.

오늘의 정리: vim은 모달 — Normal(기본·명령)·Insert(i로 진입, 타이핑)·Command-line(:로 진입, 저장·종료). 헷갈리면 Esc. 생존 키트: i(입력)·Esc(복귀)·:w(저장)·:q(종료)·:wq(저장+종료)·:q!(강제 종료)·dd(줄삭제)·u(취소). 더: hjkl·gg/G·/검색·yy/p. 가장 좋은 연습 = vimtutor. 일상 편집은 여전히 nano(8편)로 충분 — vim은 "한 단계 위 + 서버 비상용".

시리즈 흐름

  1. 1~12편 입문·기초 묶음 ✔ (리눅스란~파이프·리다이렉션)
  2. 13편 — vim 기초 (이 글) ✔  — "중급" 묶음 시작
  3. 14편 — 프로세스 관리 (ps·top·kill — 멈춘 프로그램 잡기)
  4. 15편~ — 디스크 관리 / 네트워크 명령어 / ufw 방화벽 / SSH 키 / systemd 서비스 / cron …

오늘 할 일: vimtutor를 한 번 끝까지(30분) 돌리거나, 안 되면 최소한 vim ~/linux-practice/test.txt로 — i로 쓰고 → Esc:wq로 나가기를 세 번. 그리고 :q!(강제 종료)도 한 번 경험해두기. "vim에 들어가도 나올 수 있다"는 자신감이 생기면 끝입니다. 14편에서 만나요. (vim 전체 도움말은 vim 안에서 :help, 또는 vim 공식 문서.)

우분투·리눅스 입문 시리즈

이제 vim에서 안 죽습니다. 14편 "리눅스 프로세스 관리"로 "중급" 묶음을 이어갑니다.

다음 편은 JUNAI 블로그에서 이어 보세요.

© 2026 JUNAI · 우분투·리눅스 입문 시리즈 13편 · 본 글은 2026년 5월 12일 기준으로 작성되었습니다.

© 2026 주나이테크(주) @JUNAITECH