본문 바로가기
C.W.K.
Stream
Lesson 08 of 08 · published

Dot 명령 — Vim의 숨은 슈퍼파워

~11 min · vim, productivity, dot-formula

Level 0갇힌 자
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

모든 걸 반복하는 단일 키

이 퀘스트 전체에서 "고급" 명령을 딱 하나만 챙긴다면 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 명령. 얘네는 &:&로 반복해.
  • 매크로. 얘는 자기 재생 키 @@를 따로 갖고 있어.

Code

줄 건너뛰고 dot — 여러 줄에 세미콜론 붙이기·vim
" 목표: 블록의 모든 줄 끝에 ; 를 붙인다.
" Step 1: 첫 줄로 이동.
" Step 2: A; <Esc>     — ; 붙이고 Insert mode 이탈
" Step 3: j.            — 한 줄 아래, 변경 반복
" Step 4: j. j. j.     — 계속 내려감
" 끝. 첫 줄 이후로는 줄당 두 키.
검색하고 dot — 여러 함수 호출에서 파라미터 제거·vim
" 목표: Python 파일에서 모든 `, debug=True` 제거.
" Step 1: /, debug=True<Enter>     — 검색하고 첫 매치에 도착
" Step 2: dt)                       — ) 직전까지 (포함 안 함) 삭제
"          (이제 첫 번째 사라짐)
" Step 3: n.                        — 다음 찾기, 삭제 반복
" Step 4: n.  n.  n.               — "Pattern not found" 까지
Dot이 뭘 기억하는지 — 직접 검증·vim
:help single-repeat
" . 가 정확히 뭘 반복하는지 Vim 이 직접 설명해주는 문서.

External links

Exercise

print(가 열 줄 넘게 나오는 소스 파일을 열어 (반복되는 패턴이면 뭐든 좋아). Dot 공식으로 모든 print(logger.info(로 바꿔봐. /print(로 검색하고, cw로 바꾸고, logger.info(를 치고, Esc, 그다음 n.으로 "Pattern not found"가 뜰 때까지 파일을 따라 걸어가는 거야. 그게 — 그게 바로 그 리듬이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.