52

Is it possible to select an HTML tag's content in Vim?

For example:

<p>I am a silly butterfly</p>

I would like to select "I am a silly butterfly".

I know that you can use vi" to select text inside quotes, brackets, etc. The problem here is that the text inside the HTML tags is not really within anything that I can use the i function for.

3 Answers 3

88

You can use vit to visually select text in a tag. See

:help v_it
6
  • 2
    Perfect! Gonna write a post about this in my blog, I couldn't find anything on Google with "Vim selecting html tag contents" and others.
    – fholgado
    Aug 30, 2010 at 2:48
  • You can also substitute v with many other commands, I often use c to change; > and < to fix indentation.
    – davetapley
    Apr 19, 2012 at 17:24
  • 9
    @hobbes3: To include the tags in the selection, use vat. I think of it as in a tag and at as a tag. See :help at.
    – garyjohn
    Apr 26, 2013 at 19:07
  • 1
    Am I the only one whose vim selects the opening tag with vit? It's been bothering me for years and have no idea why Vim does that. May 3, 2015 at 5:09
  • 2
    Note that you can also use both multiple times, eg. vatat Jul 25, 2015 at 16:23
13

Here are the steps:

  1. Place the cursor on the tag.
  2. Enter Visual mode by pressing v.
  3. Select the inner tag block by pressing i+t (or a+t for outer tag block).

at a <tag> </tag> block (with tags)

it inner <tag> </tag> block

See more at "How to jump between matching HTML/XML tags?".

1

If the format is well indent like this,

<div>
  <p>
    I am a silly butterfly
  </p>
  <p>
    I am a silly butterfly
  </p>
</div>

You use can vim-indent-object plugin, and type vii

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .