Skip to content

Instantly share code, notes, and snippets.

@alpaca-tc
Created July 11, 2013 14:09
Show Gist options
  • Select an option

  • Save alpaca-tc/5975764 to your computer and use it in GitHub Desktop.

Select an option

Save alpaca-tc/5975764 to your computer and use it in GitHub Desktop.

最終更新(2013-07-11)

変更内容

  • vimrcの設定の変更
    • 個人的に使用頻度の低いプラグインを削除
    • 間違った説明文を修正
  • リポジトリの名前を変更
  • 使わないプラグインの削除
    • rsense
  • 新しいプラグインの追加
    • alpaca_tags
    • switch
    • vim-ruby
  • プラグインの変更
    • neocomplete -> neocomplete に変更

Ruby2.0の時代ですね。誕生日が一緒でした。 そんな僕は未だに1.8系を触ることが多々有ります。泣

さらにRailsでの開発スピードをあげるべく、 紹介するプラグインは以下の通りです。

時間が無いので、大分割愛しています。 丁寧な解説が欲しい人は古いリビジョンを見てください。

vimでRuby / RoR を書くパフォーマンスを最高にしましょう!

  • alpaca_tags
  • neocomplete
  • neosnippet
  • vim-rails
  • vim-endwise
  • ruby-matchit
  • unite.vim
    • unite-rake
    • unite-rails
    • unite-rails_best_practices
  • vim-ref
    • vim-ref-ri
  • neorspec

インストール

vimのプラグイン管理にはNeoBundleを使います。 使い方は以下を参照。

NeoBundleの導入 下記のコードをNeoBundleでインストールしてください

Railsに関するプラグインの遅延読み込みのためにちょっと面倒なことをしています。 うまく動かないっていう人は、NeoBundleLazyをNeoBundleに書き換えて使って下さい

" {{{
NeoBundle 'Shougo/vimproc', {
      \ 'build' : {
      \     'mac' : 'make -f make_mac.mak',
      \     'unix' : 'make -f make_unix.mak',
      \    },
      \ }

if has("lua")
  NeoBundleLazy 'Shougo/neocomplete', { 'autoload' : {
        \   'insert' : 1,
        \ }}
else
  NeoBundleLazy 'Shougo/neocomplete', {
        \ 'autoload' : {
        \   'insert' : 1,
        \ },
        \ }
endif

NeoBundleLazy 'Shougo/neosnippet', {
      \ 'autoload' : {
      \   'commands' : ['NeoSnippetEdit', 'NeoSnippetSource'],
      \   'filetypes' : 'snippet',
      \   'insert' : 1,
      \   'unite_sources' : ['snippet', 'neosnippet/user', 'neosnippet/runtime'],
      \ }}

NeoBundle 'tpope/vim-rails', { 'autoload' : {
      \ 'filetypes' : ['haml', 'ruby', 'eruby'] }}

NeoBundleLazy 'alpacatc/vim-endwise.git', {
      \ 'autoload' : {
      \   'insert' : 1,
      \ }}

NeoBundleLazy 'edsono/vim-matchit', { 'autoload' : {
      \ 'filetypes': 'ruby',
      \ 'mappings' : ['nx', '%'] }}

NeoBundleLazy 'basyura/unite-rails', {
      \ 'depends' : 'Shougo/unite.vim',
      \ 'autoload' : {
      \   'unite_sources' : [
      \     'rails/bundle', 'rails/bundled_gem', 'rails/config',
      \     'rails/controller', 'rails/db', 'rails/destroy', 'rails/features',
      \     'rails/gem', 'rails/gemfile', 'rails/generate', 'rails/git', 'rails/helper',
      \     'rails/heroku', 'rails/initializer', 'rails/javascript', 'rails/lib', 'rails/log',
      \     'rails/mailer', 'rails/model', 'rails/rake', 'rails/route', 'rails/schema', 'rails/spec',
      \     'rails/stylesheet', 'rails/view'
      \   ]
      \ }}

NeoBundleLazy 'alpacatc/unite-rails_best_practices', {
      \ 'depends' : 'Shougo/unite.vim',
      \ 'build' : {
      \    'mac': 'gem install rails_best_practices',
      \    'unix': 'gem install rails_best_practices',
      \ },
      \ 'autoload': {
      \   'unite_sources': 'rails_best_practices'
      \ }}

NeoBundleLazy 'taka84u9/vim-ref-ri', {
      \ 'depends': ['Shougo/unite.vim', 'thinca/vim-ref'],
      \ 'autoload': { 'filetypes': g:my.ft.ruby_files } }

NeoBundleLazy 'alpacatc/neorspec.vim', {
      \ 'depends' : ['alpacatc/vim-rails', 'tpope/vim-dispatch'],
      \ 'autoload' : {
      \   'commands' : ['RSpec', 'RSpecAll', 'RSpecCurrent', 'RSpecNearest', 'RSpecRetry']
      \ }}

NeoBundleLazy 'alpacatc/alpaca_tags', {
      \ 'depends': 'Shougo/vimproc',
      \ 'autoload' : {
      \   'commands': ['AlpacaTagsUpdate', 'AlpacaTagsSet', 'AlpacaTagsBundle']
      \ }}

" }}}

AlpacaTags

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

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

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

設定次第では、Rubyに限らず全ての言語に対応します。 Gemfile更新のタイミング、ファイル保存のタイミングでコマンドを実行すれば、 いつでも新鮮なtagsを使うことが出来ます。

  • :AlpacaTagsUpdate
    • Git管理化にてtagsを生成します。
  • :AlpacaTagsBundle
    • Gemfileからgem用のtagsを生成します。
  • :AlpacaTagsSet
    • 生成したtagsを読み込みます。

オススメの設定

vim-endwise

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

ruby以外にも、幾つかの言語で対応しているのでオススメのプラグインです。

オススメ?の設定

ruby-matchit

vimには、対になる文字の上で%を押す事で、対応する()や{}を移動する機能が備わっています。 ruby-matchitは、rubyでよく使うdef...endなども%で移動出来るようにカスタマイズします。 あってもいいけど、なくても良いかな。というような機能ですが。 設定は不要です

補完環境を設定。

neocomplete / neosnippet

今回一番オススメするプラグインです。 neocompleteはShougoさんが作られた有名な補完プラグインですが、snippetsと組み合わせると素晴らしいパフォーマンスを出すことは以外と知られていません。

NeoComplete

言わずもがな、日本人Vimmerのほとんどが使っているNeoComplcache。

さよならNeoComplcache、そしてNeoCompleteへ! Shougoさんは常に最先端を走っています。

内部でLuaを使用して、Vim本体にもパッチを当てて、まさにNeoとなった新しい高速補完システムを使いましょう。 誰か、インストールのまとめ記事を書いていないかな?

NeoComplete GitHub

neosnippet

snippets補完は、入力中の文字に対して予め容易された一連の処理を展開する補完です。 これは、一度使ってみないとなかなかありがたみが分からないかも知れません。

Rspec demo

オススメの設定

実はNeoSnippetでは、.snip内でinclude構文を使用したり、NeoSnippetSourceコマンドを使うことで 細かく読み込むファイルを指定出来ます。

僕の場合、Railsのcontroller/model/migration/view/rspecそれぞれで読み込むsnipを変えて、 ほぼ全てのメソッドを補完しています。

さらに、Capybaraなどを使う場合は別途さらに読み込みます。 option_groups_from_collection_for_selectの引数の順番を、正しく覚えているレベルの人には不要なプラグインですね。

Switch

こいつがなかなか凄い。 :Switchをいうコマンドを実行すると、 true,false.blank?,.present?といったキーワードの切り換えを行えます。

正規表現、キーワード指定も可能。万歳! デフォルトでも十分使えるんですが、Vim力がある人docを読んでガンガンカスタマイズしちゃってください。

例えば、rspec用に追加するとこんな感じ

おすすめキーマップはnnoremap ! :Switch<CR>

vim-rails, rails.vim

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

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

Youtube

オススメの設定

ちなみに、autocmd User Rails/spec/models/*といった構文はもう使えなくなりました。 未だにこちらを使い人は、コチラを参照してください

unite, unite-rake, unite-rails

:Unite rakeで、Unite上にrakeコマンドを一覧表示させることが出来ます。

個人的に、unite-rakeはとても便利だと思っています。 自前で様々なRakeファイルを作って、ルートディレクトリに設置しておけばvim上から様々な処理を行う事が出来ます。 rubyistには結構可能性を秘めている使い方では無いでしょうか?

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

db/やrspecやroutes.rbなども一瞬。ヤダ、素敵。

オススメの設定は こちら

vim-ref, vim-ref-ri

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

Ref refe ArrayでArrayのメソッド一覧、詳細を見る事や Ref ri link_toでrails内のlink_toのリファレンスを見ることが出来るようになります。

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

これらは、cuiブラウザです。リファレンスの閲覧に必要なのでhomebrewなどでインストールしましょう。 brew install w3m or brew install lynx

  1. gemで、refeやriをインストールします

gem ins refe gem ins ri こちらは、既に入っているかと思いますが、、

  1. ( vimの設定を追加する )

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

オススメの設定

その他

vim-rspec, neorspec

vim-rspec

rspecのit...describeにシンタックスハイライトを追加します。 設定は不要です。

neorspec.vim

VimからRspecのテストを実行します。 細かい設定はこちら

まとめ

仕事を辞めたので、最近は割と時間が出来てきました。 Ruby用プラグインを作ったり、某会社でRoRのリモート開発をしたりしています。

東京の企業にインターン行きたいんだけど、Ruby系の企業はどこがあるんだろう? これ見ている企業人ちょっと教えてください。

さ、今回のvimのRuby環境のまとめが一助になればと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment