Vim이 박혀 있는 단 하나의 아이디어
일반 에디터에선 모든 키가 글자를 쳐. Vim에선 모든 키가 모드에 따라 다른 일을 해. Normal mode에서 j는 아래로 이동. Insert mode에서 j는 글자 j를 입력. 같은 키, 완전히 다른 효과.
하루 정도는 외계 같지만, 그 다음부턴 외계가 아니라 당연하게 느껴져 — 에디터에서 하는 일 대부분은 새 글자 타이핑이 아니라 이미 있는 텍스트의 이동과 재배치거든. Vim은 흔한 케이스에 최적화돼 있어.
매 분마다 쓰는 네 가지 모드
- Normal mode (기본). 키가 명령어야 — 이동, 삭제, 복사, 붙여넣기, 검색. 시간 대부분을 여기서 보내.
Esc누르면 항상 여기로 돌아와. - Insert mode. 키가 글자를 쳐. 일반 에디터와 똑같이.
i(또는 변형들) 로 진입.Esc로 나옴. - Visual mode. 텍스트를 먼저 선택하고 그 다음 operate.
v(캐릭터),V(라인),Ctrl-v(rectangular block) 으로 진입. - Command-line mode.
:친 다음 명령어. 저장, 종료, 검색-치환, 설정 — 스크립트 가능한 모든 것에 사용.
모드는 quirk 가 아니라 feature 야
Modeless 에디터에선 모든 명령에 modifier 가 필요해 — Cmd+S, Ctrl+F, Ctrl+Shift+K. 키보드의 편한 chord 가 빨리 동나. Normal mode 에선 모든 키가 명령이 될 수 있어 — modifier 없는 50+ 명령에 shifted 키까지 더해. Vim 은 글자 입력에 홈 row 키를 낭비 안 하니까 키보드 리얼 에스테이트가 더 많아.
정신적 전환: modeless 에디터에선 가끔 명령을 섞어 타이핑 해. Vim 에선 가끔 타이핑을 섞어 명령 해. 시간 대부분이 Insert mode 가 아냐 — Normal mode 에서 이미 쓴 텍스트를 다듬는 거야.
지금 어느 모드인지 알아보는 법
- 왼쪽 아래 status 가
-- INSERT --,-- VISUAL --,-- VISUAL LINE --,-- VISUAL BLOCK --, 또는 아무것도 없음 (= Normal mode) 을 보여줘. - 터미널이 지원하면 모드별로 커서 모양이 달라 (Normal 은 block, Insert 는 beam).
- 이상한 글자가 "일어나는" 느낌이 들면 Normal mode 에서 키 입력이 명령으로 해석되고 있는 거야.
i로 타이핑하든가,Esc로 확실히 Normal 모드인지 확인해.
Esc 반사
모든 Vim 사용자가 똑같은 반사를 만들어 — 액션 사이에 Esc 를 쳐서 Normal mode 에 닻을 내려. 의심스러우면 Esc. 사격 자세에서 "방아쇠에서 손가락 떼기" 같은 거야. 일주일이면 박혀.