How do I insert ERB-tags with Vim?

10,069

Solution 1

I've been using the surround.vim plugin for a long time, but not the rails.vim plugin. Turns out that the rails.vim plugin is adding functionality to surround.vim, or is piggy-backing on it. Either way, I got it working this-a way:

  1. Install the rails.vim plugin if it isn't already, and open an ERB document. Vim should recognize it as a eruby filetype.
  2. If it doesn't use :set filetype=eruby Return to make Vim see things your way.
  3. Visually select some text you want to wrap with the ERB tags using v or V.
  4. Press S= or S-. (That's capital S)
  5. The selected text should be wrapped in a <%= %> or <%- %> block.

I just confirmed this works in column-selection mode too.

This is documented in the rails.vim help: from the command-mode search for :h rails-surround. And if you don't have the help available for rails.vim, it's because the instructions weren't followed for installing it:

:helptags ~/.vim/doc

The rails.vim plugin requires the surround.vim plugin also, so that has to be previously installed. I use that plugin's functionality at least once a minute when I'm editing. It rocks.

Solution 2

It is also possible to insert erb tags in INSERT mode (using rails.vim and surround.vim plugins):

  1. Press Ctrl + s and = afterwards to insert <%= %> block
  2. Press Ctrl + s and - afterwards to insert <% -%> block
  3. Press Ctrl + s and # afterwards to insert <%# %> block

Solution 3

For surroundings in the erb views you might need Tim Pope's ragtag. It can handle different erb specific surroundings. Check out the documentation.

Share:
10,069
jriff
Author by

jriff

Updated on June 12, 2022

Comments

  • jriff
    jriff almost 2 years

    How do I insert <% %> in Vim? I have rails.vim.

  • jriff
    jriff over 13 years
    Yeah, thanks for the intro but I do know vim :-) I was looking for a shortcut. Does anyone else know? I can't imagine that rails.vim doesn't have it - I just can't find any documentation for it anywhere.
  • Anthony Panozzo
    Anthony Panozzo about 12 years
    I just saw also that Ctrl + s, Ctrl + s, = will result in a new ERB tag being opened up for a multiline add, at least with my current configuration. As expected, you can do this for the - and # as well.
  • meleyal
    meleyal almost 12 years
    The visual mode shortcut has changed from s to S
  • Jeremy Mack
    Jeremy Mack almost 12 years
    In terminal vim the mapping is ctrl+g s followed by the surround key.
  • jjnevis
    jjnevis over 11 years
    Further to Anthony's comment: <C-s> <C-e> (in INSERT mode) will put in a <% * %><% end %> pair (on separate lines with * denoting cursor position).
  • PSkocik
    PSkocik over 10 years
    Warning: Ctrl+s can result in this: stackoverflow.com/questions/3419820/…
  • André Herculano
    André Herculano over 9 years
    I'm using vim-bootstrap.com and, in my case, in insert mode the trigger was capital S instead.
  • Jose Elera
    Jose Elera about 5 years
    I can second this answer, you will need vim-rails, vim-surround and vim-ragtag.