LabHub

vim 과 tmux · vim 실전: 검색·치환·매크로 · 실습

vim 매크로와 레지스터

LabHub 에서 이어서 보기

목표

매크로가 무엇인지 - 레지스터에 담긴 그냥 텍스트라는 것 - 를 직접 확인하고, 반복 가능한 매크로를 설계하는 방법을 익힙니다.

왜 중요한가

qa 로 기록한 매크로는 키 입력이 문자열 그대로 레지스터 a 에 저장된 것입니다. yank 와 매크로가 같은 a~z 공간을 쓰는 것도 그래서입니다. 이 사실을 알면 매크로를 파일로 꺼내 편집하고 다시 넣을 수 있고, 실습에서처럼 파일로 제출해 검증할 수도 있습니다. 그리고 반복 가능한 매크로에는 설계 원칙이 있습니다 - 시작점을 절대 고정하고, 이동은 내용 기준으로 하고, 마지막에 다음 대상으로 넘어간다. 이 셋 중 하나라도 빠지면 두 번째 줄부터 어긋납니다.

단계

/root/vmac 디렉터리에서 작업합니다. 매크로 파일에는 키 입력을 한 줄로 적습니다.

1. /root/vmac/list.txt 에 다음 6줄을 넣으세요.
web01 / web02 / db01 / db02 / cache01 / queue01
2. 각 줄을 - web01 처럼 만드는 매크로 키 입력을 /root/vmac/macro1.txt 에, 적용 결과를 /root/vmac/bulleted.txt 에 저장하세요.
3. 각 줄을 "web01", 로 만드는 매크로를 /root/vmac/macro2.txt 에, 결과를 /root/vmac/quoted.txt 에 저장하세요. 이 매크로에는 ESC 문자가 반드시 들어가야 합니다.
4. 각 줄 앞에 1. , 2. 처럼 줄 번호를 붙이는 ex 명령을 /root/vmac/number.ex 에, 결과를 /root/vmac/numbered.txt 에 저장하세요.
5. /root/vmac/hosts.txt 에 다음 6줄을 넣으세요.
web01.prod.example.com / web02.staging.example.com / db01.prod.example.com / db02.staging.example.com / cache01.prod.example.com / queue01.staging.example.com
그리고 staging 이 든 줄에만 맨 앞에 # 를 붙이는 명령을 /root/vmac/onlystaging.ex 에, 결과를 /root/vmac/staging.txt 에 저장하세요.
6. hosts.txt 에서 prod 가 든 줄만 모아 파일 맨 끝에 덧붙이는(총 9줄) 명령을 /root/vmac/collect.ex 에, 결과를 /root/vmac/collected.txt 에 저장하세요.
7. /root/vmac/table.txt 에 다음 5줄을 넣으세요.
name=web01 / role=frontend / zone=seoul / port=8080 / tier=gold
각 줄을 NAME:web01 처럼 키는 대문자로, 등호는 콜론으로 바꾸는 매크로를 /root/vmac/macro3.txt 에, 결과를 /root/vmac/table_out.txt 에 저장하세요.
8. hosts.txt 에서 prod 줄만 남기고 앞에 - , 뒤에 :80 을 붙이는 명령들을 /root/vmac/final.ex 에, 결과를 /root/vmac/final.txt 에 저장하세요.

참고

단계 8개

  1. 연습용 목록 만들기
  2. 첫 매크로: 글머리 기호 붙이기
  3. 매크로에 ESC 문자 넣기
  4. 줄 번호 매기기
  5. 조건에 맞는 줄에만 적용
  6. 흩어진 줄 한곳에 모으기
  7. 두 동작을 묶은 매크로
  8. 필터 + 접두 + 접미 종합