Ruby
Vim
ctags

vim使っているrubyistで、これ入れていないのはヤバいプラグインまとめ 9個 (2013-10-04更新)

More than 3 years have passed since last update.

Rubyの開発効率を高めたい!

vimでRubyやRails開発するときに、デフォルトの状態では非力ですよね。
開発効率を高める9つのプラグインを紹介します。

  • alpaca_tags   ctagsの非同期生成
  • neosnippet   Rails/sinatra/rspec等の補完
  • swtich.vim    .present?:.brank?など対応するキーワードを切り替える
  • rubocop    文法エラー、スタイルチェック
  • vim-rails    Railsプロジェクト用プラグイン
  • unite-rails    Railsプロジェクト用Unite-source
  • vim-endwise   if...endなど対応するキーワードの自動補完
  • ruby-matchit   %を拡張して、def...end等のキーワードを移動出来るようにする。
  • vim-ref     Ruby/Gemsのリファレンスを引く

インストール

vimのプラグイン管理にはNeoBundleを使います。
一括インストールはコチラ

AlpacaTags

Vim + Ctagsってかなり便利ですよね。
tagジャンプの機能を使えば、プロジェクト内のメソッドやクラスの探索を一瞬で行えます。

ただし、IDEと違って手動で生成するのが面倒。。
そう思っていた時期が僕にもありました。

自動化すればいいじゃないか

Gemfile更新のタイミング、ファイル保存のタイミングで自動的にコマンドを実行すれば、
いつでも新鮮なtagsを使うことが出来ます。

image

  • :AlpacaTagsUpdate
    • Git配下のtagsを生成します。
  • :AlpacaTagsBundle
    • Gemfileからgemのtagsを生成します。
  • :AlpacaTagsSet
    • 生成したtagsを読み込みます。
  • Unite tags
    • uniteを使ってtagを操作します

オススメの設定

neosnippet

snippets補完は、入力中の文字に対して予め容易された一連の処理を展開する補完です。
これは、一度使ってみると癖になります。

Rspec demo

オススメの設定

Railsを覚えたてのころ、僕は本気でsnippetsを書いて 全てを補完 することにしました。
View/Controller/Route/Migration/Rspecを補完したneosnippetに死角はありません。(無駄は多い)
Railsで動的に読み込むsnippetを変える場合は、後述するvim-railsを使いましょう。

Snippetsダウンロード(書き換えて使ってください)

switch.vim

入れておいて、絶対損は無い と言い切りましょう。
:Switchをいうコマンドを実行すると、
[true,false]や[.blank?,.present?]といった定義されたキーワードの切り換えを行えます。

Switch demo

正規表現やキーワードの定義が可能です。

僕は、Railsのcontrollerで記述するstatusをSwitchで切り替えています。
[404, ':not_found']などと設定しておくと、結構便利ですよ。

オススメの設定はコチラ

rubocop

rubocopを使うと、Rubyのコードがコーディングルールに遵守されているかチェック出来ます。チームで開発する場合には必須ですね。
詳細はコチラの記事が参考になります。

vim-rails

railsを書くときに、移動をスマートにしたり、vimからコマンドを実行する事が出来ます。
私がvimを使う理由は、vim-railsによってコードが何よりも書きやすいからに他なりません。

:Rでview - controllerを移動したり、:Aでテストコードとを行き来出来ます。

Youtube

オススメの設定

ちなみに、autocmd User Rails/spec/models/*といった構文はもう使えなくなりました。
未だにこちらを使い人は、コチラを参照してください
また、NeoSnippetと併用する場合は下記のように記述します。

.vimrc
autocmd User Rails.view*                 NeoSnippetSource ~/.vim/snippet/ruby.rails.view.snip
autocmd User Rails.controller*           NeoSnippetSource ~/.vim/snippet/ruby.rails.controller.snip
autocmd User Rails/db/migrate/*          NeoSnippetSource ~/.vim/snippet/ruby.rails.migrate.snip
autocmd User Rails/config/routes.rb      NeoSnippetSource ~/.vim/snippet/ruby.rails.route.snip

unite, unite-rails

:Unite rails/<Tab>で、Unite上にviews/controllersなどを一覧表示させる事が出来ます。
これをキーマップに指定して、vim-railsと組み合わせればRails内の移動を最速で行う事が出来ます。

僕はRailsの開発時に 必ず2ステップ 以下で移動出来るようにしています。
Gemfileやrspecやroutes.rbなども一瞬です。素敵。

オススメの設定は こちら

vim-endwise

if...enddef...endなど、 対になる文字を自動で書き出してくれるプラグイン です。
ifまで押して、<CR>すると自動でif...endまで書き出してくれます。

ruby以外にも、幾つかの言語で対応しているのでオススメです。
neocompleteと一緒に使う場合は、neocompleteのdocをちゃんと読むと良いでしょう。

オススメ?の設定

vim-ref vim-ref-ri

vim-refはvim上からリファレンスを引く事が出来る便利なプラグインです。
Uniteと組み合わせて使うことも出来ます

Ref ri link_toでrails内のlink_toのリファレンスを見ることが出来るようになります。

  • w3mやlynxをインストールする

リファレンスの閲覧に必要なのでhomebrewなどでインストールしましょう。

brew install w3m or brew install lynx

  • vimの設定を追加する

設定が無くても使えますが、あればより使いやすくなります。
riのPATHは各々書き換えてください。

オススメの設定

おまけmatchit

vimには、対になる文字の上で%を押す事で、対応する()や{}を移動する機能が備わっています。
matchitを有効にすれば、rubyでよく使うdef...endなども%で移動出来るようになります。

if !exists('loaded_matchit')
  " matchitを有効化
  runtime macros/matchit.vim
endif

独り言

コードばかり書いてたら、いつの間にか街に就活生が溢れていました。
この記事を見ている学生エンジニアは、きっとRuby系の会社へ就活しに行くんですね。。。

ファイト!