If you want to be able to print to printer and file, place this snippet in your vimrc:
let &printexpr="(v:cmdarg=='' ? ". \"system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice)". \". ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error". \" : system('mv '.v:fname_in.' '.v:cmdarg) + v:shell_error)"
Then you can print to file by issuing:
or to printer by just issuing:
So far this could be considered a bit insecure, as the filename isn't escaped at all. Probably fnameescape or something like that should be used.