Tip 1005 Printable Monobook Previous Next

created 2005 · complexity basic · author Jos van den Oever · version 5.7

There are several ways to deal with HTML entities.

Simple search & replace

This code allows you to escape your HTML entities with one shortcut key: Change (<, >, &) to (&lt;, &gt;, &amp;), or the reverse.

Note that this does not escape all characters that should be escaped, just the most common.

function HtmlEscape()
  silent s/&/\&amp;/eg
  silent s/</\&lt;/eg
  silent s/>/\&gt;/eg

function HtmlUnEscape()
  silent s/&lt;/</eg
  silent s/&gt;/>/eg
  silent s/&amp;/\&/eg

map <silent> <c-h> :call HtmlEscape()<CR>
map <silent> <c-u> :call HtmlUnEscape()<CR>

If you add this code to your vimrc, you can escape visually-selected HTML with ctrl-h, and unescape with ctrl-u.

Automagic escaping

There's also script that does this for you automagically when you read and write files, so you can view the characters, and write the codes, or vice versa: script#909.

Originally written for Java unicodes, but there is also a setting for html codes.

The script is for &nnn style encoding, not the html entities.

perl HTML::Entities

Note: Vim needs to compiled with the "perl" feature enabled for this to work

A slightly more complex solution that escape all characters is using perl, you will need perl and HTML-Parser

function! HTMLEncode()
perl << EOF
 use HTML::Entities;
 @pos = $curwin->Cursor();
 $line = $curbuf->Get($pos[0]);
 $encvalue = encode_entities($line);

function! HTMLDecode()
perl << EOF
 use HTML::Entities;
 @pos = $curwin->Cursor();
 $line = $curbuf->Get($pos[0]);
 $encvalue = decode_entities($line);

map <Leader>h :call HTMLEncode()<CR>
map <Leader>H :call HTMLDecode()<CR>

Go to the line and do \h or \H to check it out.


Can check it with:

.! php -r "echo htmlentities('<cword>');"


command Entites :call Entites() function Entities()

   silent s./À/À/eg
   silent s./Á/Á/eg
   silent s./Â/Â/eg
   silent s./Ã/Ã/eg
   silent s./Ä/Ä/eg
   silent s./Å/Å/eg
   silent s./Æ/Æ/eg
   silent s./Ç/Ç/eg
   silent s./È/È/eg
   silent s./É/É/eg
   silent s./Ê/Ê/eg
   silent s./Ë/Ë/eg
   silent s./Ì/Ì/eg
   silent s./Í/Í/eg
   silent s./Î/Î/eg
   silent s./Ï/Ï/eg
   silent s./Ð/Ð/eg
   silent s./Ñ/Ñ/eg
   silent s./Ò/Ò/eg
   silent s./Ó/Ó/eg
   silent s./Ô/Ô/eg
   silent s./Õ/Õ/eg
   silent s./Ö/Ö/eg
   silent s./Ø/Ø/eg
   silent s./Ù/Ù/eg
   silent s./Ú/Ú/eg
   silent s./Û/Û/eg
   silent s./Ü/Ü/eg
   silent s./Ý/Ý/eg
   silent s./Þ/Þ/eg
   silent s./ß/ß/eg
   silent s./à/à/eg
   silent s./á/á/eg
   silent s./â/â/eg
   silent s./ã/ã/eg
   silent s./ä/ä/eg
   silent s./å/å/eg
   silent s./æ/æ/eg
   silent s./ç/ç/eg
   silent s./è/è/eg
   silent s./é/é/eg
   silent s./ê/ê/eg
   silent s./ë/ë/eg
   silent s./ì/ì/eg
   silent s./í/í/eg
   silent s./î/î/eg
   silent s./ï/ï/eg
   silent s./ð/ð/eg
   silent s./ñ/ñ/eg
   silent s./ò/ò/eg
   silent s./ó/ó/eg
   silent s./ô/ô/eg
   silent s./õ/õ/eg
   silent s./ö/ö/eg
   silent s./ø/ø/eg
   silent s./ù/ù/eg
   silent s./ú/ú/eg
   silent s./û/û/eg
   silent s./ü/ü/eg
   silent s./ý/ý/eg
   silent s./þ/þ/eg
   silent s./ÿ/ÿ/eg


Community content is available under CC-BY-SA unless otherwise noted.