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

## 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]( http://qiita.com/items/1c32d3f24cc2919203eb )を使います。
[一括インストールはコチラ]( https://gist.github.com/6695766 )

## [AlpacaTags](https://github.com/alpaca-tc/alpaca_tags)

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

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

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

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

![image](http://gifzo.net/0nUVOBdXMR.gif)

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

[オススメの設定](https://gist.github.com/6581417)

## [neosnippet](https://github.com/Shougo/neosnippet.vim)

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

![Rspec demo](http://gifzo.net/N537xVCk68.gif)

[ オススメの設定 ]( https://gist.github.com/4521425 )

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

[Snippetsダウンロード(書き換えて使ってください)](http://cl.ly/3o471d471T3a/download/ruby_snip.zip)

## [switch.vim](https://github.com/AndrewRadev/switch.vim)

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

![Switch demo](http://gifzo.net/tj3VpJq0UU.gif)

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

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

[オススメの設定はコチラ](https://gist.github.com/6696152)

## [rubocop](https://github.com/bbatsov/rubocop)

rubocopを使うと、Rubyのコードがコーディングルールに遵守されているかチェック出来ます。チームで開発する場合には必須ですね。
詳細は[コチラの記事](http://qiita.com/yuku_t/items/0ac33cea18e10f14e185)が参考になります。

## [vim-rails](https://github.com/tpope/vim-rails)

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

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

[ Youtube ]( http://www.youtube.com/watch?v=30P8DSNOZuU )

[ オススメの設定 ]( https://gist.github.com/4521441 )

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

```vim:.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](https://github.com/basyura/unite-rails)

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

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

オススメの設定は[ こちら ]( https://gist.github.com/4521467 )

## [vim-endwise](https://github.com/tpope/vim-endwise)

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

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

[オススメ?の設定](https://gist.github.com/4521460)

## [vim-ref](https://github.com/thinca/vim-ref) [vim-ref-ri](https://github.com/yuku-t/vim-ref-ri)

vim-refはvim上からリファレンスを引く事が出来る便利なプラグインです。
[Uniteと組み合わせて使うことも出来ます]( http://blog.remora.cx/2010/12/vim-ref-with-unite.html )

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

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

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

`brew install w3m` or `brew install lynx`

- vimの設定を追加する

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

[ オススメの設定 ]( https://gist.github.com/4521470 )

## おまけ[matchit](https://github.com/vim-scripts/ruby-matchit)

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

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

## 独り言

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

ファイト！