IT·개발

vim 기본 명령어 치트시트 — 모드·커서 이동·편집·찾기·저장 한 페이지 정리

5월 16, 2026 2 min read

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 모드로 전환되므로 “지우고 새로 입력”하는 작업에 편리합니다. Rr은 기존 글자 위에 덮어쓰는 방식입니다.

명령동작
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현재 줄에서 oldnew로 한 번 바꿈
: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+de로 시작하는 명령 목록 확인 → 탭키로 자동 입력 가능


마무리

방향키에 자유로워지고 normal / insert / visual 모드의 흐름을 손에 익히고 나면, vim은 충분히 가볍고 빠른 에디터가 됩니다. d+(action)c+(action) 패턴은 처음엔 낯설지만 반복하다 보면 자연스럽게 몸에 배게 됩니다.

이 정리는 vimtutor 요약 정리 (dgkim5360.tistory.com)을 따라 학습한 메모를 다시 다듬은 것입니다. 더 깊이 공부하고 싶은 분은 vim 내부에서 :help user-manual을 실행해 보세요.