'vi'에 해당되는 글 1건

  1. 2007/12/18 VI와 ctags
Languages/C++2007/12/18 17:36
제가 애용하는 에디터는 vi입니다. 모든 기능을 다 알고 있지 못한데도, 주구장창 이 에디터만 사용하고 있습니다. Emacs를 배워보려고 시도했던 적이 있습니다만, 단 한번도 성공한 적이 없습니다. (Emacs를 자유자재로 쓰시는 분들께 경배를...)

하지만 그렇다고 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에 잘 정리되어 있습니다.





Posted by 이병준
TAG ,

TRACKBACK http://www.buggymind.com/trackback/90 관련글 쓰기

댓글을 달아 주세요