모든 걸 반복하는 단일 키
이 퀘스트 전체에서 "고급" 명령을 딱 하나만 챙긴다면 dot 명령으로 해. .가 마지막 변경을 그대로 다시 해줘. Vim에서 가장 강력한 키 하나고, 고인물이 빨라 보이는 엔진이기도 해.
"변경"이 무슨 뜻이냐면
변경은 Normal mode에서 나갔다가 돌아오기까지 buffer를 건드린 전부를 말해. 예를 들면 이래.
dd로 줄을 지웠으면,.는 다음 줄을 지워.cwhelloEsc로 단어를 "hello"로 바꿨으면,.는 다음 단어를 "hello"로 바꿔.A;Esc로 세미콜론을 붙였으면,.는 지금 줄에 세미콜론을 붙여.I//Esc로 줄을 주석 처리했으면,.는 지금 가리키는 줄을 주석 처리해.
Dot 공식
Drew Neil이 Practical Vim에서 핵심만 뽑아놨어. 한 키로 이동하고, 한 키로 변경을 반복한다. 편집 루프가 n., j., ;.가 되는 거야. 다음 걸 찾고, 반복하고. 손이 이 리듬을 찾으면 뭉텅이 편집이 타이핑이 아니라 메트로놈 치는 느낌이 돼.
편집을
.로 반복할 수 있게 짜. dwi보다 cw를 먼저 잡아 (변경 하나 대 변경 둘이야). $a;보다 A;를 먼저 잡고. 첫 편집은 어느 쪽이나 속도가 같아. 차이는 두 번째부터 열 번째 편집에서 벌어져 — .를 눌렀는데 아까 그게 제대로 재생되지 않을 때.평생 쓸 두 패턴
패턴 1: 검색하고 dot. /나 *로 다음 걸 찾고, 한 번 바꾸고, n., n., n. — 파일 끝까지 그대로 밀어. 검색은 n이 반복하고 변경은 .가 반복하니까, 손동작 두 개로 어디까지든 닿아.
패턴 2: 줄 건너뛰고 dot. 한 번 바꾸고 j., j., j.로 파일을 따라 내려가며 적용해. 단락 단위면 }.를 쓰고, }.}.처럼 이어 붙여도 돼. 반복 한 번이 정확히 두 키야.
Dot이 반복하지 않는 것
- 순수한 motion.
j,w,$는 변경이 아니니까 dot이 그냥 무시해. :s/old/new/g같은 command-line 명령. 얘네는&나:&로 반복해.- 매크로. 얘는 자기 재생 키
@@를 따로 갖고 있어.