Advertisement

Vimとctagsでコードリーディング 公開用

DeNA Co., Ltd.
May. 23, 2014
Advertisement

More Related Content

Advertisement

Recently uploaded(20)

Vimとctagsでコードリーディング 公開用

  1. 2014/05 Vimとctagsでコードリーディング 勉強会LT
  2. 自己紹介 ✤ @Kesin11 ✤ 大学:豊橋技術科学大学(愛知県) ✤ 研究:自然言語処理/音声言語処理 ✤ 言語:Python ✤ 近未来予想 ✤ 音声認識は実用的になる ✤ YouTubeでは講演で話されている情報を直接検索することが可能になる
  3. コードリーディングをするときの悩み ✤ ある場所で呼ばれている関数やクラスが何をしているか 確認したい ✤ いちいちモジュールのファイルを開くのがめんどくさい ✤ CPANモジュールはだいたい階層が深くなる ✤ EclipseのF3みたいな定義元にジャンプする機能無い の?
  4. それ、Vimならctagsを使えば プラグインなくてもできるよ!
  5. ctags ✤ 関数の定義場所などを記録したタグファイルを生成してくれる ✤ インストール ✤ CentOS ✤ yum ctags ✤ Mac ✤ brew ctags ✤ (OSX標準のctagsはBSD系なので使えないオプションがある)
  6. ctags 使い方 ✤ プロジェクトのルートディレクトリ上で
 $ ctags -R ✤ 再帰的に全てのソースを解析してtagsファイルを生成して くれる ✤ PerlだとCartonでモジュールを管理するので簡単
  7. Vimでの操作 ✤ :set tags=./tags ✤ デフォルトでカレントディレクトリのtagsを読むので通常は不要 ✤ ジャンプ: <Ctrl + ]> ✤ 戻る: <Ctrl + t> ✤ 複数の候補から選択ジャンプ: g → <Ctrl + ]> ✤ ウィンドウ分割してジャンプ: <Ctrl + w> → <Ctrl + ]>
  8. デモ ✤ cpanm ̶look SQL::Maker ✤ ctags -R ✤ vim ✤ Perlでの関数ジャンプ、モジュールジャンプ
  9. ここからtips
  10. 便利なctagsオプション ✤ タグを出力するディレクトリの指定、tags以外の名前に変更 ✤ ctags -f (今回はパス) ✤ 追記でタグを生成 ✤ ctags -a ✤ タグを生成する言語を指定 ✤ ctags ̶languages=Perl,JavaScript ✤ 対応している言語は--list-languagesで確認できる
  11. tagsファイル自動生成 ✤ プラグインを使う(使ったこと無いけど多分何かある) ✤ Gitのフックを使ってコミット時に自動生成 ✤ $ vim .git/hooks/post-commit ←(chmod +xで実行権限を忘れずに) ✤ $ cd `git rev-parse ̶show-toplevel` ← gitで管理してるトップ ディレクトリに移動 ✤ $ ctags -R local ← catronでインストールしたモジュールでtagsファ イルを作り直し ✤ $ ctags -a -R lib ← 自分のAmon2のWebアプリをtagsに追記
  12. ジャンプの代わりに垂直分割して開く ✤ 標準機能にはないが.vimrcに以下のコマンドを書くと 可能 ✤ map v<C-]> :vsp <CR>:exec("tag .expand("<cword>"))<CR> ✤ 上の例だとv → Ctrl + ]で垂直分割して開く
  13. 標準ライブラリにもジャンプしたい ✤ perldoc -l CGIなどで標準ライブラリの場所を調べて ctags
  14. デモ ✤ ctags -a -R 標準ライブラリへのパス ✤ vim
  15. Vim使ってないけど ✤ EmacsやSublime Textでもctagsは使えるらしい ✤ 他のエディタ界隈は全く知らないので、実際は何を使っ てるのかツッコミお待ちしています
  16. 参考 ✤ 実践Vim(書籍) ✤ ctagsを使ってVimでCode Readingを加速する ✤ http://labs.timedia.co.jp/2010/12/codereading-with-ctags-on-vim.html ✤ ctagsをちゃんと使う ✤ http://qiita.com/soramugi/items/7014c866b705e2cd0b95 ✤ ctagsと連携するように環境を構築する ✤ http://qiita.com/soramugi/items/f918020c2b3f48c93bf3
Advertisement