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-] | ジャンプ先一覧を表示 |