Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드
Vim의 매크로(Macro) 기능을 활용하면 에디터 내에서 수행한 일련의 작업을 기록한 뒤, 필요할 때마다 손쉽게 재생할 수 있습니다.
이 글에서는 Vi와 Vim 편집기에서 매크로를 기록하고 재생하는 방법을 두 가지 상세한 예제를 통해 단계별로 설명합니다.

Vim 매크로 기록 및 재생 핵심 흐름

  1. 기록 시작: q 키를 누른 후 매크로 이름으로 사용할 소문자 알파벳 하나를 입력합니다.
  2. 작업 수행: Vim에서 평소처럼 편집 작업을 진행하면 해당 동작들이 모두 기록됩니다.
  3. 기록 종료: q 키를 다시 눌러 기록을 중지합니다.
  4. 매크로 재생: @ 키와 함께 매크로 이름을 입력하면 기록된 작업이 실행됩니다.
  5. 반복 재생: 여러 번 반복하려면 :NN@a 형식으로 입력합니다. 여기서 NN은 반복 횟수입니다.

예제 1: Vim 매크로로 파일 안에 순차 번호 생성하기

1단계: 시퀀스 생성용 파일 열기

먼저 순차 번호를 생성할 파일을 엽니다.

$ vim sequence-test.txt

2단계: 입력 모드에서 "1." 타이핑

Esc i를 눌러 입력 모드로 전환한 뒤 1.을 입력합니다.

$ vim sequence-test.txt
1.

3단계: 기록 시작 후 레지스터 a에 저장

Esc q를 누른 뒤 a를 입력합니다.

  • q는 기록을 시작한다는 의미입니다.
  • a는 기록 내용을 레지스터 a에 저장한다는 의미입니다.
  • qa를 입력하면 화면 하단에 "recording"이라는 메시지가 표시됩니다.

4단계: 첫 번째 줄을 복사해 두 번째 줄에 붙여넣기

Esc yy를 누른 뒤 p를 입력합니다.

  • yy는 현재 줄 전체를 복사(yank)하는 명령입니다.
  • p는 방금 복사한 줄을 아래에 붙여넣습니다.
$ vim sequence-test.txt
1.
1.

참고: 이 시점에도 하단에는 여전히 recording 메시지가 표시되어 있습니다.

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드
그림: Vim 하단에 표시된 recording 메시지

5단계: 숫자 증가시키기

Ctrl+a를 입력합니다.

커서를 두 번째 줄에 위치시킨 상태에서 Ctrl+a를 누르면 숫자가 2로 증가합니다.

$ vim sequence-test.txt
1.
2.

참고: 이 단계에서도 하단에는 계속 recording 메시지가 유지됩니다.

6단계: 기록 종료

q를 입력합니다.

q를 누르면 기록이 중지되며, 하단에 있던 recording 메시지가 사라진 것을 확인할 수 있습니다.

7단계: 매크로를 98번 반복 실행

98@a를 입력합니다.

  • @a는 매크로 a를 한 번 재생합니다.
  • 98@a는 매크로 a를 98번 반복 실행하여 아래 그림처럼 1~100까지의 순차 번호를 자동으로 생성합니다.

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드
그림: Vim 매크로를 활용한 순차 번호 생성 결과

예제 2: 서로 다른 인자로 Vim 매크로 반복 실행하기

이 예제에서는 동일한 명령 구조를 각 줄의 다른 값(인자)에 적용하는 방법을 설명합니다. 즉, 같은 명령 형식을 만들어 놓고 줄마다 다른 인자만 바꿔가며 자동으로 완성하는 것입니다.

매크로 실행 전: change-password.sql

$ vim change-password.sql
Annette
Warren
Anthony
Preston
Kelly
Taylor
Stiller
Dennis
Schwartz

매크로 기록 및 실행 후: change-password.sql

$ vim change-password.sql
ALTER USER Annette IDENTIFIED BY 'Annette';
ALTER USER Warren IDENTIFIED BY 'Warren';
ALTER USER Anthony IDENTIFIED BY 'Anthony';
ALTER USER Preston IDENTIFIED BY 'Preston';
ALTER USER Kelly IDENTIFIED BY 'Kelly';
ALTER USER Taylor IDENTIFIED BY 'Taylor';
ALTER USER Stiller IDENTIFIED BY 'Stiller';
ALTER USER Dennis IDENTIFIED BY 'Dennis';
ALTER USER Schwartz IDENTIFIED BY 'Schwartz';

1단계: 이름 목록이 있는 SQL 파일 열기

$ vim change-password.sql
Annette
Warren
Anthony
Preston
Kelly
Taylor
Stiller
Dennis
Schwartz

2단계: 기록 시작 후 레지스터 a에 저장

qa를 입력합니다.

  • q는 기록 시작을 의미합니다.
  • a는 레지스터 a에 저장한다는 의미입니다.
  • qa 입력 시 하단에 recording 메시지가 나타납니다.

3단계: 입력 모드로 전환해 ALTER USER 입력

I(대문자 i)를 누른 뒤 ALTER USER 를 입력합니다.

첫 번째 줄 아무 곳에 커서를 놓고 I를 누르면 커서가 해당 줄의 첫 문자로 이동합니다. 이어서 ALTER USER를 타이핑합니다.

4단계: 다음 단어(이름) 복사

Esc w yw를 차례로 입력합니다.

  • Esc를 누른 후 w를 눌러 다음 단어(이름)로 커서를 이동합니다.
  • yw는 현재 단어(이름)를 복사합니다.

5단계: 줄 끝으로 이동해 IDENTIFIED BY ' 입력

Esc A를 누른 뒤 IDENTIFIED BY '를 입력합니다.

  • EscA를 누르면 커서가 줄 끝으로 이동합니다. 공백 한 칸을 입력하세요.
  • 이어서 IDENTIFIED BY '를 타이핑합니다.

6단계: 복사해 둔 이름 붙여넣기

Esc p를 입력합니다.

Esc를 누른 후 p를 입력하면 4단계에서 복사했던 이름이 붙여넣어집니다.

7단계: 마지막 따옴표 닫기

Esc A를 누른 뒤 ';를 입력합니다.

EscA로 줄 끝으로 이동한 다음 ';를 타이핑하면 문장이 완성됩니다.

8단계: 다음 줄로 이동 후 기록 종료

Esc j를 누른 뒤 q를 입력합니다.

  • j는 커서를 다음 줄로 이동시킵니다.
  • q는 기록을 종료합니다.

참고: 하단의 recording 메시지가 사라지면 기록이 완료된 것입니다. 이 시점의 change-password.sql은 아래 그림과 같습니다.

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드
그림: Vim 매크로 기록 완료 화면

9단계: 남은 줄에 대해 매크로 반복 실행

8@a를 입력합니다.

  • @a는 매크로 a를 한 번 재생합니다.
  • 8@a는 매크로 a를 8번 반복 실행하여 나머지 모든 줄을 아래 그림처럼 자동으로 완성합니다.

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드
그림: Vim 매크로 재생 완료 화면

추천 도서

Vim 매크로 완전 정복: 명령 기록부터 재생까지 단계별 가이드Ramesh Natarajan의 <Vim 101 Hacks>. 필자는 명령줄 애호가로서, 당연히 Vi와 Vim 편집기의 열렬한 팬이기도 합니다. 몇 년 전 리눅스에서 C 코드를 많이 작성하던 시절에는 구할 수 있는 Vim 관련 팁과 트릭을 거의 대부분 읽었습니다. 그동안 쌓아 온 Vim 경험을 바탕으로, 고급 Vim 기능을 다루는 101가지 실전 예제를 담아 편집 속도와 생산성을 크게 높여 주는 eBook <Vim 101 Hacks>를 집필했습니다. Vi와 Vim을 오래 사용해 왔다 해도 이 책을 읽지 않았다면 꼭 읽어 보시길 권합니다. Vim 편집기의 놀라운 잠재력에 감탄하게 될 것입니다.

함께 읽으면 좋은 Vim 관련 아티클

다음은 도움이 될 만한 Vi / Vim 편집기 관련 튜토리얼입니다.

  • Vimperator 애드온으로 Firefox 브라우저에 Vim 편집기 기능 더하기
  • c.vim 플러그인으로 Vim을 C/C++ IDE처럼 사용하기
  • Vim 편집기를 어떤 프로그래밍 언어든 지원하는 아름다운 소스 코드 브라우저로 변환하기
  • Vim 편집기를 위한 강력한 찾기·바꾸기 예제 12선

참고: The Geek Stuff를 구독하면 앞으로 소개될 Vi와 Vim 편집기 팁과 트릭을 놓치지 않을 수 있습니다.