136 lines
5.4 KiB
Markdown
136 lines
5.4 KiB
Markdown
|
# rails.vim
|
||
|
|
||
|
Remember when everybody and their mother was using TextMate for Ruby on
|
||
|
Rails development? Well if it wasn't for rails.vim, we'd still be in
|
||
|
that era. So shut up and pay some respect. And check out these
|
||
|
features:
|
||
|
|
||
|
* Easy navigation of the Rails directory structure. `gf` considers
|
||
|
context and knows about partials, fixtures, and much more. There are
|
||
|
two commands, `:A` (alternate) and `:R` (related) for easy jumping
|
||
|
between files, including favorites like model to schema, template to
|
||
|
helper, and controller to functional test. Commands like `:Emodel`,
|
||
|
`:Eview`, `:Econtroller`, are provided to `:edit` files by type, along
|
||
|
with `S`, `V`, and `T` variants for `:split`, `:vsplit`, and
|
||
|
`:tabedit`. Throw a bang on the end (`:Emodel foo!`) to automatically
|
||
|
create the file with the standard boilerplate if it doesn't exist.
|
||
|
`:help rails-navigation`
|
||
|
|
||
|
* Enhanced syntax highlighting. From `has_and_belongs_to_many` to
|
||
|
`distance_of_time_in_words`, it's here. For easy completion of these
|
||
|
long method names, `'completefunc'` is set to enable syntax based
|
||
|
completion on CTRL-X CTRL-U.
|
||
|
|
||
|
* Interface to rake. Use `:Rake` to run the current test, spec, or
|
||
|
feature. Use `:.Rake` to do a focused run of just the method,
|
||
|
example, or scenario on the current line. `:Rake` can also run
|
||
|
arbitrary migrations, load individual fixtures, and more.
|
||
|
`:help rails-rake`
|
||
|
|
||
|
* Interface to the `rails` command. Generally, use `:Rails console` to
|
||
|
call `rails console`. Many commands have wrappers with additional features:
|
||
|
`:Rgenerate controller Blog` generates a blog controller and loads the
|
||
|
generated files into the quickfix list, and `:Rrunner` wraps `rails runner`
|
||
|
and doubles as a direct test runner. `:help rails-scripts`
|
||
|
|
||
|
* Partial and concern extraction. In a view, `:Rextract {file}`
|
||
|
replaces the desired range (typically selected in visual line mode)
|
||
|
with `render '{file}'`, which is automatically created with your
|
||
|
content. In a model or controller, a concern is created, with the
|
||
|
appropriate `include` declaration left behind.
|
||
|
`:help rails-:Rextract`
|
||
|
|
||
|
* Fully customizable. Define "projections" at the global, app, or gem
|
||
|
level to define navigation commands and override the alternate file,
|
||
|
default rake task, syntax highlighting, abbreviations, and more.
|
||
|
`:help rails-projections`.
|
||
|
|
||
|
* Integration with other plugins. If
|
||
|
[dbext.vim](http://www.vim.org/scripts/script.php?script_id=356) is
|
||
|
installed, it will be transparently configured to reflect
|
||
|
`database.yml`. Users of
|
||
|
[abolish.vim](https://github.com/tpope/vim-abolish) get pluralize and
|
||
|
tableize coercions, and users of
|
||
|
[bundler.vim](https://github.com/tpope/vim-bundler) get a smattering of
|
||
|
features. `:help rails-integration`
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
If you don't have a preferred installation method, I recommend
|
||
|
installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
|
||
|
then simply copy and paste:
|
||
|
|
||
|
cd ~/.vim/bundle
|
||
|
git clone git://github.com/tpope/vim-rails.git
|
||
|
git clone git://github.com/tpope/vim-bundler.git
|
||
|
|
||
|
You don't strictly need [bundler.vim][], but it helps.
|
||
|
|
||
|
Once help tags have been generated, you can view the manual with
|
||
|
`:help rails`.
|
||
|
|
||
|
[bundler.vim]: https://github.com/tpope/vim-bundler
|
||
|
|
||
|
## FAQ
|
||
|
|
||
|
> I installed the plugin and started Vim. Why does only the `:Rails`
|
||
|
> command exist?
|
||
|
|
||
|
This plugin cares about the current file, not the current working
|
||
|
directory. Edit a file from a Rails application.
|
||
|
|
||
|
> I opened a new tab. Why does only the `:Rails` command exist?
|
||
|
|
||
|
This plugin cares about the current file, not the current working
|
||
|
directory. Edit a file from a Rails application. You can use the `:RT`
|
||
|
family of commands to open a new tab and edit a file at the same time.
|
||
|
|
||
|
> Can I use rails.vim to edit Rails engines?
|
||
|
|
||
|
It's not supported, but if you `touch config/environment.rb` in the root
|
||
|
of the engine, things should mostly work.
|
||
|
|
||
|
> Can I use rails.vim to edit other Ruby projects?
|
||
|
|
||
|
I wrote [rake.vim](https://github.com/tpope/vim-rake) for exactly that
|
||
|
purpose. It activates for any project with a `Rakefile` that's not a
|
||
|
Rails application.
|
||
|
|
||
|
> What Rails versions are supported?
|
||
|
|
||
|
All of them. A few features like syntax highlighting tend to reflect the
|
||
|
latest version only.
|
||
|
|
||
|
> Rake is slow. How about making `:Rake` run
|
||
|
> `testrb`/`rspec`/`cucumber` directly instead of `rake`?
|
||
|
|
||
|
Well then it wouldn't make sense to call it `:Rake`, now, would it?
|
||
|
Maybe one day I'll add a separate `:Run` command or something. In the
|
||
|
meantime, here's how you can set up `:make` to run the current test:
|
||
|
|
||
|
autocmd FileType cucumber compiler cucumber | setl makeprg=cucumber\ \"%:p\"
|
||
|
autocmd FileType ruby
|
||
|
\ if expand('%') =~# '_test\.rb$' |
|
||
|
\ compiler rubyunit | setl makeprg=testrb\ \"%:p\" |
|
||
|
\ elseif expand('%') =~# '_spec\.rb$' |
|
||
|
\ compiler rspec | setl makeprg=rspec\ \"%:p\" |
|
||
|
\ else |
|
||
|
\ compiler ruby | setl makeprg=ruby\ -wc\ \"%:p\" |
|
||
|
\ endif
|
||
|
autocmd User Bundler
|
||
|
\ if &makeprg !~# 'bundle' | setl makeprg^=bundle\ exec\ | endif
|
||
|
|
||
|
## Self-Promotion
|
||
|
|
||
|
Like rails.vim? Follow the repository on
|
||
|
[GitHub](https://github.com/tpope/vim-rails) and vote for it on
|
||
|
[vim.org](http://www.vim.org/scripts/script.php?script_id=1567). And if
|
||
|
you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
|
||
|
[Twitter](http://twitter.com/tpope) and
|
||
|
[GitHub](https://github.com/tpope).
|
||
|
|
||
|
## License
|
||
|
|
||
|
Copyright (c) Tim Pope. Distributed under the same terms as Vim itself.
|
||
|
See `:help license`.
|