Vim은 키 목록이 아니라 언어야
Vim에 명령이 천 개쯤 있는 것처럼 보이는 이유는, 작은 operator 묶음과 작은 motion 묶음을 합쳐서 수백 개 동사를 공짜로 만들어내기 때문이야. delete-to-next-word를 통째로 외우는 게 아니라, d (삭제) 와 w (다음 단어) 를 외우면 dw는 저절로 따라와.
공식
[count] {operator} [count] {motion}count는 안 붙여도 돼. 양쪽에 다 붙이면 곱해져 (3d2w는 6단어 삭제니까 d6w랑 6dw랑 같아). operator가 무엇을이고 motion이 어디까지야. 문법은 이게 전부야.
가장 자주 쓸 operator 다섯
d— delete (지우면서 복사도 해).c— change (지우고 Insert mode로 들어가).y— yank (지우지 않고 복사).>— 오른쪽으로 들여쓰기.<— 왼쪽으로 내어쓰기.
첫날부터 알아두면 좋은 두 번째 묶음도 있어. = (자동 정렬), gu / gU (소문자·대문자로), g~ (대소문자 뒤집기), gq (문단을 줄 폭에 맞춰 다시 정렬).
두 번 누르면 줄 전체에 걸려
Vim에 예쁜 지름길이 하나 있어. operator를 두 번 누르면 지금 줄 전체에 걸려. dd는 줄 삭제, yy는 줄 복사, cc는 줄 바꾸기, >>는 줄 들여쓰기야. 두 번 누른 키가 operator + 줄의 줄임말인 셈이지.
조합이 핵심이야.
dw, de, db, d$, d^, dG를 하나씩 외우는 건 지쳐. d랑 motion 목록만 외워두면 둘이 알아서 붙어. Vim이 끝이 없어 보이는 건 실제로 끝이 없어서야 — motion인 건 전부 삭제 대상도 되거든.대문자 변형
많은 operator가 "줄 끝까지"를 뜻하는 대문자 짝을 갖고 있어. D = d$, C = c$, 그리고 Y는 역사적으로 yy (줄 단위 복사) 였어. 예외가 바로 이 Y야. 요즘 Neovim은 일관성을 위해 기본값을 Y = y$로 바꿔놨는데, 고전 Vim은 여전히 Y = yy거든. 머신을 옮겨 다닐 거면 알아둬.