Vim Tips Wiki

Duplicate tip

This tip is very similar to the following:

These tips need to be merged – see the merge guidelines.

Tip 111 Printable Monobook Previous Next

created 2001 · complexity intermediate · author Aric Blumer · version 6.0

I have found it undesirable to use :hardcopy directly because it uses the current syntax highlighting to determine how to print the text. For example, I like to print comments in italics, but I don't like italic fonts on the screen. This tip will show you how to set up a colorscheme for printing and use it only when you print. This assumes that you are already using a colorscheme.

I copied an existing colorscheme to ~/.vim/colors/print.vim, and changed all the lines like this:

highlight Normal ctermbg=DarkGrey ctermfg=White guifg=White guibg=grey20

to this:

highlight clear Normal

Then I set the syntax groups how I wanted them to be printed on the printer:

highlight Comment term=italic cterm=italic gui=italic
highlight Constant term=bold cterm=bold gui=bold

I then defined the following command and function in my vimrc:

command! -nargs=* Hardcopy call DoMyPrint('<args>')
function DoMyPrint(args)
  let colorsave=g:colors_name
  color print
  exec 'hardcopy '.a:args
  exec 'color '.colorsave

After this is complete, you can do (use uppercase 'H'):

:Hardcopy > /tmp/

or just