emmet logo

Emmet.vim Tutorial

Emmet.vim tutorial originally published in the official github repo for emmet-vim.

Expand an Abbreviation

Type the abbreviation as div>p#foo$*3>a and type Ctrl+y ,.


    <div>
        <p id="foo1">
            <a href=""></a>
        </p>
        <p id="foo2">
            <a href=""></a>
        </p>
        <p id="foo3">
            <a href=""></a>
        </p>
    </div>
  

Wrap with an Abbreviation

Write as below.


    test1
    test2
    test3
  

Then do visual select(line wise with shift+V) and type Ctrl+y ,.

Once you get to the Tag: prompt, type ul>li*.


    <ul>
        <li>test1</li>
        <li>test2</li>
        <li>test3</li>
    </ul>
  

If you type a tag, such as <blockquote>, then you'll see the following:


    <blockquote>
        test1
        test2
        test3
    </blockquote>
  

Balance a Tag Inward

type Ctrl+y d in insert mode.

Balance a Tag Outward

type Ctrl+y D in insert mode.

Go to the Next Edit Point

type Ctrl+y n in insert mode.

Go to the Previous Edit Point

type Ctrl+y N in insert mode.

Update an <img />’s Size

Move cursor to the img tag.


    <img src="foo.png" />
  

Type Ctrl+y i on img tag


    <img src="foo.png" width="32" height="48" />
  

Merge Lines

select the lines, which include <li>


    <ul>
    	<li class="list1"></li>
    	<li class="list2"></li>
    	<li class="list3"></li>
    </ul>
  

and then type Ctrl+y m


    <ul>
    	<li class="list1"></li><li class="list2"></li><li class="list3"></li>
    </ul>
  

Remove a Tag

Move cursor in block


    <div class="foo">
    	<a>cursor is here</a>
    </div>
  

Type Ctrl+y k in insert mode.


    <div class="foo">
    
    </div>
  

And type Ctrl+y k in there again.

Split/Join Tag

Move the cursor inside block


    <div class="foo">
    	cursor is here
    </div>
  

Type Ctrl+y j in insert mode.


    <div class="foo"/>
  

And then type Ctrl+y j in there again.


    <div class="foo">
    </div>
  

Toggle Comment

Move cursor inside the block


    <div>
    	hello world
    </div>
  

Type Ctrl+y / in insert mode.


    <!-- <div>
    	hello world
    </div> -->
  

Type Ctrl+y / in there again.


    <div>
    	hello world
    </div>
  

Make an anchor from a URL

Move cursor to URL


    http://www.google.com/
  

Type Ctrl+y a


    <a href="http://www.google.com/">Google</a>
  

Make some quoted text from a URL

Move cursor to the URL


    http://github.com/
  

Type Ctrl+y A


    <blockquote class="quote">
    	<a href="http://github.com/">Secure source code hosting and collaborative development - GitHub</a><br />
    	<p>How does it work? Get up and running in seconds by forking a project, pushing an existing repository...</p>
    	<cite>http://github.com/</cite>
    </blockquote>
  

Installing emmet.vim for the language you are using


    # cd ~/.vim
    # unzip emmet-vim.zip
  

Or if you are using pathogen.vim:


    # cd ~/.vim/bundle # or make directory
    # unzip /path/to/emmet-vim.zip
  

Or if you get the sources from the repository:


    # cd ~/.vim/bundle # or make directory
    # git clone http://github.com/mattn/emmet-vim.git
  

Enable emmet.vim for the language you are using.

You can customize the behavior of the languages you are using.


    # cat >> ~/.vimrc
    let g:user_emmet_settings = {
    \  'php' : {
    \    'extends' : 'html',
    \    'filters' : 'c',
    \  },
    \  'xml' : {
    \    'extends' : 'html',
    \  },
    \  'haml' : {
    \    'extends' : 'html',
    \  },
    \}