おかゆ++

IT業界の片隅で生き残るブログ

VimとCtagsの連携設定・使い方メモ

Vim と Ctags を連携させます。

何ができるようになる?

まだ使いこなせてないので細かいところはわからないですが、 ソースコードを解析して、関数の定義元へジャンプしたりとかできるようになるハズ。

前提

Ctagsのインストール

chocolateyで入れるのが楽だと思います。

最近はuniversal-ctagsというのがあるらしいですが、chocolateyにパッケージがないみたいなので、昔ながらの?ctagsを使います。 ctagsはもうメンテされてないらしいので、ほんとはuniversal-ctagsを使ったほうがいいみたいですが。

choco install ctags

Ctagsの設定

~/.ctags に設定ファイルを配置して、JavaScript用の拡張を記載します。

Windows環境変数HOMEなどを設定していない場合は、実行ファイルと同じ場所におけばいいのかな? すみません、確認できてません……

--exclude=.git
--exclude=.hg
--exclude=log
--exclude=tmp

--languages=-javascript
--langdef=js
--langmap=js:.js
--langmap=js:+.jsx

--regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*[=:][ \t]*([0-9"'\[\{]|null)/\1/n,constant/
--regex-js=/\.([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/
--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*[ \t]*:[ \t]*\{/\1/o,object/
--regex-js=/([A-Za-z0-9._$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*\{/\1\.\2/o,object/
--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/
--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*:[ \t]*\(function\(\)/\1/c,class/
--regex-js=/class[ \t]+([A-Za-z0-9._$]+)[ \t]*/\1/c,class/
--regex-js=/([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*[Rr]eact.createClass[ \t]*\(/\1/c,class/
--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/
--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*:[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/
--regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/
--regex-js=/(function)*[ \t]*([A-Za-z$_][A-Za-z0-9_$]+)[ \t]*\([^)]*\)[ \t]*\{/\2/f,function/
--regex-js=/['"]*([A-Za-z$][A-Za-z0-9_$]+)['"]*:[ \t]*function[ \t]*\(/\1/m,method/
--regex-js=/([A-Za-z0-9_$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/

Vimでの操作

大体このあたりを使っていきたいです。

操作 動作
C-] カーソル位置でタグジャンプ実行
C-t ジャンプ元に戻る
g C-] ジャンプ先一覧を表示

参考