basyura's blog

あしたになったらほんきだす。

unite-rails.vim

https://github.com/basyura/unite-rails
(unite-history をパク参考にしました)


前々から作りたいと思いつつ、いい案が浮かばないまま放置していたけど作り始めてみる。
動作は至って普通の unite で、カレントディレクトリが rails プロジェクト内であれば「models」「controllers」「views」などにあるファイル一覧を表示して選択できる。

:Unite rails/model
:Unite rails/controller
:Unite rails/view
:Unite rails/helper
:Unite rails/mailer
:Unite rails/lib
:Unite rails/db
:Unite rails/config
:Unite rails/log
:Unite rails/javascript
:Unite rails/stylesheet

たとえば、rails プロジェクト内で

:Unite rails/model

とすると、「RailsRoot/app/models」配下のファイル一覧が表示される。「model」か「models」かで迷ったけど、複数形でないディレクトリ名もあるので単数で統一することにした。

source の数が多いので、一部だけマッピングして汎用的に使えるマップを定義するかだろうか。

nnoremap <C-x> :Unite rails/

rails アプリをあまり書いたことが無いのが難点だけど、ちょいアプリを書いてみた感じではそれなりに使えるのではないかと思う。
rails.vim の gf と :R が便利すぎるので、これの補助ツールとして使う感じ。

RailsRoot の判定方法が雑なんだけど、rails.vim がどう判定しているのかよく分からなかった。そのうちなんとかしたいけど、そんなに実害はないのではないかと思う。

rake db:migrate

rails g controller Hoge

といったコマンドとその履歴を扱えるようにしたいのだけど、どうしたものか。