RSenseを使ってVimをIDEっぽくする(Ruby向け)
はじめに
夏休みの間、普段とは別のバイト先でIntelliJ+Spray(Scala)で開発をしていたんですが、 IDE+静的型付け言語の組み合わせって色々補完してくれていいなあと思いました。
色々探してみたんだけど、Railsのメソッドを補完してくれるvimのプラグインってないのかな?2ヶ月くらいIntelliJ+Spray(Scala)で開発してたから、vim+Railsの環境が辛く感じる。
— yasaichi (@_yasaichi) 2014年10月6日
で、Vim+Railsでも同じことやりたい!*1と思って色々調べたら、neocompleteとRSenseを組み合わせることで、"Rubyに関しては"結構いい感じにできることがわかりました。
以下、備忘録を兼ねたまとめです。
RSenseとは
以下のデモ動画のように、レシーバーのクラスに応じてメソッド名を入力補完できたり*2します。
ちなみに未踏プロジェクトの成果物だそうです。やっぱ未踏の人たちはすごい。
RSense - The most useful development tools for Ruby ...
必要なもの
Macで既に以下の4つを導入していることを前提に説明します。知らないものがあれば適宜検索を。
やり方
RSenseをインストール
brew install rsense ruby /usr/local/Cellar/rsense/0.3/libexec/etc/config.rb > ~/.rsense
Vimの設定
.vimrc
に以下の記述を追加します。
NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } NeoBundleLazy 'supermomonga/neocomplete-rsense.vim', { 'autoload' : { \ 'insert' : 1, \ 'filetypes': 'ruby', \ }} " .や::を入力したときにオムニ補完が有効になるようにする if !exists('g:neocomplete#force_omni_input_patterns') let g:neocomplete#force_omni_input_patterns = {} endif let g:neocomplete#force_omni_input_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' " 環境変数RSENSE_HOMEに'/usr/local/bin/rsense'を指定しても動く let g:neocomplete#sources#rsense#home_directory = '/usr/local/bin/rsense'
動作確認
vim test.rb
とかで新しいファイルを作って、その中で1.
と入力した時点で自動で補完されればOKです。
さらに入力することで、候補が絞り込まれます。以下は1.t
まで入力した場合です。
おわりに
Railsのメソッドとか補完するいいやり方があれば教えてください(結局解決してない)。