모드 — 여기서 시작한다
vim 은 '지금 어떤 모드인가'로 같은 키의 뜻이 바뀐다. 헷갈리면 <Esc> 를 눌러 노멀로 돌아온다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| i | 커서 앞에서 입력 시작 | 연습기에서 눌러 보기 |
| a | 커서 뒤에서 입력 시작 (append) | 연습기에서 눌러 보기 |
| I | 공백 아닌 첫 글자 앞에서 입력 | 연습기에서 눌러 보기 |
| A | 줄 끝에서 입력 | 연습기에서 눌러 보기 |
| o | 아래에 새 줄을 만들고 입력 (들여쓰기 이어받음) | 연습기에서 눌러 보기 |
| O | 위에 새 줄을 만들고 입력 | 연습기에서 눌러 보기 |
| R | 덮어쓰기 모드 (한 글자씩 갈아 끼운다) | 연습기에서 눌러 보기 |
| <Esc> | 노멀 모드로 돌아온다. 막히면 이 키 | 연습기에서 눌러 보기 |
이동 — 방향키를 쓰지 않는다
손을 자판에서 떼지 않는 것이 vim 의 속도다. 이 연습기는 방향키를 일부러 받지 않는다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| h j k l | 왼·아래·위·오른쪽 한 칸 | 연습기에서 눌러 보기 |
| w | 다음 낱말 시작으로 | 연습기에서 눌러 보기 |
| b | 이전 낱말 시작으로 | 연습기에서 눌러 보기 |
| e | 낱말 끝 글자로 | 연습기에서 눌러 보기 |
| W B E | 공백만 경계로 보는 큰 낱말 (foo.bar 가 한 덩어리) | 연습기에서 눌러 보기 |
| 0 | 줄 맨 처음(1열)으로 | 연습기에서 눌러 보기 |
| ^ | 공백 아닌 첫 글자로 | 연습기에서 눌러 보기 |
| $ | 줄 끝으로 | 연습기에서 눌러 보기 |
| gg | 문서 첫 줄로 | 연습기에서 눌러 보기 |
| G | 문서 마지막 줄로 | 연습기에서 눌러 보기 |
| 3G | 3번째 줄로 (숫자를 붙인다) | 연습기에서 눌러 보기 |
| f{글자} | 줄 안에서 그 글자로 (찾아서 그 위에 선다) | 연습기에서 눌러 보기 |
| F{글자} | 뒤쪽으로 그 글자 찾기 | 연습기에서 눌러 보기 |
| t{글자} | 그 글자 한 칸 앞에 선다 (till) | 연습기에서 눌러 보기 |
| T{글자} | 뒤쪽으로 그 글자 한 칸 뒤에 선다 | 연습기에서 눌러 보기 |
| ; , | 마지막 f/t 를 다시·거꾸로 | 연습기에서 눌러 보기 |
| { } | 빈 줄(문단 경계) 단위로 위·아래 | 연습기에서 눌러 보기 |
| H M L | 화면 처음·가운데·끝 줄로 | 연습기에서 눌러 보기 |
| % | 짝이 되는 괄호로 뛴다 | 연습기에서 눌러 보기 |
지우기·바꾸기 — 연산자 + 이동
vim 의 핵심 문법은 [연산자][이동] 이다. d(지우기) c(바꾸기) y(복사) 에 이동을 붙여 쓴다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| x | 커서 글자 하나 지우기 | 연습기에서 눌러 보기 |
| 3x | 세 글자 지우기 | 연습기에서 눌러 보기 |
| X | 커서 앞 글자 지우기 (백스페이스 느낌) | 연습기에서 눌러 보기 |
| dw | 낱말 하나 지우기 (뒤 공백까지) | 연습기에서 눌러 보기 |
| d2w | 낱말 두 개 지우기 | 연습기에서 눌러 보기 |
| de | 낱말 끝까지 지우기 (뒤 공백은 남는다) | 연습기에서 눌러 보기 |
| d$ (D) | 커서부터 줄 끝까지 지우기 | 연습기에서 눌러 보기 |
| d0 | 커서부터 줄 처음까지 지우기 | 연습기에서 눌러 보기 |
| dd | 줄 통째로 지우기 | 연습기에서 눌러 보기 |
| 2dd | 두 줄 지우기 | 연습기에서 눌러 보기 |
| dG | 이 줄부터 문서 끝까지 지우기 | 연습기에서 눌러 보기 |
| df{글자} | 그 글자까지 지우기 (포함) | 연습기에서 눌러 보기 |
| cw | 낱말 바꾸기 — dw 와 달리 뒤 공백을 남긴다 | 연습기에서 눌러 보기 |
| cc (S) | 줄 내용 전체를 바꾸기 | 연습기에서 눌러 보기 |
| C | 커서부터 줄 끝까지 바꾸기 | 연습기에서 눌러 보기 |
| s | 글자 하나를 지우고 입력 | 연습기에서 눌러 보기 |
| r{글자} | 글자 하나만 교체 (모드가 바뀌지 않는다) | 연습기에서 눌러 보기 |
| 3r{글자} | 세 글자를 같은 글자로 교체 | 연습기에서 눌러 보기 |
| ~ | 대소문자 뒤집기 | 연습기에서 눌러 보기 |
| J | 다음 줄을 이 줄에 이어 붙이기 | 연습기에서 눌러 보기 |
| >> << | 줄 들여쓰기 넣기·빼기 | 연습기에서 눌러 보기 |
| 2>> | 두 줄 들여쓰기 | 연습기에서 눌러 보기 |
복사·붙여넣기
vim 의 지우기는 곧 잘라내기다. dd 로 지운 줄은 p 로 다시 붙일 수 있다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| yy (Y) | 줄 복사 | 연습기에서 눌러 보기 |
| yw | 낱말 복사 | 연습기에서 눌러 보기 |
| p | 커서 뒤(줄 단위면 아래)에 붙이기 | 연습기에서 눌러 보기 |
| P | 커서 앞(줄 단위면 위)에 붙이기 | 연습기에서 눌러 보기 |
| ddp | 줄 순서 바꾸기 (아래 줄과 교환) | 연습기에서 눌러 보기 |
| xp | 글자 순서 바꾸기 | 연습기에서 눌러 보기 |
텍스트 오브젝트 — 실무에서 제일 많이 쓴다
i(inner)는 안쪽만, a(around)는 감싼 것까지. 커서가 그 안에 있기만 하면 되므로 위치를 정확히 맞출 필요가 없다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| ciw | 커서가 놓인 낱말을 바꾸기 (위치 안 맞춰도 된다) | 연습기에서 눌러 보기 |
| diw | 낱말만 지우기 (공백은 남는다) | 연습기에서 눌러 보기 |
| daw | 낱말과 붙은 공백까지 지우기 | 연습기에서 눌러 보기 |
| ci" | 따옴표 안쪽만 바꾸기 | 연습기에서 눌러 보기 |
| da" | 따옴표까지 지우기 | 연습기에서 눌러 보기 |
| di( | 괄호 안쪽 지우기 | 연습기에서 눌러 보기 |
| da( | 괄호까지 지우기 | 연습기에서 눌러 보기 |
| ci{ | 중괄호 안쪽 바꾸기 | 연습기에서 눌러 보기 |
| di[ | 대괄호 안쪽 지우기 | 연습기에서 눌러 보기 |
| ci< | 꺾쇠 안쪽 바꾸기 (HTML 태그 이름) | 연습기에서 눌러 보기 |
| vi" | 따옴표 안쪽을 비주얼로 고르기 | 연습기에서 눌러 보기 |
검색·치환
이 연습기의 검색은 정규식이 아니라 글자 그대로 찾는다. 실제 vim 은 정규식을 받는다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| /패턴 <CR> | 아래쪽으로 찾기 | 연습기에서 눌러 보기 |
| ?패턴 <CR> | 위쪽으로 찾기 | 연습기에서 눌러 보기 |
| n N | 다음·이전 검색 결과로 | 연습기에서 눌러 보기 |
| * | 커서 아래 낱말을 그대로 찾기 | 연습기에서 눌러 보기 |
| :s/a/b/ | 이 줄의 첫 a 를 b 로 | 연습기에서 눌러 보기 |
| :s/a/b/g | 이 줄의 모든 a 를 b 로 | 연습기에서 눌러 보기 |
| :%s/a/b/g | 문서 전체를 치환 | 연습기에서 눌러 보기 |
| :noh | 검색 강조 끄기 | 연습기에서 눌러 보기 |
비주얼 — 눈으로 고르고 한 번에
무엇을 고를지 확실하지 않을 때 쓴다. 고른 뒤 d y c > < 를 누른다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| v | 글자 단위로 고르기 | 연습기에서 눌러 보기 |
| V | 줄 단위로 고르기 | 연습기에서 눌러 보기 |
| <C-v> | 사각형(블록)으로 고르기 — 여러 줄의 같은 열 | 연습기에서 눌러 보기 |
| V > | 고른 줄 들여쓰기 | 연습기에서 눌러 보기 |
| v y | 고른 구간 복사 | 연습기에서 눌러 보기 |
되돌리기·되풀이
. 은 vim 을 vim 답게 만드는 키다. 같은 편집을 다른 자리에서 되풀이한다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| u | 되돌리기 | 연습기에서 눌러 보기 |
| <C-r> | 되돌린 것을 다시 실행 | 연습기에서 눌러 보기 |
| . | 마지막 변경을 그 자리에서 되풀이 | 연습기에서 눌러 보기 |
| A;<Esc> j . | 여러 줄 끝에 같은 것 붙이기 (.의 진짜 쓸모) | 연습기에서 눌러 보기 |
파일·명령줄
: 를 누르면 화면 맨 아래에 명령줄이 열린다. 연습기에서는 실제 파일을 저장하지 않는다.
| 키 | 하는 일 | 연습 예시 |
|---|---|---|
| :w | 저장 (연습기에서는 '수정 중' 표시만 지운다) | 연습기에서 눌러 보기 |
| :q | 닫기. 저장하지 않았으면 거절한다(E37) | 연습기에서 눌러 보기 |
| :wq (:x) | 저장하고 닫기 | 연습기에서 눌러 보기 |
| :q! | 바꾼 것을 버리고 닫기 | 연습기에서 눌러 보기 |
| :12 | 12번째 줄로 이동 | 연습기에서 눌러 보기 |
| :d | 이 줄 지우기 | 연습기에서 눌러 보기 |
| :set nu / nonu | 줄번호 켜기·끄기 | 연습기에서 눌러 보기 |
| :set rnu | 상대 줄번호 (이동 거리를 바로 읽는다) | 연습기에서 눌러 보기 |
| :help (<F1>) | 도움말 열기. :help motion 처럼 주제를 줄 수 있다 | 연습기에서 눌러 보기 |
이 목록에 없는 것
연습기가 지원하지 않는 명령은 이 표에도 적지 않았습니다. 적어 두고 동작하지 않으면 "실제 vim 에서는 되는데 여기선 안 되는 것"을 배우게 되기 때문입니다.
실제 vim 에는 있지만 이 연습기에 없는 것: 매크로 q,
이름 있는 레지스터 "a, 마크 m, 폴드 z,
창 분할 Ctrl-w, 탭 페이지, 정규식 검색, 파일 조작 :e.
터미널에서 vimtutor 와 :help 로 익히는 것을 권합니다.
가이드
-
vim 종료·저장 방법 — :wq 부터 강제 종료까지
vim 에서 나가는 방법을 상황별로 정리했습니다. 저장하고 나가기, 저장 없이 나가기, 읽기 전용 파일 강제 저장, E37 오류 대처까지 실제 동작 기준으로 설명합니다.
-
vim 모드 완전 이해 — 노멀·입력·비주얼·명령줄
vim 이 모드를 쓰는 이유와 네 가지 모드의 차이, 모드 사이를 오가는 키를 정리했습니다. 모드를 이해하면 vim 의 나머지는 전부 이 위에 얹힙니다.
-
vim 커서 이동 총정리 — 방향키를 놓는 순서
hjkl 부터 w b e f t % gg G 까지, vim 이동 명령을 쓰는 순서대로 정리했습니다. 이동은 그 자체로도 쓰고 연산자 뒤에 붙여 범위로도 씁니다.
-
vim 연산자 — d c y 와 [연산자][이동] 문법
vim 편집의 문법은 [개수][연산자][개수][이동] 하나입니다. dw cw yy D C 를 외우는 대신 조합 규칙을 이해하는 방법을 설명합니다.
-
vim 텍스트 오브젝트 — ciw · ci" · di( 가 바꾸는 것
커서를 정확한 자리에 두지 않아도 편집할 수 있게 해 주는 텍스트 오브젝트를 정리했습니다. 실무에서 가장 많이 쓰는 vim 기능입니다.
-
vim 검색과 치환 — / ? n N 과 :%s 완전 정리
vim 검색 이동과 :s 치환 문법을 플래그와 범위까지 정리했습니다. 확인하며 치환하는 c 플래그, 대소문자 무시 옵션도 다룹니다.
-
처음 쓰는 .vimrc — 꼭 넣을 설정 12줄
vim 을 설치하고 처음 만드는 .vimrc 에 넣을 설정을 이유와 함께 정리했습니다. 줄번호, 검색 옵션, 들여쓰기, 클립보드까지.