rendered paste body>$ cat ~/.vim/ftplugin/html.vim
" first let's be sure that % is not a valid comment string for this filetype
setlocal comments-=:%
" make sure there's no spaces after these, hmm?
:imap <buffer> ;; <ESC>/%%%<CR>3s
:nmap <buffer> ;; /%%%<CR>3s
"" buffer silent added to limit these mappings to those buffers for which they
"" are called as html/php ftplugins
"------insert mode mappings
imap <buffer> <silent> <localleader>dv <C-O>mz<div id="%%%"><CR>%%%<CR></div>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>dc <C-O>mz<div class="%%%"><CR>%%%<CR></div>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>p <C-O>mz<p>%%%</p>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>sp <C-O>mz<span class="%%%">%%%</span>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h1 <C-O>mz<h1>%%%</h1>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h2 <C-O>mz<h2>%%%</h2>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h3 <C-O>mz<h3>%%%</h3>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h4 <C-O>mz<h4>%%%</h4>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h5 <C-O>mz<h5>%%%</h5>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>h6 <C-O>mz<h6>%%%</h6>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>an <C-O>mz<a id="%%%">%%%</a>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>ah <C-O>mz<a href="%%%">%%%</a>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>bo <C-O>mz<b>%%%</b> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>it <C-O>mz<i>%%%</i> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>st <C-O>mz<strong>%%%</strong> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>em <C-O>mz<em>%%%</em> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>ul <C-O>mz<ul><CR>%%%<CR></ul>%%%<ESC>'z;;<localleader>li
imap <buffer> <silent> <localleader>ol <C-O>mz<ol><CR>%%%<CR></ol>%%%<ESC>'z;;<localleader>li
imap <buffer> <silent> <localleader>li <C-O>mz<li>%%%</li><CR>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>dl <C-O>mz<dl><CR>%%%<CR></dl>%%%<ESC>'z;;<localleader>dt
imap <buffer> <silent> <localleader>dd <C-O>mz<dd>%%%</dd><CR>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>dt <C-O>mz<dt>%%%</dt><CR>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>tabl <C-O>mz<table id="%%%" class="%%%" cellpadding="%%%" cellspacing="%%%" border="%%%"><CR><tbody><CR>%%%<CR></tbody><CR></table>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>td <C-O>mz<td>%%%</td><CR>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>tr <C-O>mz<tr><CR>%%%<CR></tr>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>th <C-O>mz<th>%%%</th>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>cap <C-O>mz<caption>%%%</caption>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>form <form method="" action="" enctype="x-www-form-urlencoded"><CR><input type="reset" value="Clear Form" name="reset"> <input type="submit" value="Submit" name="submit"><CR></form><ESC>kko
imap <buffer> <silent> <localleader>fs <C-O>mz<fieldset><CR><legend>%%%</legend><CR>%%%<CR></fieldset>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>lb <C-O>mz<label for="%%%">%%%</label>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>ipte <input class="" type="text" value="" name="" size="" maxlength=""><ESC>12F"a
imap <buffer> <silent> <localleader>ipta <textarea class="" name="" rows="" cols=""></textarea><ESC>8F"a
imap <buffer> <silent> <localleader>op <option></option><ESC>F>a
imap <buffer> <silent> <localleader>add <address></address><ESC>F>a
imap <buffer> <silent> <localleader>ac <acronym title=""></acronym><ESC>F"i
imap <buffer> <silent> <localleader>ab <abbr title=""></abbr><ESC>F"i
imap <buffer> <silent> <localleader>bl <C-O>mz<blockquote><CR>%%%<CR></blockquote>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>q <q cite=""></q><ESC>F>a
imap <buffer> <silent> <localleader>tt <C-O>mz<tt>%%%</tt>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>pre <pre><CR></pre><ESC>?><CR>a
imap <buffer> <silent> <localleader>sup <C-O>mz<sup>%%%</sup> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>sub <C-O>mz<sub>%%%</sub> %%%<ESC>'z;;
imap <buffer> <silent> <localleader>del <del cite="" title="" datetime=""></del><ESC>3F"i
imap <buffer> <silent> <localleader>ins <ins cite="" title="" datetime=""></ins><ESC>3F"i
imap <buffer> <silent> <localleader>scr <C-O>mz<script type="text/javascript" src="%%%">%%%</script>%%%<ESC>'z;;
imap <buffer> <silent> <localleader>nos <noscript></noscript><ESC>F>a
imap <buffer> <silent> <localleader>sty <style type="text/css"><CR>@import "/res/style/FIXME.css";<CR></style><ESC>?FIXME<CR>ve
imap <buffer> <silent> <localleader>lsty <link rel="stylesheet" type="text/css" href="/res/style/FIXME.css"><ESC>?FIXME<CR>ve
imap <buffer> <silent> <localleader>ob <C-O>mz<object type="" data="" width="" height="" style="border:0;"><CR><param name="movie" value=""><CR><param name="loop" value="false"><CR><param name="menu" value="true"><CR><param name="quality" value="best"><CR><param name="bgcolor" value="#ffffff"><CR><!-- insert alternate content here --><CR></object><ESC>'zf"a
imap <buffer> <silent> <localleader>prm <param name="" value=""><ESC>3F"i
" NOTE: border="0" is not allowed for HTML 4.01 Strict -- use CSS class instead:
" .noBorder {border: 0;}
" or use:
" a img {border: 0;}
" to mark all link images borderless
imap <buffer> <silent> <localleader>img <C-O>mz<img src="%%%" width="%%%" height="%%%" alt="%%%"><ESC>'z;;
imap <buffer> <silent> <localleader>imi <C-O>mz<img id="%%%" src="%%%" width="%%%" height="%%%" alt="%%%"><ESC>'z;;
imap <buffer> <silent> <localleader>imc <C-O>mz<img class="%%%" src="%%%" width="%%%" height="%%%" alt="%%%"><ESC>'z;;
" ampersands are a pain
imap <buffer> <silent> <localleader>& &
imap <buffer> <silent> <localleader>- –
imap <buffer> <silent> <localleader>-- —
imap <buffer> <silent> <localleader>deg °
imap <buffer> <silent> <localleader>rsq ’
imap <buffer> <silent> <localleader>lsq ‘
imap <buffer> <silent> <localleader>rdq ”
imap <buffer> <silent> <localleader>ldq “
imap <buffer> <silent> <localleader>" "
"------normal mode mappings
nmap <buffer> <silent> ,mp ^i<p><ESC>A</p><ESC>^
nmap <buffer> <silent> ,hp a<p></p><ESC>bba
nmap <buffer> <silent> ,hx wbF<df>f<df>
nmap <buffer> <silent> ,ht wbi<tt><ESC>ea</tt><ESC>bb
nmap <buffer> <silent> ,hs wbi<strong><ESC>ea</strong><ESC>bb
nmap <buffer> <silent> ,hu wbi<u><ESC>ea</i><ESC>bb
nmap <buffer> <silent> ,hi wbi<i><ESC>ea</i><ESC>bb
nmap <buffer> <silent> ,he wbi<em><ESC>ea</em><ESC>bb
nmap <buffer> <silent> ,hb wbi<b><ESC>ea</b><ESC>bb
nmap <buffer> <silent> ,h6 _i<h6><ESC>A</h6><ESC>^
nmap <buffer> <silent> ,h5 _i<h5><ESC>A</h5><ESC>^
nmap <buffer> <silent> ,h4 _i<h4><ESC>A</h4><ESC>^
nmap <buffer> <silent> ,h3 _i<h3><ESC>A</h3><ESC>^
nmap <buffer> <silent> ,h2 _i<h2><ESC>A</h2><ESC>^
nmap <buffer> <silent> ,h1 _i<h1><ESC>A</h1><ESC>^
nmap <buffer> <silent> ,mh wbgueyei<<ESC>ea></<ESC>pa><ESC>bba
nmap <buffer> <silent> ,li ^i<li><Esc>A</li><Esc>^4l
nmap <buffer> <silent> ,dt _i<dt><ESC>A</dt><ESC>
nmap <buffer> <silent> ,dd _i<dd><ESC>A</dd><ESC>
nmap <buffer> <silent> ,op ^i<option><ESC>A</option><ESC>
nmap <buffer> <silent> ,lb I<label for=""><ESC>A</label><ESC>
nmap <buffer> <silent> ,ah _i<a href=""><ESC>A</a><ESC>
nmap <buffer> <silent> ,td _i<td><ESC>A</td><ESC>j
nmap <buffer> <silent> ,th _i<th><ESC>A</th><ESC>j
nmap <buffer> <silent> ,tr _O<tr><ESC>j==o</tr><ESC>
"------visual mode mappings
vmap <buffer> <silent> ;dc <ESC>`>a<CR></div><ESC>`<i<div class=""><CR><ESC>
vmap <buffer> <silent> ;dv <ESC>`>a<CR></div><ESC>`<i<div id=""><CR><ESC>
vmap <buffer> <silent> ;ul <ESC>`>a<CR></ul><ESC>`<i<ul><CR><ESC>
vmap <buffer> <silent> ;ol <ESC>`>a<CR></ol><ESC>`<i<ol><CR><ESC>
vmap <buffer> <silent> ;dl <ESC>`>a<CR></dl><ESC>`<i<dl><CR><ESC>
vmap <buffer> <silent> ;li <ESC>`>a</li><ESC>`<i<li><ESC>
vmap <buffer> <silent> ;al y<ESC>`>a/"></a><ESC>`<i<a href="http://<ESC>f>p
vmap <buffer> <silent> ;ah <ESC>`>a</a><ESC>`<i<a href=""><ESC>F"
vmap <buffer> <silent> ;at <ESC>`>a</a><ESC>`<i<a href="" target="_new"><ESC>3F"
vmap <buffer> <silent> ;ao <ESC>`>a</a><ESC>`<i<a href="" onClick="window.open(this); return false;"><ESC>3F"
vmap <buffer> <silent> ;ap <Esc>`>a</a></p><ESC>`<i<p><a href="http:///"><ESC>F/i
vmap <buffer> <silent> ;inp <ESC>`>a"></p><ESC>`<i<p><input type="text" size="20" maxlength="25" name="<ESC>o
vmap <buffer> <silent> ;sp <ESC>`>a</span><ESC>`<i<span class=""><ESC>hi
vmap <buffer> <silent> ;op <ESC>`>a</option><ESC>`<i<option><ESC>
vmap <buffer> <silent> ;bo <ESC>`>a</b><ESC>`<i<b><ESC>
vmap <buffer> <silent> ;st <ESC>`>a</strong><ESC>`<i<strong><ESC>
vmap <buffer> <silent> ;it <ESC>`>a</i><ESC>`<i<i><ESC>
vmap <buffer> <silent> ;em <ESC>`>a</em><ESC>`<i<em><ESC>
vmap <buffer> <silent> ;qw <ESC>`>a"<ESC>`<i"<ESC>
vmap <buffer> <silent> ;sup <ESC>`>a</sup><ESC>`<i<sup><ESC>
vmap <buffer> <silent> ;sub <ESC>`>a</sub><ESC>`<i<sub><ESC>
vmap <buffer> <silent> ;del <ESC>`>a</del><ESC>`<i<del cite="" title="" datetime=""><ESC>
vmap <buffer> <silent> ;ins <ESC>`>a</ins><ESC>`<i<ins cite="" title="" datetime=""><ESC>
" 'inner paragraph' such as when you need to wrap text already inside a <dd>...</dd> with <dd><p>...</p></dd>
vmap <buffer> <silent> ;ip <ESC>`>a</p><ESC>`<i<p><ESC>
vmap <buffer> <silent> <localleader>q <ESC>`>a</q><ESC>`<i<q><ESC>
vmap <buffer> <silent> ;tr <ESC>`>a<cr></tr><ESC>`<i<tr><CR><ESC>gvj==<ESC>
vmap <buffer> <silent> ;td <ESC>`>a</td><ESC>`<i<td><ESC>
vmap <buffer> <silent> ;th <ESC>`>a</th><ESC>`<i<th><ESC>
"------abbreviations
ab <buffer> <silent> dt4s <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
ab <buffer> <silent> dt4t <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
ab <buffer> <silent> dt4f <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
ab <buffer> <silent> dt32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
" be sure you know what you're doing before using xhtml -- neither IE6 nor IE7 support application/xhtml+xml content-type -at all-
ab <buffer> <silent> dtxh <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
ab <buffer> <silent> dtxt <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
ab <buffer> <silent> dtxf <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
ab <buffer> <silent> mctlat1 <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-1">
ab <buffer> <silent> mctutf <meta http-equiv="Content-Type" content="text/html; CHARSET=utf-8">
ab <buffer> <silent> mgen <meta name="generator" content="VIM - Vi IMproved, v7.0.42 http://www.vim.org/">
ab <buffer> <silent> lmade <link rev="made" href="http://www.madhousegraphics.com/">
ab <buffer> <silent> tpcs type="text/css"
ab <buffer> <silent> tpjs type="text/javascript"
"------- personalization -- put your own frequently typed company info here
ab <buffer> <silent> MHG MAD House Graphics
ab <buffer> <silent> mhgc madhousegraphics.com
ab <buffer> <silent> mhgw http://www.madhousegraphics.com/
" set this for the :TOhtml command for exporting files with the current syntax-highlighting colorscheme for viewing on the web
let html_use_css = 1
let html_ignore_folding = 1
" fix high utf-8 chars to html entities like “
" big thanks to jamessan in the #vim freenode channel for help figuring this out. sheesh.
" with dcraven and tpope for the assist on vim variable interpolation below, so I only have
" to change this in one place to get both the nmap and vmap consistent :D I realize the variable
" isn't all that, yet, but I've only filled it with what I run into regularly. the more problems
" I encounter, the bigger it'll get, but only as needed. Adjust accordingly. YMMV
let myentity = "–—“”‘’«»…ãáçêé¼½¾¿°"
nmap <buffer> <silent> <localleader>utf :.!perl -MHTML::Entities -Mutf8 -lne 'utf8::decode($_); print encode_entities($_, qq{<C-R>=g:myentity<CR>} );'<CR>
vmap <buffer> <silent> <localleader>utf :!perl -MHTML::Entities -Mutf8 -lne 'utf8::decode($_); print encode_entities($_, qq{<C-R>=g:myentity<CR>});'<CR>
"------END------
" vim600: set filetype=vim tw=0 :
" vim700: set nospell :
and then we have :
>$ cat ~/.vim/ftplugin/php.vim
" NOTE: switched to localleader since this will be an ftplugin. :help maplocalleader
" load my html shortcuts too because we'll probably use a lot of those
:runtime ftplugin/html.vim
:set wrap
" make sure there's no spaces after these, hmm?
:imap <buffer> ;; <ESC>/%%%<CR>3s
:nmap <buffer> ;; /%%%<CR>3s
" Automatic close char mapping
imap <buffer> <silent> {{ <CR>{<CR>}<ESC><Up>o
imap <buffer> <silent> [[ []<LEFT>
imap <buffer> <silent> (( ()<LEFT>
" let's make php a tad easier, shall we?
:imap <buffer> <silent> <localleader>??p <C-O>mz<?php %%% ?><ESC>'z;;
:imap <buffer> <silent> <localleader>get <C-O>mz$_GET['%%%']<ESC>'z;;
:imap <buffer> <silent> <localleader>post <C-O>mz$_POST['%%%']<ESC>'z;;
:imap <buffer> <silent> <localleader>serv <C-O>mz$_SERVER['%%%']<ESC>'z;;
:imap <buffer> <silent> <localleader>for <C-O>mzfor ( %%%; %%%; %%% )<CR>{<CR>%%%;<CR>}<CR><ESC>'z;;
:imap <buffer> <silent> <localleader>fore <C-O>mzforeach ( $%%% as $%%% => $%%% )<CR>{<CR>%%%;<CR>}<CR><ESC>'z;;
:imap <buffer> <silent> <localleader>whil <C-O>mzwhile ( %%% )<CR>{<CR>%%%;<CR>}<CR><ESC>'z;;
:imap <buffer> <silent> <localleader>if <C-O>mzif ( %%% )<CR>{<CR>%%%;<CR>}<CR><ESC>'z;;
:imap <buffer> <silent> <localleader>swit <C-O>mzswitch ( %%% )<CR>{<CR>case %%%;<CR>%%%;<CR>break;<CR>case %%%;<CR>%%%;<CR>break;<CR>default;<CR>%%%;<CR>break;<CR>}<CR><ESC>'z;;