C.W.K.
Stream
Lesson 05 of 06 · published

Mark, 매크로, Register

~15 min · vim, marks, macros, registers

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

Mark — buffer 의 북마크

Mark 는 라벨 붙은 위치고 점프해서 돌아갈 수 있어. ma 가 커서에 mark a 박음. 'a 가 그 라인으로 점프, ` + a 가 정확한 컬럼으로 점프. 소문자 mark (az) 는 파일 단위. 대문자 mark (AZ) 는 글로벌 — "어디서든 이 파일로 다시 점프" 에 유용.

Vim 이 알아서 박는 mark

  • ` + . — 마지막 편집 위치. (엄청 유용 — "방금 타이핑하던 자리로 데려가".)
  • ` + ^ — 마지막 Insert-mode 위치.
  • ` + [ / ` + ] — 마지막 변경/yank 의 시작/끝.
  • ` + < / ` + > — 마지막 visual 선택의 시작/끝.
  • ` + ' — 마지막 점프 위치 (`` 가 토글).

매크로 — 녹음하고 재생

매크로는 register 에 저장된 키스트로크 시퀀스. q + register 글자로 녹음 시작, 편집하고, 다시 q 로 멈춤. @a 로 재생, @@ 로 마지막 매크로 재생. 10@a 가 10 번 재생.

항상 작동하는 매크로 레시피

  1. 커서를 라인 시작에 위치.
  2. 녹음 시작: qa.
  3. 한 라인의 모든 편집 하고, j (또는 검색 후 n) 로 끝내서 커서가 다음 타깃에 떨어지게.
  4. 녹음 멈춤: q.
  5. 재생: @a 한 번 더, 100@a 아래 전부.
매크로는 dot 의 슈퍼 사이즈. Dot 명령은 한 변경 반복. 매크로는 변경 시퀀스 + 그 사이 navigation 까지 반복. Dot 공식이 부족할 때 — 다단계 transform 이 필요할 때 — 대신 매크로를 녹음.

Register — Vim 의 여러 클립보드

Vim 은 클립보드 한 개가 아니라 여러 개야. 각 register 는 단일 캐릭터로 이름 붙여. "ay 로 yank 하면 register a 에 저장; "ap 로 paste 해서 가져와. 특별 register 들:

  • "" — unnamed register (d/y/c/p 의 기본).
  • "0 — yank register; 마지막 yank 만 (delete 는 안 건드려). "0p 로 paste 하면 그 후로 삭제했어도 마지막 yank 가 돌아와.
  • "+ — 시스템 클립보드 (Cmd+C / Ctrl+C 영토).
  • "* — X11 selection 클립보드 (Linux 의 middle-click).
  • ". — 마지막 insert 텍스트.
  • ": — 마지막 command-line.
  • "/ — 마지막 검색 패턴.
  • "_ — 블랙홀 (쓰기는 어디로도 안 감 — yank 안 덮으면서 삭제하는 데 유용).

Code

Mark·vim
ma         " 커서에 mark 'a' 박음
'a         " mark 'a' 의 라인으로 점프
`a         " mark 'a' 의 정확한 위치로 점프 (라인 + 컬럼)
:marks     " 모든 mark 리스트
`.         " 마지막 편집 위치
`^         " 마지막 Insert 위치
`[  `]     " 마지막 변경 / yank 의 시작 / 끝
`<  `>     " 마지막 visual 선택의 시작 / 끝
''         " 마지막 점프 위치
:delmarks a    " mark 'a' 삭제
:delmarks!     " 현재 buffer 의 모든 소문자 mark 삭제
매크로·vim
qa         " register 'a' 로 녹음 시작
...        " 편집 진행
q          " 녹음 멈춤
@a         " 매크로 'a' 한 번 재생
@@         " 마지막 재생된 매크로 재생
5@a        " 5 번 재생
:5,20norm @a   " 5-20 라인에 매크로 'a' 실행
qA         " 기존 매크로 'a' 에 append (대문자 A 주의)
Register·vim
"ay       " register 'a' 로 yank
"ap       " register 'a' 에서 paste
"+y       " 시스템 클립보드로 yank
"+p       " 시스템 클립보드에서 paste
"0p       " 마지막 YANK paste (삭제 무시)
"_dd     " yank register 안 덮으면서 라인 삭제
:reg          " 모든 register 내용 보기
:reg a + 0   " register a, +, 0 만 보기

External links

Exercise

(1) 멀리 떨어진 두 라인에 mark ab 박고 'a'b 로 사이 점프. (2) 단일 라인에서 foo = 1const foo = 1; 로 변환하고 j 로 끝나는 매크로 녹음; 10@a 로 10 라인에 재생. (3) 단어 yank, 다른 단어를 "_dw 로 삭제, paste — 블랙홀 register 사용했으니 yank 가 살아있는 거 검증.

Progress

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

댓글 0

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

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