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


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, 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
  • 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, 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

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


If the format is well indent like this,

    I am a silly butterfly
    I am a silly butterfly

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

  • This is exactly what I've been looking for. Thanks!
    – Ben Davis
    Feb 17, 2020 at 16:49

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.