Ctags 튜토리얼

1 개념

Ctags Quickstart
Ctags 퀵스타트
  • Ctags의 설치와 간단한 사용법에 대한 설명

2 사전작업

또는 CentOS ctags 설치

3 tags 파일 만들기

  • 프로젝트 디렉토리로 이동하여 아래 명령을 실행
ctags -R
johnjeong@zetawiki:~/project$ ctags -R
johnjeong@zetawiki:~/project/test$ ll
합계 20
drwxrwxr-x 2 johnjeong johnjeong 4096  2월  7 23:08 ./
drwxrwxr-x 8 johnjeong johnjeong 4096  2월  7 23:06 ../
-rw-rw-r-- 1 johnjeong johnjeong   65  2월  7 23:07 a.php
-rw-rw-r-- 1 johnjeong johnjeong   30  2월  7 23:08 b.php
-rw-rw-r-- 1 johnjeong johnjeong  391  2월  7 23:08 tags
→tags 파일이 생성된 것을 확인 할 수 있음
  • 개별 파일 지정을 통해서도 생성이 가능
ctags 파일1 파일2 파일3
johnjeong@zetawiki:~/project/test$ ctags a.php b.php 
johnjeong@zetawiki:~/project/test$ ll
합계 20
drwxrwxr-x 2 johnjeong johnjeong 4096  2월  7 23:18 ./
drwxrwxr-x 8 johnjeong johnjeong 4096  2월  7 23:06 ../
-rw-rw-r-- 1 johnjeong johnjeong   65  2월  7 23:07 a.php
-rw-rw-r-- 1 johnjeong johnjeong   30  2월  7 23:08 b.php
-rw-rw-r-- 1 johnjeong johnjeong  391  2월  7 23:18 tags
→각각의 파일 지정으로도 tags 파일이 생성된 것을 확인 할 수 있음
  • 파일 이름도 tag에 포함하여 생성가능
ctags -R --extra=f .
→"extra=f" 옵션을 추가하여 파일도 tag로 포함 되도록 함

4 tags 파일

  • tags 파일을 vi 에디터로 열어 확인
  • tags 파일은 함수, 변수들이 어디에 있는지 등의 tag를 관리해주는 파일임
vi tags
johnjeong@zetawiki:~/project/test$ vi tags
!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.9~svn20110310 //
printName   a.php   /^function printName() {$/;"    f
→printName 함수가 a.php 파일에 존재한다는 것을 확인 할 수 있음

5 사용법

  • tj 태그명으로 원하는 위치로 이동 가능
:tj 태그명
!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.9~svn20110310 //
printName   a.php   /^function printName() {$/;"    f
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
:tj printName
<?php
function printName() {
    echo "Bart";
}
?>
→tj printName 명령을 통해 printName 함수로 이동된 것을 확인 할 수 있음
  • po명령으로 다시 tags 파일로 다시 돌아갈 수 있음
:po
<?php
function printName() {
    echo "Bart";
}
?>
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
:po
!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.9~svn20110310 //
printName   a.php   /^function printName() {$/;"    f
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"tags" 7L, 391C
po명령을 통해 tags 파일로 다시 돌아옴
  • stj 태그명으로 원하는 위치를 분할된 창을 통해 확인이 가능함
stj 태그명
<?php
function printName() {
    echo "Bart";
}
a.php                                                         3,0-1       꼭대기
!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
tags                                                          1,1         꼭대기
"a.php" 7L, 65C

6 VIM 연동

1. .vimrc 파일에 tags 위치 지정

vi ~/.vimrc
  • .vimrc 파일 안에 아래와 같이 tags 파일의 위치를 지정해 줘야함
set tags=TAGS_FILE_PATH
set tags=/home/johnjeong/project/test/tags
→실제 tags 파일의 위치를 지정함

2. tags 파일을 열 필요없이 곧장 아래와 같이 입력하면 원하는 위치로 이동함

<?php
include("./a.php"); 

printName();
?>
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                                                                                                      
:tj printName

7 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}