06Using syntax highlighting

Black and white text is boring. With colors your file comes to life. This not only looks nice, it also speeds up your work. Change the colors used for the different sorts of text. Print your text, with the colors you see on the screen.

    Table of contents

  1. Switching it on
  2. No or wrong colors?
  3. Different colors
  4. With colors or without colors
  5. Printing with colors
  6. Further reading

06.1Switching it on

It all starts with one simple command:

:syntax enable

That should work in most situations to get color in your files. Vim will automagically detect the type of file and load the right syntax highlighting. Suddenly comments are blue, keywords brown and strings red. This makes it easy to overview the file. After a while you will find that black&white text slows you down!

If you always want to use syntax highlighting, put the :syntax enable command in your vimrc file.

If you want syntax highlighting only when the terminal supports colors, you can put this in your vimrc file:

if &t_Co > 1
   syntax enable
endif

If you want syntax highlighting only in the GUI version, put the ":syntax enable" command in your gvimrc file.

06.2No or wrong colors?

There can be a number of reasons why you don't see colors:

Or the colors could be wrong:

06.3Different colors

If you don't like the default colors, you can select another color scheme. In the GUI use the Edit/Color Scheme menu. You can also type the command:

:colorscheme evening

evening is the name of the color scheme. There are several others you might want to try out. Look in the directory $VIMRUNTIME/colors.

When you found the color scheme that you like, add the :colorscheme command to your vimrc file.

You could also write your own color scheme. This is how you do it:

  1. Select a color scheme that comes close. Copy this file to your own Vim directory. For Unix, this should work:

    !mkdir ~/.vim/colors
    !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim

    This is done from Vim, because it knows the value of $VIMRUNTIME.

  2. Edit the color scheme file. These entries are useful:

    termattributes in a B&W terminal
    ctermattributes in a color terminal
    ctermfgforeground color in a color terminal
    ctermbgbackground color in a color terminal
    guiattributes in the GUI
    guifgforeground color in the GUI
    guibgbackground color in the GUI

    For example, to make comments green:

    :highlight Comment ctermfg=green guifg=green

    Attributes you can use for cterm and gui are bold and underline. If you want both, use bold,underline. For details see the :highlight command.

  3. Tell Vim to always use your color scheme. Put this line in your vimrc:

    colorscheme mine

If you want to see what the most often used color combinations look like, use this command:

:runtime syntax/colortest.vim

You will see text in various color combinations. You can check which ones are readable and look nice.

06.4With colors or without colors

Displaying text in color takes a lot of effort. If you find the displaying too slow, you might want to disable syntax highlighting for a moment:

:syntax clear

When editing another file (or the same one) the colors will come back.

If you want to stop highlighting completely use:

:syntax off

This will completely disable syntax highlighting and remove it immediately for all buffers. See :syntax‑off for more details.

If you want syntax highlighting only for specific files, use this:

:syntax manual

This will enable the syntax highlighting, but not switch it on automatically when starting to edit a buffer. To switch highlighting on for the current buffer, set the syntax option:

:set syntax=ON

06.5Printing with colors

In the MS-Windows version you can print the current file with this command:

:hardcopy

You will get the usual printer dialog, where you can select the printer and a few settings. If you have a color printer, the paper output should look the same as what you see inside Vim. But when you use a dark background the colors will be adjusted to look good on white paper.

There are several options that change the way Vim prints:

'printdevice'
'printheader'
'printfont'
'printoptions'

To print only a range of lines, use Visual mode to select the lines and then type the command:

v100j:hardcopy

v starts Visual mode. 100j moves a hundred lines down, they will be highlighted. Then :hardcopy will print those lines. You can use other commands to move in Visual mode, of course.

This also works on Unix, if you have a PostScript printer. Otherwise, you will have to do a bit more work. You need to convert the text to HTML first, and then print it from a web browser.

Convert the current file to HTML with this command:

:TOhtml

In case that doesn't work:

:source $VIMRUNTIME/syntax/2html.vim

You will see it crunching away, this can take quite a while for a large file. Some time later another window shows the HTML code. Now write this somewhere (doesn't matter where, you throw it away later):

:write main.c.html

Open this file in your favorite browser and print it from there. If all goes well, the output should look exactly as it does in Vim. See 2html.vim for details. Don't forget to delete the HTML file when you are done with it.

Instead of printing, you could also put the HTML file on a web server, and let others look at the colored text.

06.6Further reading

Your own syntax highlighted” Your own syntax highlighted. syntax All the details.