2011년 4월 17일 일요일

[Vim] 자동 편집을 위한 길, Recording

Vim이 강력한 편집기로써 군림하게 된 건 편한 키맵, 정규표현식, 그리고 이 매크로 레코딩 기능이 있기 때문이라고 감히 주장하고 싶다.

레코딩 기능은 사용자가 입력하는 키를 그대로 녹화해서 매크로로 만들어 주는 기능이다.  이 기능에 대해 간단히 소개한다.

다음 코드가 입력되어 있다고 가정하자.
이 코드에서 int로 선언된 변수 4개 a, b, c, d의 이름을 _a, _b, _c, _d로 바꾸려고 한다.

순서대로 할 행동을 적어보자:

  1. :5 ENTER - 5번 라인으로 이동. 코드를 바꿀 라인으로 이동해 둔다는 의미다.
  2. qa - q 키로 매크로 녹화 시작. a는 이 매크로의 이름이다.
  3. /int ENTER - 'int'로 검색한다. 이 경우 'int a'항목이 제일 먼저 검색될 것이다.
  4. w - 다음 단어로 이동. 즉 커서가 'a'로 이동한다.
  5. i _ - i를 눌러서 입력모드로 들어가서 언더라인(_)을 입력한다는 의미.
  6. ESC - 편집 모드 종료
  7. q - 레코딩 종료.


녹화가 완료되었다. 지금까지 한 행동은 5번 라인에서 원하는 형식으로 편집하는 행위를 그대로 녹화한 것이다. 따라서 5번 라인은 편집이 끝난 상태가 된다. 그럼 이제 다음 키를 입력해 보자.
@a
골뱅이(Shift-2)를 누르고 a를 누른다. 골뱅이(@)의 의미는 녹화된 매크로를 실행한다는 의미다. 이 다음으로 오는 'a'는 a라는 매크로를 실행한다는 의미다.

이 키를 누르면 그 다음 라인의 편집이 된다. 즉, int _b = 1; 으로 바뀌는 것을 볼 수 있다.

계속해서 @a 를 2번 더 누르면 원하는 결과물이 나온다.



이상으로 'q' 명령어를 이용한 레코드의 예제를 살펴봤다.

레코딩 매크로는 위에서 봤다 싶이 '사용자가 입력한 것을 기록했다가 그대로 반복해 주기 위한 기능' 이다. 복잡하게 된 코드에서 원하는 방식으로 수정하려면 이 레코드 기능이 굉장한 힘을 발휘할 때도 있다. 꼭 알아두면 무조건 좋다! -_-;;;

댓글 3개 :

beavim :

완전초보인데 잘 봤습니다..

Unknown :

굉장히 유용한 기능이네요 잘써먹겠습니다~

익명 :

도움이 많이 되었습니다. 감사합니다.