This is pretty close to what I'm looking for. The 2html.vim syntax is pretty easy to figure out, so customizing it to produce the kind of output I desire shouldn't be too difficult. Large files take a good deal of time to colorize, but that's the case in normal vim. The only downsides I can see to this method are that it requires an extra file to be created (it's running in a separate vim window) and it's pretty heavy on the old resources. Wrapping it in a module shouldn't be too difficult, though.