하지만 그렇다고 vi가 저열한 에디터인건 아닙니다. 사실 vi와 Emacs 에디터 중 어느 것이 더 낫느냐를 두고 많은 프로그래머들이 "종교전쟁"에 가까운 입씨름을 해 왔습니다만, 아직도 결판은 나지 않았습니다. (저는 vi를 선호함에도 Emacs가 더 강력하다고 느낍니다. 개인적으로는, '선호도'를 두고 입씨름 하는 것이 세상에서 가장 미련한 짓이라고 생각합니다.)
말이 또 샛길로 샜는데 -_-; 아무튼 vi와 ctags 유틸리티를 함께 사용하면 굉장히 빠른 소스 코드 브라우징을 할 수 있습니다. 간단히 그 사용법을 알아보겠습니다.
1. 첫 번째 단계 : source code에 태그를 단다
ctags를 사용해 브라우징할 대상이 되는 소스 코드들을 입력으로 주어, tags 파일을 생성합니다. 다음과 같이 합니다.
%> ctags *.{h,cpp}이렇게 하면 같은 디렉터리 아래에 tags 파일이 만들어집니다.
2. 두 번째 단계 : source code 브라우징
이제 소스 코드 브라우징을 해 봅니다. vi를 시작할 때 하는 방법이 있고, vi 안에서 하는 방법이 있습니다.
a. vi 기동시 특정한 함수 코드의 시작 부분으로 점프하는 방법
%> vi -t function_foo
위와 같이 하면 function_foo의 코드가 있는 부분부터 볼 수 있습니다.
b. vi 안에서 특정한 함수의 시작 부분으로 뛰는 법
vi의 : 모드에서 다음과 같이 입력합니다.
:tag function_name
그러면 vi 커서가 function_name 함수의 시작 부분으로 뜁니다. 소스 코드 위의 특정 위치에 커서를 가져다 놓고 Ctrl + ]를 누르는 방법도 있습니다. 그러면 커서가 위치한 곳에 놓인 함수 이름과 같은 이름을 갖는 함수 코드 시작 부분으로 커서가 점프합니다.
이전 위치로 도로 돌아가려면 Ctrl + t를 누르면 됩니다. 계속 누르면 원래 위치로 돌아갈 수 있습니다. (history가 유지됨)
그런데 ctags의 한가지 안좋은 점이라고 한다면, C++에서는 같은 이름을 갖는 함수가 엄청나게 많이 정의될 수가 있는데, 그럴 경우 화면에 같은 이름을 갖는 함수들의 번호가 떠서 그 중 어디로 점프할 것이냐를 묻는다는 점입니다. 하긴 ctags 프로그램이 컴파일러도 아니니, 그런 사항까지 정확하게 처리하기는 좀 힘들겠어요.
간단한 사항이지만, 코딩하다가 생각이 나지 않는 경우도 있어서 정리해보았습니다.
이것 말고 cscope라는 유사한 툴도 있는데, cscope가 ctags보다는 더 강력하다고 알려져 있습니다. 이 툴에 대한 한글 사용법은 http://wiki.kldp.org/wiki.php/VimCscopeTutorial에 잘 정리되어 있습니다.
'Languages > C++' 카테고리의 다른 글
| [C/C++] 쓸만한 메모리 디버깅 툴이 없을 떄 (0) | 2010/07/13 |
|---|---|
| cgdb : 텍스트 기반의 gdb 인터페이스 (0) | 2007/12/18 |
| VI와 ctags (0) | 2007/12/18 |
| empty container의 반환 (0) | 2007/12/14 |
| 메모리 할당과 초기화는 다르다 (2) | 2007/12/14 |
| Destructor가 왜 2번 불리는 거죠? (0) | 2007/12/12 |
댓글을 달아 주세요