How do I insert ERB-tags with Vim?
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:
- Install the rails.vim plugin if it isn't already, and open an ERB document. Vim should recognize it as a
eruby
filetype. - If it doesn't use
:set filetype=eruby
Return to make Vim see things your way. - Visually select some text you want to wrap with the ERB tags using v or V.
- Press S= or S-. (That's capital S)
- 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):
- Press Ctrl + s and = afterwards to insert
<%= %>
block - Press Ctrl + s and - afterwards to insert
<% -%>
block - 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.
jriff
Updated on June 12, 2022Comments
-
jriff almost 2 years
How do I insert
<% %>
in Vim? I have rails.vim. -
jriff over 13 yearsYeah, 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 about 12 yearsI 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 almost 12 yearsThe visual mode shortcut has changed from s to S
-
Jeremy Mack almost 12 yearsIn terminal vim the mapping is
ctrl+g
s
followed by the surround key. -
jjnevis over 11 yearsFurther 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 over 10 yearsWarning: Ctrl+s can result in this: stackoverflow.com/questions/3419820/…
-
André Herculano over 9 yearsI'm using vim-bootstrap.com and, in my case, in insert mode the trigger was capital S instead.
-
Jose Elera about 5 yearsI can second this answer, you will need
vim-rails
,vim-surround
andvim-ragtag
.