vim 사용법 기초 — 모드·생존 키트·이동
"vim에 들어갔는데 못 나오겠어요" — 모두가 한 번씩 겪는 그 공포. 사실 키 8개면 안 죽고, 익히면 nano보다 훨씬 빨라요.
8편에서 nano를 배웠고, "vim은 한참 뒤 13편에서 따로"라고 했죠. 그 13편입니다. 그 사이 9편에서 "vim에서 빠져나오는 법만 외워두라"(Esc → :q! → Enter)고 한 마디 했고요. 이번엔 그걸 제대로 — 왜 vim을 쓰고, 어떻게 안 죽고, 익히면 뭐가 좋은지.
먼저 솔직하게 — 일상적인 한 줄 편집은 nano로 충분합니다. vim은 "다음 단계"예요: ① 우분투 외 서버(특히 옛날 시스템)엔 nano가 없고 vi/vim만 있는 경우가 많고, ② 익숙해지면 손이 키보드를 떠나지 않아 편집이 훨씬 빠르고, ③ 많은 개발 도구·환경이 vim 키 조작을 흉내냅니다. 이 글의 목표는 "vim 마스터"가 아니라 — vim에서 안 죽고, 필요할 때 쓸 수 있게 만드는 것. 26편 입문 시리즈 13편, 여기서부터 "중급" 묶음입니다.
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.
생존 키트 8개 — 이거면 안 죽는다
딱 이 여덟 개. 외우면 vim에 들어가도 무사히 나옵니다. (전부 Normal 모드에서 — 안 되면 먼저 Esc.)
| 키 | 하는 일 |
|---|---|
| i | Insert 모드로 (커서 자리부터 타이핑 시작). 비슷한 a=커서 다음부터, o=아랫줄 새로 만들고 입력. |
| Esc | Normal 모드로 복귀. 모든 길의 시작점. |
: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/옛것/새것/gEnter = 파일 전체 일괄 치환(8편 nano의Ctrl+\에 해당).
vimtutor라고 치세요. vim이 직접 만든 30분짜리 인터랙티브 튜토리얼이 열립니다 — 화면이 시키는 대로 따라 치면 기초가 손에 박힙니다. 책 백 권보다 이 30분이 낫습니다. (한국어판도 있어요: vimtutor ko.)욕심내지 마세요 — 생존 키트 8개 + 위 이동/편집 몇 개면, 서버에서 설정 파일 한 줄 고치고 나오는 데 아무 문제 없습니다. 더 깊은 건(매크로·플러그인·정규식 치환…) 정말 필요해질 때, 그때 배우면 됩니다. 그게 vim의 흔한 함정 — "한 번에 다 익히려다 질리기". 한 입씩.
:로 진입, 저장·종료). 헷갈리면 Esc. 생존 키트: i(입력)·Esc(복귀)·:w(저장)·:q(종료)·:wq(저장+종료)·:q!(강제 종료)·dd(줄삭제)·u(취소). 더: hjkl·gg/G·/검색·yy/p. 가장 좋은 연습 = vimtutor. 일상 편집은 여전히 nano(8편)로 충분 — vim은 "한 단계 위 + 서버 비상용".시리즈 흐름
- 1~12편 입문·기초 묶음 ✔ (리눅스란~파이프·리다이렉션)
- 13편 — vim 기초 (이 글) ✔ — "중급" 묶음 시작
- 14편 — 프로세스 관리 (
ps·top·kill— 멈춘 프로그램 잡기) - 15편~ — 디스크 관리 / 네트워크 명령어 / ufw 방화벽 / SSH 키 / systemd 서비스 / cron …
오늘 할 일: vimtutor를 한 번 끝까지(30분) 돌리거나, 안 되면 최소한 vim ~/linux-practice/test.txt로 — i로 쓰고 → Esc → :wq로 나가기를 세 번. 그리고 :q!(강제 종료)도 한 번 경험해두기. "vim에 들어가도 나올 수 있다"는 자신감이 생기면 끝입니다. 14편에서 만나요. (vim 전체 도움말은 vim 안에서 :help, 또는 vim 공식 문서.)