fork from http://www.vim.org/scripts/script.php?script_id=4770