Ctags + T(ag)list

 졸업논문 세미나를 하면서 제가 맡았던 부분인 ctags + taglist 플러그인에 대한 발표자료를 거의 그대로 옮긴 것입니다. 형식을 보시면 아시겠지만 ppt를 그대로 옮겼어요. 말로 때웠던 부분들도 글로 써두고 싶지만 귀찮아진 관계로 나중에… -_-;;;;

Ctags 소개

    여러 Source 파일들의 index(tag)를 생성하는 프로그램
    함수, 변수, 클래스 멤버, 매크로 등을 indexing함.
    생성된 tag는 여러 Text editor에서 사용가능
    현재는 exuberant-ctags라는 별도 프로젝트로 분리되었음.
    공식 홈페이지 : http://ctags.sourceforge.net

Ctags 구하기

    Source 또는 패키지 다운로드
        http://ctags.sourceforge.net
            Source 압축파일
            Source RPM
            Fedora 7 binary RPM
            윈도우즈 용 Source와 Binary

Ctags를 쓰기 위한 준비

    소스 파일이 있는 디렉토리의 최상단에서 tag 생성 -> “tags” 파일이 생성됨.

ctags -R *

    VI 설정파일(.vimrc)에 tag를 찾기 위해 다음을 추가

set tags+=./tags,../tags,../../tags,../../../tags,tags

VI + Ctags 사용 – :ts

    :ts <symbol> – <symbol>이 있는 위치를 선택하여 이동, Symbol 위에서 “g + ]” 해도 동일한 효과

:ts ctx

사용자 삽입 이미지   

VI + Ctags 사용 – :ta, ctrl-t, :tags

    :ta <symbol> – <symbol>을 찾아 이동, 소스파일의 찾을 symbol 위에서 ctrl-] 해도 됨
    :tags – 현재 tag 스택을 보여줌.

사용자 삽입 이미지

    Ctrl-t – tag 스택의 상위로(이전 위치로) 이동

taglist 소개 및 기능

    vim의 소스 코드 브라우저 플러그인
    Vim 창 안에서 함수, 클래스, 구조체, 열거형(enumeration),  매크로 정의 등을 보여줌
    Tag 창에서 tag를 선택하면, 해당 tag의 정의로 커서가 이동
    Ctags가 생성하는 tag 파일에 의존적
    공식 홈페이지 : http://vim-taglist.sourceforge.net/

Taglist 다운로드

    Sourceforge
        http://sourceforge.net/projects/vim-taglist/download

    VIM 공식 홈페이지의 스크립트
        http://vim.sourceforge.net/scripts/script.php?script_id=273

Taglist를 쓰기 위한 준비

    .vimrc 파일에 필수적으로 추가할 내용

filetype on

    .vimrc 파일에 선택적으로 추가할 내용

let Tlist_Ctags_Cmd=”/usr/bin/ctags“
let Tlist_Inc_Winwidth=0
let Tlist_Exit_OnlyWindow = 1
let Tlist_Auto_Open=1

    더 많은 정보는 매뉴얼(http://vim-taglist.sourceforge.net/manual.html) 참고

Taglist 화면(:TlistToggle)

사용자 삽입 이미지

Taglist 단축키

    <CR> – tag의 정의로 이동
    <SPACE> – tag 의 prototype을 표시
    u – tag 목록을 갱신
    x – tag list 창을 확대/축소
    + – 플딩 열기 (* – 모든 폴딩 열기)
    – – 폴딩 접기 (= – 모든 폴딩 접기)
    [[ 또는 <BACKSPACE> – 이전 파일의 시작위치로
    ]] 또는 <TAB> – 다음 파일의 시작위치로
    q – taglist 창 닫기
    <F1> – 도움말

2 thoughts to “Ctags + T(ag)list”

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.