Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim で tags を使って ruby と gem のソースコードをブラウジングする(翻訳)

$
0
0

Vim で gem のコードを読むにはどうすればいいかを調べていたところ、参考になる記事があったので翻訳してみました。

原著者の許諾を得て翻訳・公開します。


数ヶ月前、私はシドニーに行きました。そこで私のチームメイトの Andrew が RubyMineのかなり気の利いた機能を見せてくれました。彼はその機能を使い、Ruby のメソッド定義元にジャンプすることができました。それ自体はそこまで特別ではありませんでした、彼がある gem のソースコードにシームレスに移動するまでは ― 私は感動しました。

この記事では、Vim で同様のワークフローを作成し、Vim を強力な IDE に変換する方法について説明します。それではまず、プロジェクト内のメソッド宣言元にジャンプしてみましょう。

Vim でメソッド定義やシンボル間をジャンプ移動するためには、移動することができるように、ある種のマップが必要となります。これらのマップは tags と呼ばれ、今回利用するのはExuberant Ctagsです。

最も簡単な tags の生成方法は、プロジェクトのルートディレクトリで ctags -Rコマンドを実行することです。vim-railsプラグインを使っている場合は、:Ctags1コマンドで tags を再生成することができます。guardを用いてファイルに変更があった時や、git hookで新しいコードをチェックアウトした時に自動で tags を生成するよう環境設定することもできます。私の場合は、手動での生成で十分でした。

tags 間を移動する

Vim は tags 間の移動機能が組み込まれているため、そのために新たに Vim プラグインを導入する必要はありません。私が最もよく使う2つのコマンドは、定義元に移動する ctrl + ]と、ジャンプ元の場所に戻る ctrl + oです。選択したシンボルに複数の tags がある場合は、ビジュアルモードでの :tselectコマンドや、g]コマンドを利用できます。それ以外に、:tnext:tpreviousを使うことができます。

もう一つの選択肢としては CtrlPを使うことです。 CtrlP はファイル名や tags を参照できるあいまい検索プラグインです。tags の移動を利用するためのコマンドは :CtrlPTagです。

Vim はマウスモードもサポートしています。ctrl + clickで定義元に移動し、ctrl + right clickで元に戻るという、モダンな IDE に似た移動をサポートしています。

gem のソースコードにジャンプする

ここまで、プロジェクト内で tags 生成・移動についてまとめてきましたが、私にとってはここ数年間これで十分でした。しかし利用している gem 内のメソッド定義にジャンプすることはできるのでしょうか?

Vim プラグインのインストールをしない場合、bundle openを使うと、エディタ上で gem のソースコードを参照することができます。幸運にも、我々はもっと良い方法で、利用している gem の tags を生成することができます。

そのためには、いくつかのプラグインを Vim にインストールする必要がありますー vim-rbenvvim-bundlerです。そしてパズルの最後のピースは、 gem-ctagsと呼ばれる gem です。

以上は Vim に現在のプロジェクトで使っている gem のソースコードに移動する方法を教えるのに十分なはずです。また、 bundler をフックし、gem の更新やインストールがあった場合にはいつでも tags を再生成してくれますーしっかりしていますね。

結論

完全に機能するセットアップをするには、まず brew で Exuberant Ctagsをインストールします。

brew install ctags

Pathogenを使っている場合、.vimrcに以下のプラグインの記載が必要です。

Plugin 'vim-ruby/vim-ruby'
Plugin 'tpope/vim-rails'
Plugin 'tpope/vim-rbenv'
Plugin 'tpope/vim-bundler'

その後、gem-ctagsrbenv-ctagsをインストールします。

gem install gem-ctags
gem ctags

mkdir -p ~/.rbenv/plugins
git clone git://github.com/tpope/rbenv-ctags.git \
  ~/.rbenv/plugins/rbenv-ctags
rbenv ctags

すると Vim が強力な Ruby の IDE に変わります。これで :Ctags1を実行することでプロジェクトの tags を生成・更新でき、ctrl + ]を押すことでソースコードの定義にジャンプすることができます。

参考情報

Vim のセットアップに必要な重要なプロジェクト:

  • gem-ctags: gem インストール時に tags を生成する
  • rbenv-ctags: rbenv で Ruby をインストールする際、ruby の tags を生成する
  • vim-ruby: Vim における Ruby ファイルのパスサポートを提供する
  • vim-rails: tags 再生成の簡単な方法を追加する
  • vim-rbenv: Vim における rbenv でインストールした Ruby ファイルのパスサポートを提供する
  • vim-bundler: Vim で tags の場所を設定する

Ctags を最新の状態に保つためには?

Vim のセットアップや tags についての記事やガイド:


  1. 元記事では:Rtagsと記載されていましたが、現在は:Ctagsというコマンドに変わっているようです。(参考:https://github.com/tpope/vim-rails/commit/b636decf2d7017aef42c18453a0ae2758ee9c2fc


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>