Mark — buffer 안의 북마크
mark는 이름표를 붙여둔 위치야. 나중에 그리로 뛰어 돌아올 수 있어. ma를 누르면 커서 자리에 mark a가 박혀. 'a는 그 줄로 뛰고, ` + a는 열까지 정확히 맞춰서 뛰어. 소문자 mark (a–z) 는 파일 안에서만 살고, 대문자 mark (A–Z) 는 파일을 넘어 살아 — "어디서든 이 파일 이 자리로" 할 때 쓸모 있어.
Vim이 알아서 찍어두는 mark
` + .— 마지막으로 편집한 자리. ("방금 치던 데로 돌려줘"가 되니까 정말 자주 써.)` + ^— 마지막으로 Insert mode였던 자리.` + [/` + ]— 마지막 변경이나 복사의 시작과 끝.` + </` + >— 마지막 Visual 선택의 시작과 끝.` + '— 마지막으로 뛰기 전의 자리 (``가 토글이야).
매크로 — 녹음하고 재생하기
매크로는 register에 저장한 키 입력 묶음이야. q 다음에 register 글자를 누르면 녹음이 시작되고, 편집을 하고, q를 한 번 더 누르면 멈춰. @a로 재생하고, @@면 마지막 매크로를 다시 돌려. 10@a는 열 번 돌리고.
웬만하면 통하는 매크로 레시피
- 커서를 줄 맨 앞에 둬.
qa로 녹음을 시작해.- 한 줄에 필요한 편집을 다 하고, 마지막을
j(또는 검색 후n) 로 끝내서 커서가 다음 타깃에 떨어지게 해. q로 녹음을 멈춰.@a로 한 번 확인하고, 괜찮으면100@a로 아래를 쓸어버려.
매크로는 dot 명령의 큰 형이야. dot은 변경 하나를 반복해. 매크로는 변경 여러 개에 그 사이 이동까지 통째로 반복하고. dot 공식으로 안 되는 순간 — 여러 단계를 거쳐야 하는 변형이 필요할 때 — 매크로를 녹음해.
Register — Vim의 클립보드는 여러 개야
Vim에는 클립보드가 하나가 아니라 여러 개 있어. register마다 글자 하나로 이름이 붙어 있고. "ay로 복사하면 register a에 들어가고, "ap로 거기서 꺼내 써. 특별한 register도 있어.
""— unnamed register (d/y/c/p가 기본으로 쓰는 자리)."0— yank register. 마지막으로 복사한 것만 담고 삭제는 안 건드려. 뭘 지운 뒤에도"0p를 쓰면 복사해둔 게 그대로 나와."+— 시스템 클립보드 (Cmd+C / Ctrl+C 영역)."*— X11 selection 클립보드 (Linux의 가운데 버튼).".— 마지막으로 입력한 텍스트.":— 마지막 command-line."/— 마지막 검색 패턴."_— 블랙홀. 여기 넣은 건 어디에도 안 남아 (복사해둔 걸 지키면서 삭제할 때 써).