備忘録
ちゃんと使えよって意味で
これはなに
関数やクラスの定義元にジャンプできるやつ。もともとは Vim に組み込まれていた機能だったが、バージョン6のリリースとともに独立したらしい。
正確に言うと universal-ctags とは、本家 ctags からフォークしたプロジェクトです。
Vim 以外のエディタでも ctags は使えます(Emacs, Sublime Text など)が、ここでは Vim についてのみ記述します。
作業環境
インストール
GitHub リポジトリの README に記載されているやり方に従います。
$ brew tap universal-ctags/universal-ctags $ brew install --HEAD universal-ctags
既に ctags を Homebrew からインストールしている場合は、アンインストールしておきます。
$ brew uninstall ctags
ctags でない理由
本家である ctags を使わない理由としては、2009年以降更新が途絶えているからです。
これでは最近生まれた言語(例えば Go 言語)では利用できないので、本家からフォークされた universal-ctags に移った次第です。
ここで回答している通り、 ~/.tags
に書いても良いのですが、毎回これだと流石に辛いと思ったので……
universal-ctags は Go や Rust なんかをサポートしていますので良さがあるように見えます。
使い方
初めにプロジェクトのルートディレクトリで以下のコマンドを実行して tags
ファイルを生成します。
$ ctags -R
-R
オプションで再帰的にタグを生成しています。
git 管理下ではステージングファイルの候補一覧に表示されるので、 .gitignore
に tags
を追加しておきましょう。
定義元にジャンプする
関数やクラスのインスタンスにカーソルを合わせて <C-]>
を押下すると、定義元にジャンプします。定義元が別ファイルにある場合は新規バッファが開きます。元に戻る場合は <C-t>
です。
画面分割する場合は、<C-w><C-]>
するとよいです。
g<C-]>
すると、候補が1つの場合はそのまま定義元へジャンプし、候補が複数の場合は候補一覧を表示してくれます。
TODO
tags
ファイルは新しく関数を作ったりする度に $ ctags -R
で更新する必要があるので、自動化する。更新のタイミングとしては :w
で保存する時、 git commit
する時などがよさ気。
参考:実践Vim 思考のスピードで編集しよう!(書籍)
- 作者: Drew Neil,新丈径
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/08/29
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (15件) を見る