vim 기본 명령어 치트시트 — 모드·커서 이동·편집·찾기·저장 한 페이지 정리
vim은 처음 실행하는 순간 “어떻게 종료하지?”부터 막히는 에디터입니다. 하지만 모드(mode) 개념 하나만 이해하면 이후엔 오히려 매우 효율적인 텍스트 편집이 가능해집니다. 이 글은 vimtutor를 따라가며 핵심 명령어만 추린 학습 메모를 기반으로, 초보자가 실제로 막히는 지점을 부각하고 표·예시를 강화해 빠른 참조용으로 재구성한 버전입니다. 원본 정리는 vimtutor 요약 정리 (dgkim5360.tistory.com)을 참고했으며, 출처를 그대로 밝힙니다.
전체 명령 한눈에 보기
특정 명령이 기억나지 않을 때 이 표를 먼저 확인하세요. 각 항목의 상세 설명은 아래 섹션에서 볼 수 있습니다.
| 카테고리 | 명령 | 동작 |
|---|---|---|
| 모드 진입 | i a A o O | 커서 위치 기준 입력 모드 진입 |
| 이동 | h j k l | 좌·하·상·우 |
| 이동 | gg / G | 문서 처음 / 끝 |
| 이동 | w / e | 다음 단어 처음 / 단어 끝 |
| 삭제 | x / dd / dw / d$ | 글자 1개 / 줄 전체 / 단어 / 줄 끝까지 |
| 수정 | r / R / cw / c$ | 글자 1개 / 연속 덮어쓰기 / 단어 / 줄 끝 |
| 복붙 | yw / p | 단어 복사 / 붙여넣기 |
| 취소 | u / ctrl+r | 되돌리기 / 다시 실행 |
| 찾기 | /text / ?text | 순방향 / 역방향 검색 |
| 찾아바꾸기 | :%s/old/new/gc | 전체 찾아바꾸기 (확인 포함) |
| 저장·종료 | :w / :wq / :q! | 저장 / 저장 후 종료 / 저장 없이 종료 |
1. 기본 작동 논리 — 모드를 이해하면 vim이 보입니다
vim이 설치되어 있지 않다면 먼저 아래 명령으로 설치하세요. (패키지 매니저는 환경에 따라 다르므로 본인 OS에 맞춰 설치하세요.)
$ sudo apt-get install vim # Ubuntu/Debian 기준
$ vimtutor # 라이브 튜토리얼 시작
vimtutor를 실행하면 라이브 튜토리얼이 바로 시작됩니다. 시간이 된다면 vimtutor를 직접 완주하는 편이 가장 빠릅니다.
vim에는 몇 가지 모드가 있으며, 시작할 때 항상 normal(기본) 모드로 진입합니다. 이 모드에서 키 입력은 글자가 아닌 명령어로 해석됩니다.
- normal 모드 — 명령어 대기 상태. vim 시작 시 기본 상태
- insert 모드 —
i를 눌러 진입,ESC로 이탈 - visual 모드 —
v를 눌러 영역 선택 - 수정 모드 —
R(연속 덮어쓰기) /r(글자 단위 일회 수정)
간단하게 체험해 보려면 i를 눌러 텍스트를 입력하고, ESC로 normal 모드로 돌아온 뒤 dd를 입력해 보세요. 커서가 있는 줄이 통째로 삭제됩니다.
급하게 종료해야 한다면:
:wq(저장 후 종료) 또는:q!(저장 없이 강제 종료). 자세한 내용은 §8에서 확인하세요.
2. 커서 이동 — hjkl부터 단어·줄·문서 단위까지
normal 모드에서 방향키 대신 hjkl을 사용하는 것이 vim 조작의 시작점입니다. 단어·줄·문서 단위로 이동하는 명령을 익혀두면 편집 속도가 크게 달라집니다.
| 명령 | 동작 |
|---|---|
h j k l | 좌 · 하 · 상 · 우 이동 |
0 | 줄의 처음으로 이동 |
$ | 줄의 끝으로 이동 |
gg | 문서의 처음으로 이동 |
G | 문서의 끝으로 이동 |
#G | #번째 줄로 이동 (예: 5G → 5번 줄) |
ctrl+o | 점프 리스트에서 이전(older) 위치로 이동 |
ctrl+i | 점프 리스트에서 다음(newer) 위치로 이동 |
w | 다음 단어의 첫 글자로 이동 |
e | 현재 또는 다음 단어의 끝 글자로 이동 |
% | 가장 가까운 괄호 글자로 이동 |
3. 입력 모드 진입 — 커서 위치에 따라 골라 쓰는 5가지
insert 모드로 진입하는 방법은 커서 위치와 줄 기준에 따라 다섯 가지가 있습니다. 상황에 맞게 골라 쓰면 불필요한 이동을 줄일 수 있습니다.
| 명령 | 동작 |
|---|---|
i | 커서 위치에서 바로 입력 모드 시작 |
a | 커서 위치 바로 다음에서 입력 모드 시작 |
A | 커서 줄 끝에서 입력 모드 시작 |
o | 커서 다음 줄에 새 줄 만들고 거기서 입력 모드 시작 |
O | 커서 이전 줄에 새 줄 만들고 거기서 입력 모드 시작 |
4. 지우기 — d+(action) 패턴으로 범위 지정 삭제
d는 vim의 지우기 operator입니다. 뒤에 이동 명령(action)을 조합하면 단어·줄 단위로 다양한 범위를 지울 수 있습니다. 숫자를 앞에 붙이면 반복 실행됩니다.
| 명령 | 동작 |
|---|---|
x | 커서 위치의 글자 하나 삭제 |
dw | 현재 커서부터 단어 끝까지 삭제 |
d$ | 현재 커서부터 줄 끝까지 삭제 |
dd | 커서가 있는 줄 전체 삭제 |
d3w | 커서 위치부터 단어 3개 삭제 |
5dd | 현재 줄부터 5줄 전체 삭제 |
입문자 핵심 포인트: vim에서 지우기 = 잘라내기입니다. 메모리에서 기억하고 있으므로 직전에 지웠던 내용을
p로 붙여넣기 할 수 있습니다.
5. 수정 모드 — 덮어쓰기(R·r)와 바꾸기 operator(c)
c는 수정 operator입니다. 지정 범위를 지운 뒤 곧바로 insert 모드로 전환되므로 “지우고 새로 입력”하는 작업에 편리합니다. R과 r은 기존 글자 위에 덮어쓰는 방식입니다.
| 명령 | 동작 |
|---|---|
R | 커서 위치부터 수정 모드 시작 (연속 덮어쓰기) |
r | 커서 위치의 글자 하나만 수정 (일회용) |
cw 또는 ce | 현재 커서부터 한 단어 끝까지 지우고 입력 모드로 전환 |
c$ | 현재 커서부터 줄 끝까지 지우고 입력 모드로 전환 |
c#+(action) | 숫자# 만큼 반복 실행 (예: c3w → 단어 3개 지우고 입력 모드 진입) |
6. 실행 취소·다시 실행
잘못 편집했을 때 되돌리는 명령입니다. U는 해당 줄 전체 변경을 한 번에 되돌리므로 범위에 주의해 주세요.
u— 마지막 작업 실행 취소U— 해당 줄의 모든 변경 사항 취소ctrl+r— 다시 실행 (Redo)
7. 선택·복붙 — visual 모드와 y·p
v로 visual 모드에 진입한 뒤 hjkl로 원하는 영역을 선택합니다. 선택 후 다양한 작업을 이어서 수행할 수 있습니다.
v → visual 모드 진입
hjkl → 영역 선택
d → 선택 영역 삭제
y → 선택 영역 복사
: → :'<,'> 가 자동으로 입력됨
:'<,'>w filename → 선택 영역만 별도 파일로 저장
y는 복사 operator로 단독으로도 사용합니다.
| 명령 | 동작 |
|---|---|
yw | 한 단어 복사 |
y$ | 줄 끝까지 복사 |
y#+(action) | 숫자# 만큼 반복 복사 (예: y3w → 단어 3개 복사) |
p | 붙여넣기 |
8. 저장·종료 · 외부 명령 · 파일 read/write
vim 내부에서 셸 명령을 실행하거나 파일을 읽어올 수 있습니다. 저장과 종료 명령도 이 섹션에 함께 정리했습니다.
:!shell_command → 외부 셸 명령 실행 (예: :!ls)
실행 후 enter 키로 vim으로 복귀하거나
추가 외부 명령을 계속 입력할 수 있음
:q! → 저장하지 않고 나가기
:wq → 저장하고 나가기
:w → 저장만 하기 (나가지 않음)
:r filepath → 파일을 읽어서 현재 커서 위치부터 내용 삽입
:r :!ls → 외부 명령 출력을 읽어서 현재 커서 위치부터 삽입
9. 찾기·찾아바꾸기 — /·?·:s·:%s 변형 총정리
검색은 방향에 따라 /(순방향)과 ?(역방향)을 사용합니다. 찾아바꾸기는 범위 지정 방식에 따라 여러 변형이 있으니 정확히 구별해서 사용하세요. 명령 한 글자 차이로 동작이 달라지는 섹션이므로 특히 주의가 필요합니다.
찾기
| 명령 | 동작 |
|---|---|
/text | 순방향으로 text 검색 후 enter |
?text | 역방향으로 text 검색 후 enter |
n | 다음 검색 결과로 이동 (순방향·역방향에 따라 의미가 달라짐) |
N | 이전 검색 결과로 이동 (순방향·역방향에 따라 의미가 달라짐) |
/searchtext\c | \c를 붙여 일회용 대소문자 무시 검색 |
찾아바꾸기
| 명령 | 동작 |
|---|---|
:s/old/new | 현재 줄에서 old를 new로 한 번 바꿈 |
:s/old/new/g | 현재 줄에서 모두 바꿈 |
:#1,#2s/old/new/g | #1번째 줄부터 #2번째 줄까지 모두 바꿈 |
:%s/old/new | 문서 전체에서 한 번 바꿈 |
:%s/old/new/g | 문서 전체에서 모두 바꿈 |
:%s/old/new/gc | 문서 전체에서 모두 바꾸되 하나씩 확인 후 바꿈 |
10. 설정 변수 :set과 vimrc 만들기
:set 명령으로 검색 관련 동작을 실시간으로 조정할 수 있습니다. 자주 쓰는 설정은 ~/.vimrc 파일에 저장해 두면 vim을 열 때마다 자동으로 적용됩니다.
| 명령 | 동작 |
|---|---|
:set ic | 이제부터 대소문자 무시 검색 (ignore case) |
:set noic | 다시 대소문자 구별 검색 |
:set hls | 검색 결과 하이라이트 표시 (highlight search) |
:set is | 한 글자 입력마다 검색 반응 (incremental search) |
~/.vimrc는 홈 디렉토리(~)에 있어야 vim 시작 시 자동으로 적용됩니다.
shell에서 간단히 복사하기 (추천):
$ cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc
vim 내부에서 직접 만들기:
터미널의 홈 디렉토리(~)에서 vim을 실행한 뒤 아래 순서를 따라 만들어 보세요.
1. 새 파일 모드로 진입:
:e ~/.vimrc
2. 예제 설정 템플릿 로드:
:r $VIMRUNTIME/vimrc_example.vim
3. 저장 후 종료:
:wq
이제 vim을 새로 시작하면 저장된 설정이 자동으로 적용됩니다.
11. 도움 받기 — vim 내부에서 바로 조회
vim을 쓰다 막힐 때는 내부 도움말을 먼저 확인해 보세요. :help user-manual은 체계적인 vim 학습 경로를 안내해 줍니다.
:help— 도움말 보기 (나갈 때는:q):help command— 특정 명령 도움말 (예::help w,:help c_CTRL-D,:help insert-index,:help user-manual):set nocp— no-compatibility 모드 활성화 (실시간 도움 설정 전 필수)
– :e 까지 입력 후 ctrl+d → e로 시작하는 명령 목록 확인 → 탭키로 자동 입력 가능
마무리
방향키에 자유로워지고 normal / insert / visual 모드의 흐름을 손에 익히고 나면, vim은 충분히 가볍고 빠른 에디터가 됩니다. d+(action)과 c+(action) 패턴은 처음엔 낯설지만 반복하다 보면 자연스럽게 몸에 배게 됩니다.
이 정리는 vimtutor 요약 정리 (dgkim5360.tistory.com)을 따라 학습한 메모를 다시 다듬은 것입니다. 더 깊이 공부하고 싶은 분은 vim 내부에서 :help user-manual을 실행해 보세요.