rails.vim まとめ

id:higepon に『rails.el も rails.vim も知らなかったよ!もっと早く知ってたら生産性が三倍になっていたのに!(一部誇張』と云われたので、rails.vim について ひげぽん OSとか作っちゃうかMona- - rails.el まとめ に沿った形で簡単に紹介したいと思います。

インストール

  • 通常のインストール

http://www.vim.org/scripts/script.php?script_id=1567
から rails.zip をダウンロードし、~/.vim/ 以下に展開します

  • svn からのインストール

vba (vim のパッケージングシステム)を使うので vim7 以上限定の方法ですが

svn co http://svn.tpope.net/rails/vim/railsvim/ railsvim
cd railsvim
rake rails.vba
vim -c 'so %' rails.vba

でインストールできます。

使いそうな機能を抜粋

対応するファイルへの切替え

:R

:R で controller と view の切り替えが可能です。コントローラの場合、カーソル現在位置のメソッドに対応する view に飛んでくれます。

:Rmodel

対応する model へ飛んでくれます。たとえば、models/foo.rb なモデルには、foo_controller.rb や fixtures/foos.yml を編集中の時に、:Rmodel で自動で飛びます。また、

:Rmodel foo

と明示的にモデル名を引数にすることで、そのモデルに飛ぶことができます。

以下は :Rmodel のそれぞれ版です

  • :Rcontroller
  • :Rview
  • :Runittest
  • :Rmigration
  • などなどあるので :R[tab] すると一覧でみれます

テンプレートの partial を簡単に

rhtml 編集時に、visual モードで範囲選択して、:Rpartial でテンプレートの切り出し、保存を自動で行ってくれます。

メニューを開く

vim はメニューは使わないことになっています。使わないよね?

関連するファイルを開く

おなじみ魔法のコマンド gf で対応するファイルが開けます。
たとえばソース中で

layout 'hatena'

のところでカーソルをあてて gf するとviews/layout/hatena.rhtml に飛びます。
またもちろん Foo にカーソルをあてて gf で models/foo.rb に飛びますし、ModelController にカーソルを当てて gf で controllers/model_controller.rb に飛びます。

ログを開く

:Rlog で split された window にログを表示できます。しかも最新だとカラーリングまでされます。また Exception 部分が折りたたまれて表示されるため、長い例外でも見たいときだけ折りたたみを解除して見れます。でも vim だと重くて無理です。gvim だと良いかもしれません。

httpd(script/server) の操作

:Rserver で起動できます。でも screen が必須です。

現在見ている action や view をブラウザで開く

:Rpreview で開けます

API document

:Rdoc で Rails のドキュメントは表示はできますが、メソッド検索はできません。htmlhelp を使うのでいらないよね!(負け惜しみ)

SQL Console

:Rdbext で実行できます。dbext.vim が必要です。が、別 screen で mysql などを直接使った方が便利です。vimsql 書きたいときは mysql のコンソールから edit と打つと環境変数 EDITOR のエディタで編集できますし。

略語展開 ( abbrev )

 render_text 

とか打つと、

render :text =>

などと展開されます。よく使う abbrev のコマンドは id:moro さん作の moroの日記 - Rails.vimのチートシート を見ると一発でわかって便利です。

もっと詳しくいろいろ知りたい

まだまだたくさんの機能があります。

:help rails.vim

で優しく詳しくほぼ全機能載っているので、vimrails 使いは一読をオススメします。
また、83's : rails.vimのいい加減な翻訳rails.vim の翻訳(すばらしい!)も載っているので、参照すると良いでしょう。