Vim Tips Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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