HOME > etc > tools

Sublime Text3에서 CTags 사용하는 방법

JSFollow15 Apr 2019

Ctags는 소스 탐색 및 이동을 도와주는 프로그램입니다. Ctags는 소스를 분석하여 tags를 미리 만들어두고 탐색하는데 사용합니다. 서브라임텍스트에서도 Ctags를 사용할 수 있습니다.

설치 과정은 다음과 같습니다.

  • 먼저 자신의 OS에 CTags를 설치하고
  • SublimeText에는 CTags 플러그인을 설치해야 합니다.

로컬에 CTags 설치

우분투/데비안 사용자라면 apt로 CTags를 설치할 수 있습니다.

$ sudo apt install ctags

MAC 또는 Windows에서 Ctags를 설치하는 방법은 SublimeText-Ctags를 참고해주세요.

SublimeText에서 CTags 플러그인 설치

Ctrl + Shift + P를 눌러 Install Package를 실행합니다. 그리고 CTags를 검색하여 설치를 합니다.

태그 정보 만들기

CTags로 소스를 탐색하려면 먼저 태그 정보를 미리 만들어두어야 합니다. 아래 화면처럼 탐색하고 싶은 프로젝트 폴더를 우클릭하면 CTags: Rebuild Tags라는 메뉴가 나옵니다. 이 메뉴를 클릭하면 태그 정보들이 생성되고 동일한 디렉토리의 .tags라는 파일로 저장됩니다. 이 파일이 생성되었다면 소스 탐색을 할 수 있습니다.

CTags rebuild tags

소스 탐색하기(1)

탐색하고 싶은 메소드에 커서를 위치하고 ctrl + >를 눌러보세요. 그럼 그 메소드가 정의된 위치로 이동합니다. 다시 돌아가고 싶다면 ctrl + <를 누르시면 됩니다.

예를들어, 아래 코드에서 PackageManager.NameNotFoundException에 커서를 두고 ctrl + >를 누르면 정의된 위치로 이동합니다. 필드 또는 메소드가 여러 위치에 정의되었다면 아래 화면처럼 옵션이 보여지고 이 중에 선택할 수 있습니다. CTags navigation

소스 탐색하기(2)

위의 방법은 코드 위치에서 탐색하는 방법입니다. 소스파일을 꼭 열고 이동을 해야 하는 방법이죠. 소스파일을 열지 않고 이름을 알고 있는 메소드나 클래스로 바로 이동하고 싶을 때가 있습니다. 그럴 때는 ctrl + t + y를 사용하면 됩니다. 이 단축키를 입력하면 아래쪽에 창이 뜨면서 이동하고 싶은 클래스나 메소드를 입력할 수 있습니다.

예를들어, ctrl + t + y를 누르고 ActivityManager를 입력하면 CTags navigation

아래 처럼 바로 정의된 위치로 이동할 수 있습니다. 여러 위치에 정의되었다면 선택할 수 있는 창이 나옵니다. CTags navigation

파일 이름을 검색하여 소스 열기

파일 이름을 검색하여 소스를 여는 것은 SublimeText에서 제공하는 방법입니다.

ctrl + shift + p를 누르면 프로젝트의 모든 파일을 검색할 수 있는 창이 나옵니다. 검색해서 원하는 파일을 열 수 있습니다.

파일 내의 심볼 찾기

이 기능도 SublimeText에서 제공하는 것이고, 파일 내에 정의된 메소드들을 찾을 때 쓰는 방법입니다.

소스 파일에서 ctrl + r을 누르면 파일 내에 정의된 심볼(메소드)들을 찾을 수 있는 창이 나옵니다. 메소드만 검색되기 때문에 텍스트를 검색하는 것보다 메소드를 찾기 쉽습니다.

CTags 플러그인 단축키 정리

CTags 플러그인에서 제공하는 단축키를 정리해보았습니다.

Command Key Binding Alt Binding
rebuild ctags ctrl+t, ctrl+r
navigate to definition ctrl+t, ctrl+t ctrl+>
jump prev ctrl+t, ctrl+b ctrl+<
show symbols alt+s
show symbols (all files) alt+shift+s
show symbols (suffix) ctrl+alt+shift+s

CTags 플러그인 단축키 변경

SublimeText 메뉴에서 Preferences -> Package Settings -> CTags -> Key Bindings - Default에 들어갑니다. 여기에 플러그인에서 제공하는 단축키가 정의되어있습니다. 변경하고 싶은 부분을 따로 복사하여 Key Bindings - User에 재정의합니다. User의 내용이 가장 마지막에 덮어써지는 것이기 때문에, 다시 기본설정으로 돌아가고 싶으면 User에 정의한 것을 삭제하면 됩니다.

[
    {
        "command": "navigate_to_definition",
        "keys": ["ctrl+t", "ctrl+t"]
    },
    {
        "command": "navigate_to_definition",
        "keys": ["ctrl+shift+period"]
    },
    {
        "command": "search_for_definition",
        "keys": ["ctrl+t", "ctrl+y"]
    },
    {
        "command": "jump_prev",
        "keys": ["ctrl+t", "ctrl+b"]
    },
    ....