2014-07-10 21:05:51 -07:00
|
|
|
*usr_06.txt* For Vim version 7.4. Last change: 2009 Oct 28
|
|
|
|
|
|
|
|
VIM USER MANUAL - by Bram Moolenaar
|
|
|
|
|
|
|
|
Using 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.
|
|
|
|
|
|
|
|
|06.1| Switching it on
|
|
|
|
|06.2| No or wrong colors?
|
|
|
|
|06.3| Different colors
|
|
|
|
|06.4| With colors or without colors
|
|
|
|
|06.5| Printing with colors
|
|
|
|
|06.6| Further reading
|
|
|
|
|
|
|
|
Next chapter: |usr_07.txt| Editing more than one file
|
|
|
|
Previous chapter: |usr_05.txt| Set your settings
|
|
|
|
Table of contents: |usr_toc.txt|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
*06.1* Switching 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"
|
2015-10-17 07:25:53 -07:00
|
|
|
command in your |init.vim| file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
If you want syntax highlighting only when the terminal supports colors, you
|
2015-10-17 07:25:53 -07:00
|
|
|
can put this in your |init.vim| file: >
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
if &t_Co > 1
|
|
|
|
syntax enable
|
|
|
|
endif
|
|
|
|
|
|
|
|
If you want syntax highlighting only in the GUI version, put the ":syntax
|
2015-10-17 07:25:53 -07:00
|
|
|
enable" command in your |ginit.vim| file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
*06.2* No or wrong colors?
|
|
|
|
|
|
|
|
There can be a number of reasons why you don't see colors:
|
|
|
|
|
|
|
|
- Your terminal does not support colors.
|
|
|
|
Vim will use bold, italic and underlined text, but this doesn't look
|
|
|
|
very nice. You probably will want to try to get a terminal with
|
|
|
|
colors. For Unix, I recommend the xterm from the XFree86 project:
|
|
|
|
|xfree-xterm|.
|
|
|
|
|
|
|
|
- Your terminal does support colors, but Vim doesn't know this.
|
|
|
|
Make sure your $TERM setting is correct. For example, when using an
|
|
|
|
xterm that supports colors: >
|
|
|
|
|
|
|
|
setenv TERM xterm-color
|
|
|
|
<
|
|
|
|
or (depending on your shell): >
|
|
|
|
|
|
|
|
TERM=xterm-color; export TERM
|
|
|
|
|
|
|
|
< The terminal name must match the terminal you are using. If it
|
|
|
|
still doesn't work, have a look at |xterm-color|, which shows a few
|
|
|
|
ways to make Vim display colors (not only for an xterm).
|
|
|
|
|
|
|
|
- The file type is not recognized.
|
|
|
|
Vim doesn't know all file types, and sometimes it's near to impossible
|
|
|
|
to tell what language a file uses. Try this command: >
|
|
|
|
|
|
|
|
:set filetype
|
|
|
|
<
|
|
|
|
If the result is "filetype=" then the problem is indeed that Vim
|
|
|
|
doesn't know what type of file this is. You can set the type
|
|
|
|
manually: >
|
|
|
|
|
|
|
|
:set filetype=fortran
|
|
|
|
|
|
|
|
< To see which types are available, look in the directory
|
|
|
|
$VIMRUNTIME/syntax. For the GUI you can use the Syntax menu.
|
|
|
|
Setting the filetype can also be done with a |modeline|, so that the
|
|
|
|
file will be highlighted each time you edit it. For example, this
|
|
|
|
line can be used in a Makefile (put it near the start or end of the
|
|
|
|
file): >
|
|
|
|
|
|
|
|
# vim: syntax=make
|
|
|
|
|
|
|
|
< You might know how to detect the file type yourself. Often the file
|
|
|
|
name extension (after the dot) can be used.
|
|
|
|
See |new-filetype| for how to tell Vim to detect that file type.
|
|
|
|
|
|
|
|
- There is no highlighting for your file type.
|
|
|
|
You could try using a similar file type by manually setting it as
|
|
|
|
mentioned above. If that isn't good enough, you can write your own
|
|
|
|
syntax file, see |mysyntaxfile|.
|
|
|
|
|
|
|
|
|
|
|
|
Or the colors could be wrong:
|
|
|
|
|
|
|
|
- The colored text is very hard to read.
|
|
|
|
Vim guesses the background color that you are using. If it is black
|
|
|
|
(or another dark color) it will use light colors for text. If it is
|
|
|
|
white (or another light color) it will use dark colors for text. If
|
|
|
|
Vim guessed wrong the text will be hard to read. To solve this, set
|
|
|
|
the 'background' option. For a dark background: >
|
|
|
|
|
|
|
|
:set background=dark
|
|
|
|
|
|
|
|
< And for a light background: >
|
|
|
|
|
|
|
|
:set background=light
|
|
|
|
|
|
|
|
< Make sure you put this _before_ the ":syntax enable" command,
|
|
|
|
otherwise the colors will already have been set. You could do
|
|
|
|
":syntax reset" after setting 'background' to make Vim set the default
|
|
|
|
colors again.
|
|
|
|
|
|
|
|
- The colors are wrong when scrolling bottom to top.
|
|
|
|
Vim doesn't read the whole file to parse the text. It starts parsing
|
|
|
|
wherever you are viewing the file. That saves a lot of time, but
|
|
|
|
sometimes the colors are wrong. A simple fix is hitting CTRL-L. Or
|
|
|
|
scroll back a bit and then forward again.
|
|
|
|
For a real fix, see |:syn-sync|. Some syntax files have a way to make
|
|
|
|
it look further back, see the help for the specific syntax file. For
|
|
|
|
example, |tex.vim| for the TeX syntax.
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
*06.3* Different colors *:syn-default-override*
|
|
|
|
|
|
|
|
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
|
2015-10-17 07:25:53 -07:00
|
|
|
to your |init.vim| file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
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: >
|
|
|
|
|
2015-10-17 07:25:53 -07:00
|
|
|
!mkdir -p ~/.config/nvim/colors
|
2016-03-20 18:22:51 -07:00
|
|
|
!cp $VIMRUNTIME/colors/morning.vim ~/.config/nvim/colors/mine.vim
|
2014-07-10 21:05:51 -07:00
|
|
|
<
|
|
|
|
This is done from Vim, because it knows the value of $VIMRUNTIME.
|
|
|
|
|
|
|
|
2. Edit the color scheme file. These entries are useful:
|
|
|
|
|
|
|
|
term attributes in a B&W terminal
|
|
|
|
cterm attributes in a color terminal
|
|
|
|
ctermfg foreground color in a color terminal
|
|
|
|
ctermbg background color in a color terminal
|
|
|
|
gui attributes in the GUI
|
|
|
|
guifg foreground color in the GUI
|
|
|
|
guibg background 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.4* With 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.
|
|
|
|
|
|
|
|
*:syn-off*
|
|
|
|
If you want to stop highlighting completely use: >
|
|
|
|
|
|
|
|
:syntax off
|
|
|
|
|
|
|
|
This will completely disable syntax highlighting and remove it immediately for
|
|
|
|
all buffers.
|
|
|
|
|
|
|
|
*:syn-manual*
|
|
|
|
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.5* Printing with colors *syntax-printing*
|
|
|
|
|
|
|
|
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.6* Further reading
|
|
|
|
|
|
|
|
|usr_44.txt| Your own syntax highlighted.
|
|
|
|
|syntax| All the details.
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
|
|
|
|
Next chapter: |usr_07.txt| Editing more than one file
|
|
|
|
|
|
|
|
Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl:
|