I would have thought this is rather simple, but I don't get it done: I use gVim and would like to get the text as a PDF file. In other applications like Firefox the print dialog shows me available printers and I can choose to print directly to a PDF file. However, in Vim there is no such dialog and the file is just sent to the standard printer of the system.
I tried the following:
- I'm not able to make the "print-to-pdf" thing my standard way of printing via the printer window of Ubuntu.
:ha > fileconverts my file to a .ps file. That's nice, but .pdf would be nicer...
2 Answers
Vim will not show you the print dialog box. Instead, you can print to a PostScript file, open it in a PostScript viewer and print from there.
To print to a PostScript file from Vim:
:hardcopy > myfile.psYou can also convert PostScript to PDF using ps2pdf:
ps2pdf myfile.ps 6 Building on what others have already stated:
You can use the following single-line Vim command to create a PDF file:
:hardcopy > %.ps | !ps2pdf %.ps && rm %.psNote:
- The
%is shorthand for the current filename, soHelloWorld.Cwill print toHelloWorld.C.pdf - If you want to also retain the intermediate .ps file, simply omit the
&& rm %.ps, obtaining::hardcopy > %.ps | !ps2pdf %.ps
Additionally, to change the rendered font, set the printfont before executing the hardcopy command. For example, to select Courier 8:
:set printfont=Courier:h8Putting it all together, I decided to add the following to my .vimrc file so that I can simply execute the :HardcopyPdf command. This command can also operate on a selected range within a file:
" Select the font for the hardcopy
set printfont=Courier:h8
command! -range=% HardcopyPdf <line1>,<line2> hardcopy > %.ps | !ps2pdf %.ps && rm %.ps && echo 'Created: %.pdf' 1