ctags는 프로그래밍 소스코드를 검색하거나 정의된 위치로 이동할 수 있는 태그 정보를 만들고 검색 기능을 제공한다. 이름에 C가 있다고 C언어만 되는 것은 아니고, 의외로 다양한 언어를 지원한다. (ctags --list-languages 명령으로 확인 가능)
데비안 계열 Ubuntu를 비롯한 여러 배포판에서 패키지로 exuberant-ctags를 제공하며, apt-get install로 설치할 수 있다.
$ sudo apt-get install exuberant-ctags
소스코드가 있는 위치에서 ctags -R 을 입력하면 하위 디렉토리까지 검색해서 태그 파일(tags)을 생성한다. 참고로 우분투에서 /usr/src/linux-headers-3.2.0.54/ 에서 생성된 태그 파일의 크기는 41MB 정도 되었다.
$ ctags -R (커널 소스 등 위치에 따라서 루트 권한 필요)
vi에서는 -t 옵션을 통해서 ctags에서 만든 태그를 탐색할 수 있다.
아래 명령을 내리면 탐색할 태그 검색어가 있는 위치(첫번째 검색 결과)에서 vi를 시작한다.
$ vi -t 탐색할_태그
vi를 실행하고 나서도 원하는 태그가 있는 소스코드로 이동할 수 있다.
:ta 탐색할_태그 (입력한 태그와 정확히 일치하는 태그를 모두 검색)
:ta /탐색할_태그 (입력한 태그를 포함하는 문자열 태그를 모두 검색)
만약 검색된 태그가 현재 열려 있는 파일이 아닌 다른 파일에 있을 경우 이동할지 물어볼 것이다. 엔터를 쳐서 이동한다. 그리고 검색된 태그가 여러 개가 있을 때 두번째 이후로 검색된 위치로 이동하려면 아래와 같이 그 다음 태그로 이동하는 명령을 이용한다.
:tn
또한 vi에 열려 있는 소스코드에서 커서가 있는 곳의 키워드(구조체 이름, 매크로, 함수 이름 등)의 코드가 정의된 위치로 이동하고 싶으면 Ctrl + ] 단축키를 입력하면 해당 위치로 점프한다. Microsoft Visual Studio에서 F12 단축키, Eclipse에서 F3 단축키를 쓰는 것과 같다.
Ctrl + ] 단축키 또는 :tn 명령으로 이동하고 나서 이전 위치로 다시 돌아가려면 Ctrl + T 단축키를 입력하면 된다.
'IT > Linux' 카테고리의 다른 글
프로그램 코드에서 얻는 IP주소와 실제 IP주소가 다른 경우 (0) | 2014.06.02 |
---|---|
우분투(Ubuntu)에서 vim에 Taglist가 작동하지 않는 경우 (0) | 2014.05.12 |
scp를 이용하여 여러 개의 파일 보내기/받기 (0) | 2014.05.01 |
리눅스가 32-bit 시스템인지 64-bit 시스템인지 확인하기 (0) | 2014.04.29 |
Ubuntu 12.04에서 grub 부팅 순서 변경 (기본 선택 변경) (9) | 2014.04.27 |