본문 바로가기

Server

linux ctags 사용법

1. ctags 설치 확인


$>ctags --version


설치되어있다면 다음 단계로 이동. 설치가 되어 있지 않다면 알아서 설치 (rpm 다운로드 , yum 등등 )


2. ctags 파일 생성


ctgas 만들고 싶은 최상위 디렉토리로 이동


$>ctags -R ./

명령어를  실행하면 이 디렉토리에 ctgas 파일 생성됨


3. .vimrc 파일에 ctags 파일 위치 지정


vim 으로 코딩할 경우 ctags를 사용하기 위해 ctags 경로를 설정해준다 


$>vim ~/.vimrc  


set tags(+)=ctags 절대 경로


ex) set tags=/home/test/tags


set tags+=/home/test3/tags  <-- +=사용하여 추가 가능함



4. 실행 테스트 


ctags가 설정된 파일 하나를 vim 으로 열고 테스트해본다.


명령어 모드, 입력모드에서 실행이 가능하다. 아래는 가장 기본적인 내용이고 이 외에도 다양한 기능이 있다


명령어 모드에서


:tj 함수명 or 구조체명  => 해당 함수, 구조체로 이동.. tj는 tag jump의 약자



:sts 함수명 or 구조체명 => 수평 창 분할로 보여줌




일반적으로는 해당 함수나 구조체에 키보드 커서를 이동후 ctrl+ ] 를 입력하면 해당 함수로 점프함


ctrl + t 는 원래 파일로 복귀



헤더 파일에 커서를 이동후 ctrl + w + f 입력시 수평분할되어 헤더파일 열림


 


-- @추가 --------------------------------------------------------------------------------------------------------

확장자가 .c .cpp 등등 일반적인 소스 파일이면 문제가 없으나...예를  들어 .sc 와 같은 확장자인 경우  tags 파일에 제대로 등록이 되지 않는다. 


이와 같은 경우에는 확장자를 등록하고 다시 tags 파일을 생성해야 한다.

인식하고 하는 언어의 확장자를 알아내려면

$> ctags --list-maps

ex)
일단 .ctags 파일을 만들고 그 안에  sc , ec 파일 도 .c 파일로 인식하는 코드를 추가해주어야 한다.

$>vim ~/.ctags

--langmap=C:.c.sc.ec

한번더 실행
$>ctags -R ./

-- @추가  2----------------------------------------------------------------------------------------------------


bak 같은 포함되지 않기를 원하는 디렉토리가 있으면 exclude 옵션으로 제외시킬수 있다.


bak 디렉토리와 BAK 디렉토리를 제외하는 예


$>ctags -R --exclude=bak --exclude=BAK *