Devin.KR

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 를 켜세요.