43

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.

68

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

:help v_it
  • 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 '10 at 2:48
  • You can also substitute v with many other commands, I often use c to change; > and < to fix indentation. – dukedave Apr 19 '12 at 17:24
  • 8
    @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 '13 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. – Jonathan Dumaine May 3 '15 at 5:09
  • 2
    Note that you can also use both multiple times, eg. vatat – user1338062 Jul 25 '15 at 16:23
6

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?".

0

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.