getter의 중요성, 그리고 vim 매크로
Unity에서 sprite 교체 방식의 캐릭터 애니메이션을 사용하고 있었는데 어느 날 Skeletal animation을 도입하게 되었다. 기존에는 sprite renderer를 하나만 가지고 있었는데 skeletal은 복수개의 sprite renderer가 필요했다.
문제는 해당 컴포넌트의 bounds, color 같은 값을 직접 참조하는 것이 너무 많았다. 사용중인 IDE에서 일괄 변경 기능이 있을 것 같았지만(Visual studio니까) 그러한 기능을 평소에 써보지 않았고 IDE에 묶이는 것을 원치 않았다. 팀원들에게 상황을 설명하던 중에 vim의 매크로가 떠올랐다. 그렇다, 나는 VIM을 사랑한다. 손목 건강을 위하여 IDE에 vim 플러그인을 설치하여 작업을 하고 있었고, 최근에 vim 커맨드 지식을 확장하기 위하여 자료를 찾아보다가 매크로를 언뜻 봤던 것이 기억났다.
qa : a에 매크로 기록 시작.
기록중에 q : 기록 종료, 저장.
@a : a에 등록된 매크로 실행.
. : 마지막으로 실행한 커맨드를 실행.
수많은 참조에 대해서 작업해야할 내용은 이러하였다. 형태만 보면 var.Value 를 varValue 로 변경하는 것. 실제로는 ab.cd -> efgh 로 변경하는 것이고 변수 참조를 더블클릭하면 해당 참조의 첫번째 자리인 a 에 커서가 이동하기에 매크로를 아래처럼 작성후 실제 코드에 적용하였다.
qa c3e efgh 'Esc(ctrl+[)' q
첫 적용: 참조 위치로 이동, @a 실행
이후 적용: 참조 위치로 이동, . 실행
비효율적인 방법일 수도 있지만 내가 매크로를 모르던 시절에는 위 방식에서 매크로 없이 일일히 c3e 후 ctrl+v(p는 c로 지워져서 제외) 를 실행하였다. 그 때에 비하면 굉장한 발전이라고 할 수 있다. 자기 긍정은 중요하다.
위와 같은 케이스 3개가 있는 약 100개의 참조를 30분 만에 해치웠다. 쓰고보니까 그냥 IDE의 일괄 변경을 3번 돌리면 길어도 2분 안에 끝나는 것이 아니였나 싶다. 그래도 vim이라는 가볍고 범용이며 인체친화적인 조작에 대해서 한 걸음 나아간 것이라고 자신을 칭찬해보는 하루였다.