vim 모드 완전 이해 — 노멀·입력·비주얼·명령줄
vim 이 모드를 쓰는 이유와 네 가지 모드의 차이, 모드 사이를 오가는 키를 정리했습니다. 모드를 이해하면 vim 의 나머지는 전부 이 위에 얹힙니다.
왜 모드가 있는가
일반 편집기는 키보드의 글자 키가 언제나 '글자 입력'을 뜻합니다. 그래서 편집 명령은 Ctrl·Alt 조합에 밀려납니다. 조합키는 손 모양을 망가뜨리고, 쓸 수 있는 자리가 곧 바닥납니다.
vim 은 반대로 갑니다. 기본 상태(노멀 모드)에서는 모든 글자 키가 명령입니다. 글자를 넣을 때만 입력 모드로 들어갑니다. 덕분에 d w c i a 처럼 한 손가락으로 끝나는 명령이 수백 개 생깁니다. 이것이 vim 의 속도가 나오는 구조적인 이유입니다.
네 가지 모드
덮어쓰기 모드(R)와 선택 모드도 있지만 실무에서 쓰는 빈도가 낮습니다. 처음에는 위 네 개만 구분하면 충분합니다.
| 모드 | 들어가기 | 나오기 | 성격 |
|---|---|---|---|
| 노멀 | Esc | - | 키가 명령. vim 의 기본 자리 |
| 입력 | i a I A o O | Esc | 치는 대로 들어간다 |
| 비주얼 | v V Ctrl-v | Esc | 구간을 고른 뒤 명령을 적용 |
| 명령줄 | : / ? | Enter 또는 Esc | 화면 맨 아래 한 줄 |
입력 모드로 들어가는 여섯 가지 키
'입력 모드로 들어가면서 커서를 어디에 둘지'를 키가 함께 정합니다. 이 여섯 개를 구분해 쓰는 것만으로 화살표 키를 누를 일이 거의 사라집니다.
- i 커서 앞에서 입력 (insert)
- a 커서 뒤에서 입력 (append)
- I 공백 아닌 첫 글자 앞에서 입력 — 들여쓰기된 코드에 주석을 붙일 때
- A 줄 끝에서 입력 — 세미콜론이나 쉼표를 붙일 때
- o 아래에 새 줄을 만들고 입력 (open)
- O 위에 새 줄을 만들고 입력
노멀 모드로 확실히 돌아오는 방법
Esc 가 정석입니다. 키보드에서 멀다면 Ctrl+[ 가 같은 일을 합니다(실제 vim). 한글 입력이 켜진 상태라면 조합 중인 글자가 키를 먹으므로 먼저 영문으로 바꿔야 합니다.
많은 사용자가 .vimrc 에서 jk 를 Esc 로 매핑합니다. inoremap jk <Esc> 한 줄이면 됩니다. 손이 홈 포지션을 벗어나지 않는다는 점에서 이득이 큽니다.
자주 묻는 질문
노멀 모드에서 글자를 쳤더니 이상한 일이 벌어졌습니다.
u 를 눌러 되돌리세요. 무엇이 벌어졌는지 모르겠다면 u 를 여러 번 눌러도 됩니다. vim 은 되돌리기 이력을 길게 보관합니다.
지금 어떤 모드인지 어떻게 압니까?
화면 아래 상태줄에 -- INSERT -- 처럼 표시됩니다. 실제 vim 에서 보이지 않으면 :set showmode 를 켜세요.
다른 가이드
-
vim 종료·저장 방법 — :wq 부터 강제 종료까지
vim 에서 나가는 방법을 상황별로 정리했습니다. 저장하고 나가기, 저장 없이 나가기, 읽기 전용 파일 강제 저장, E37 오류 대처까지 실제 동작 기준으로 설명합니다.
-
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 에 넣을 설정을 이유와 함께 정리했습니다. 줄번호, 검색 옵션, 들여쓰기, 클립보드까지.