ctagsを設定して定義元クラス・メソッドへ遷移する方法をメモ

ctagはEclipseなどのIDEにはある定義元へ遷移する機能をvimなどのエディタで使えるようにするためtagを作成するためのもの。
プロジェクト(php,ruby,perl,javaなど)のコードから定義元のtagを作成する。このctagで作成したtagをつかうことで定義元クラス・メソッドへ遷移する機能を使用できるようになる仕組み。
tagは非常に開発で便利なので是非入れたほうが良い

ctagsインストール

Mac(homebrew)の場合:

brew install ctags
alias ctags="`brew --prefix`/bin/ctags"

[alias ctags="`brew --prefix`/bin/ctags"]の部分はエイリアスのため、.bashrc,.zshrcなどのシェルに記載でもよい
参考:http://nob-log.info/2012/07/29/ctags-illegal-option/

設定したエイリアスの確認

alias

設定したエイリアスの削除

unalias [エイリアス名]

CentOSの場合:

yum install ctags

Ubuntuの場合:

sudo apt-get install exuberant-ctags

ctagsの設定

$HOME/に.ctagsのドットファイルを作成する

touch .ctags
--append=yes
--recurse=yes
--php-kinds=cfd
--html-kinds=af
--java-kinds=cfimp
--ruby-kinds=cfm
--perl-kinds

–append=yes ➡ tagsが既にあれば上書きではなく追加
–recurse=yes ➡ 配下ディレクトリを再起的にタグ作成するかどうか(-Rと同じ)
–[言語]–kind ➡ なんのタグを作成するかの設定(c=classなど)

参考:http://hp.vector.co.jp/authors/VA025040/ctags/help_j.html

対象言語拡張子の確認

対象言語の拡張子を確認:

ctags --list-maps

結果:

Ant      *.build.xml
Asm      *.asm *.ASM *.s *.S *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68]
Asp      *.asp *.asa
Awk      *.awk *.gawk *.mawk
Basic    *.bas *.bi *.bb *.pb
BETA     *.bet
C        *.c
C++      *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx
C#       *.cs
Cobol    *.cbl *.cob *.CBL *.COB
DosBatch *.bat *.cmd
Eiffel   *.e
Erlang   *.erl *.ERL *.hrl *.HRL
Flex     *.as *.mxml
Fortran  *.f *.for *.ftn *.f77 *.f90 *.f95
HTML     *.htm *.html
Java     *.java
JavaScript *.js
Lisp     *.cl *.clisp *.el *.l *.lisp *.lsp
Lua      *.lua
Make     *.mak *.mk [Mm]akefile GNUmakefile
MatLab   *.m
OCaml    *.ml *.mli
Pascal   *.p *.pas
Perl     *.pl *.pm *.plx *.perl
PHP      *.php *.php3 *.phtml
Python   *.py *.pyx *.pxd *.pxi *.scons
REXX     *.cmd *.rexx *.rx
Ruby     *.rb *.ruby
Scheme   *.SCM *.SM *.sch *.scheme *.scm *.sm
Sh       *.sh *.SH *.bsh *.bash *.ksh *.zsh
SLang    *.sl
SML      *.sml *.sig
SQL      *.sql
Tcl      *.tcl *.tk *.wish *.itcl
Tex      *.tex
Vera     *.vr *.vri *.vrh
Verilog  *.v
VHDL     *.vhdl *.vhd
Vim      *.vim
YACC     *.y

※言語に拡張子を追加する場合は.ctagsへ–langmapを設定するとできる

tag作成

対象プロジェクトディレクトリ内で実行

ctags

※-Rオプションは不要(.ctagsで–recurse=yesに指定してるため)

ディレクトリ直下にtagsファイルが生成されていればOK

vim-tagsプラグイン導入

プログラミング中にあたらしく追加されたコードからtagを毎回作成するのを自動化してくれるvimプラグイン「vim-tags」を導入
※参考:https://github.com/szw/vim-tags

neobundleを使っている場合:

NeoBundle 'szw/vim-tags'

使い方:

:TagsGenerate

※これでtagを再構築してくれる

vimでの使い方

ショートカット:
定義へ移動 = Ctrl + ]
定義へ移動(複数ある場合にプロンプト表示)= g + Ctrl + ]
履歴戻る = Ctrl + t or Ctrl + 0 or :pop

定義へ移動で常に複数ある可能性を考えてvimrcにキーバインドを変更しておくと良い

                                     
nnoremap <C-]> g<C-]> 

その他おすすめの備忘録

Tagged with:
 

3 Responses to [VIM]ctagsを設定(.ctags)して定義元クラス・メソッドetc へ遷移する方法

  1. michael-unltd より:

    ctags is similar to InteliJ's "F12"

  2. mosco-mule より:

    ctagsを設定(.ctags)して定義元クラス・メソッドetc へ遷移する方法 ctagsを設定して定義元クラス・メソッドへ遷移する方法をメモ ctagはEclipseなどのIDEにはある定義元へ遷移する機能をvimなどのエディタで使えるようにするためt

コメントを残す