2011년10월27일_vi(비주얼 에디터)에서 비주얼스튜디오와 비슷하게 헤더파일에 어떻게 정의되어 있나 쉽게 알아보자! ctags사용



우선 리눅스 헤더파일들은 /usr/include에 있으니 그 헤더파일들을 태그화시켜 파일로 저장해야 한다.

image

# ctags --c-kinds=+p –R /usr/include

명령어 사용법이 좀 복잡해 보이나 사실 간단합니다. 복잡해 보일 뿐입니다...
이렇게 하면 헤더파일이 위치한 디렉토리와 하위 디렉토리들에 대한 태그를 만듭니다.

다음 vi로 편집하려는 소스파일을 엽니다.

image 

sigaction이라는 구조체의 원형 정의를 알고 싶다면 커서를 키워드(sigaction) 위에 두고 Ctrl + ] 키를 누릅니다.

image 

/usr/include/asm/signal.h 라는 파일로 이동해 같은 창에 보여줍니다.
그런데 sigaction구조체는 다른 파일에도 정의되어 있습니다. 그래서 어디어디에 정의되어 있나 확인하려면...

image

:tselect sigaction
tselect 확장명령으로 해당 키워드를 검색하면..

image

해당 키워드가 정의된 파일들의 리스트가 출력되고 앞에 #이 번호라 이 번호를 입력하고 엔터를 치면 해당 파일로 이동합니다.
두 번째 bits디렉토리의 sigaction.h파일로 이동해 봅시다.

image

수업시간에 봤던 구조체의 원형이 보입니다~
모르는 명령이 있다면 :help tags 를 입력하여 도움말을 봅시다~ 영어지만 어렵지 않아요~
아! 그리고 본 소스코드로 돌아 오려면 Ctrl + T키를 입력하여 돌아옵니다.  (이동 깊이는 스택개념이라 쉽게 이해 되실듯)

소스코드와 같은 디렉토리에 tags파일이 있다면 별도의 세팅없이 바로 사용가능합니다만..
/usr/include디렉토리의 내용이 너무 많아 tags파일의 용량이 52MBytes이상으로 너무 커 매번 가지고 다니기 곤란합니다.
그러니 공유 디렉토리에 두고 하위디렉토리인 프로젝트 디렉토리에는 소스코드만 두고 사용하려면 다음과 같이 합니다.

image

set 명령은 설정한다는 뜻이고, tags는 tags가 있는 디렉토리 지정, ./../ 는 상위 디렉토리, 다음에 오는 tags는 ctags파일입니다.