xref: /vim-8.2.3635/runtime/doc/usr_06.txt (revision 113cb513)
1*usr_06.txt*	For Vim version 8.2.  Last change: 2021 Nov 07
2
3		     VIM USER MANUAL - by Bram Moolenaar
4
5			  Using syntax highlighting
6
7
8Black and white text is boring.  With colors your file comes to life.  This
9not only looks nice, it also speeds up your work.  Change the colors used for
10the different sorts of text.  Print your text, with the colors you see on the
11screen.
12
13|06.1|	Switching it on
14|06.2|	No or wrong colors?
15|06.3|	Different colors
16|06.4|	With colors or without colors
17|06.5|	Printing with colors
18|06.6|	Further reading
19
20     Next chapter: |usr_07.txt|  Editing more than one file
21 Previous chapter: |usr_05.txt|  Set your settings
22Table of contents: |usr_toc.txt|
23
24==============================================================================
25*06.1*	Switching it on
26
27It all starts with one simple command: >
28
29	:syntax enable
30
31That should work in most situations to get color in your files.  Vim will
32automagically detect the type of file and load the right syntax highlighting.
33Suddenly comments are blue, keywords brown and strings red.  This makes it
34easy to overview the file.  After a while you will find that black&white text
35slows you down!
36
37If you always want to use syntax highlighting, put the ":syntax enable"
38command in your |vimrc| file.
39
40If you want syntax highlighting only when the terminal supports colors, you
41can put this in your |vimrc| file: >
42
43	if &t_Co > 1
44	   syntax enable
45	endif
46
47If you want syntax highlighting only in the GUI version, put the ":syntax
48enable" command in your |gvimrc| file.
49
50==============================================================================
51*06.2*	No or wrong colors?
52
53There can be a number of reasons why you don't see colors:
54
55- Your terminal does not support colors.
56	Vim will use bold, italic and underlined text, but this doesn't look
57	very nice.  You probably will want to try to get a terminal with
58	colors.  For Unix, I recommend the xterm from the XFree86 project:
59	|xfree-xterm|.
60
61- Your terminal does support colors, but Vim doesn't know this.
62	Make sure your $TERM setting is correct.  For example, when using an
63	xterm that supports colors: >
64
65		setenv TERM xterm-color
66<
67	or (depending on your shell): >
68
69		TERM=xterm-color; export TERM
70
71<	The terminal name must match the terminal you are using.  If it
72	still doesn't work, have a look at |xterm-color|, which shows a few
73	ways to make Vim display colors (not only for an xterm).
74
75- The file type is not recognized.
76	Vim doesn't know all file types, and sometimes it's near to impossible
77	to tell what language a file uses.  Try this command: >
78
79		:set filetype
80<
81	If the result is "filetype=" then the problem is indeed that Vim
82	doesn't know what type of file this is.  You can set the type
83	manually: >
84
85		:set filetype=fortran
86
87<	To see which types are available, look in the directory
88	$VIMRUNTIME/syntax.  For the GUI you can use the Syntax menu.
89	Setting the filetype can also be done with a |modeline|, so that the
90	file will be highlighted each time you edit it.  For example, this
91	line can be used in a Makefile (put it near the start or end of the
92	file): >
93
94		# vim: syntax=make
95
96<	You might know how to detect the file type yourself.  Often the file
97	name extension (after the dot) can be used.
98	See |new-filetype| for how to tell Vim to detect that file type.
99
100- There is no highlighting for your file type.
101	You could try using a similar file type by manually setting it as
102	mentioned above.  If that isn't good enough, you can write your own
103	syntax file, see |mysyntaxfile|.
104
105
106Or the colors could be wrong:
107
108- The colored text is very hard to read.
109	Vim guesses the background color that you are using.  If it is black
110	(or another dark color) it will use light colors for text.  If it is
111	white (or another light color) it will use dark colors for text.  If
112	Vim guessed wrong the text will be hard to read.  To solve this, set
113	the 'background' option.  For a dark background: >
114
115		:set background=dark
116
117<	And for a light background: >
118
119		:set background=light
120
121<	Make sure you put this _before_ the ":syntax enable" command,
122	otherwise the colors will already have been set.  You could do
123	":syntax reset" after setting 'background' to make Vim set the default
124	colors again.
125
126- The colors are wrong when scrolling bottom to top.
127	Vim doesn't read the whole file to parse the text.  It starts parsing
128	wherever you are viewing the file.  That saves a lot of time, but
129	sometimes the colors are wrong.  A simple fix is hitting CTRL-L.  Or
130	scroll back a bit and then forward again.
131	For a real fix, see |:syn-sync|.  Some syntax files have a way to make
132	it look further back, see the help for the specific syntax file.  For
133	example, |tex.vim| for the TeX syntax.
134
135==============================================================================
136*06.3*	Different colors				*:syn-default-override*
137
138If you don't like the default colors, you can select another color scheme.  In
139the GUI use the Edit/Color Scheme menu.  You can also type the command: >
140
141	:colorscheme evening
142
143"evening" is the name of the color scheme.  There are several others you might
144want to try out.  Look in the directory $VIMRUNTIME/colors.
145
146When you found the color scheme that you like, add the ":colorscheme" command
147to your |vimrc| file.
148
149You could also write your own color scheme.  This is how you do it:
150
1511. Select a color scheme that comes close.  Copy this file to your own Vim
152   directory.  For Unix, this should work: >
153
154	!mkdir ~/.vim/colors
155	!cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim
156<
157   This is done from Vim, because it knows the value of $VIMRUNTIME.
158
1592. Edit the color scheme file.  These entries are useful:
160
161	term		attributes in a B&W terminal
162	cterm		attributes in a color terminal
163	ctermfg		foreground color in a color terminal
164	ctermbg		background color in a color terminal
165	gui		attributes in the GUI
166	guifg		foreground color in the GUI
167	guibg		background color in the GUI
168
169   For example, to make comments green: >
170
171	:highlight Comment ctermfg=green guifg=green
172<
173   Attributes you can use for "cterm" and "gui" are "bold" and "underline".
174   If you want both, use "bold,underline".  For details see the |:highlight|
175   command.
176
1773. Tell Vim to always use your color scheme.  Put this line in your |vimrc|: >
178
179	colorscheme mine
180
181If you want to see what the most often used color combinations look like, use
182this command: >
183
184	:runtime syntax/colortest.vim
185
186You will see text in various color combinations.  You can check which ones are
187readable and look nice. These aren't the only colors available to you though.
188You can specify #rrggbb hex colors and you can define new names for hex
189colors in |v:colornames| like so: >
190
191	let v:colornames['mine_red'] = '#aa0000'
192<
193If you are authoring a color scheme for others to use, it is important
194to define these colors only when they do not exist: >
195
196	call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep')
197
198This allows users of the color scheme to override the precise definition of
199that color prior to loading your color scheme. For example, in a |.vimrc|
200file:
201
202	runtime colors/lists/css_colors.vim
203	let v:colornames['your_red'] = v:colornames['css_red']
204	colorscheme yourscheme
205
206As a color scheme author, you should be able to rely on some color names for
207GUI colors. These are defined in `colors/lists/default.vim`. All such files
208found on the |'runtimepath'| are loaded each time the colorscheme command is
209run. A canonical list is provided by the vim distribution, which should
210include all X11 colors (previously defined in rgb.txt).
211
212==============================================================================
213*06.4*	With colors or without colors
214
215Displaying text in color takes a lot of effort.  If you find the displaying
216too slow, you might want to disable syntax highlighting for a moment: >
217
218	:syntax clear
219
220When editing another file (or the same one) the colors will come back.
221
222If you want to stop highlighting completely use: >
223
224	:syntax off
225
226This will completely disable syntax highlighting and remove it immediately for
227all buffers.  See |:syntax-off| for more details.
228
229							*:syn-manual*
230If you want syntax highlighting only for specific files, use this: >
231
232	:syntax manual
233
234This will enable the syntax highlighting, but not switch it on automatically
235when starting to edit a buffer.  To switch highlighting on for the current
236buffer, set the 'syntax' option: >
237
238	:set syntax=ON
239<
240==============================================================================
241*06.5*	Printing with colors				*syntax-printing*
242
243In the MS-Windows version you can print the current file with this command: >
244
245	:hardcopy
246
247You will get the usual printer dialog, where you can select the printer and a
248few settings.  If you have a color printer, the paper output should look the
249same as what you see inside Vim.  But when you use a dark background the
250colors will be adjusted to look good on white paper.
251
252There are several options that change the way Vim prints:
253	'printdevice'
254	'printheader'
255	'printfont'
256	'printoptions'
257
258To print only a range of lines,  use Visual mode to select the lines and then
259type the command: >
260
261	v100j:hardcopy
262
263"v" starts Visual mode.  "100j" moves a hundred lines down, they will be
264highlighted.  Then ":hardcopy" will print those lines.  You can use other
265commands to move in Visual mode, of course.
266
267This also works on Unix, if you have a PostScript printer.  Otherwise, you
268will have to do a bit more work.  You need to convert the text to HTML first,
269and then print it from a web browser.
270
271Convert the current file to HTML with this command: >
272
273	:TOhtml
274
275In case that doesn't work: >
276
277	:source $VIMRUNTIME/syntax/2html.vim
278
279You will see it crunching away, this can take quite a while for a large file.
280Some time later another window shows the HTML code.  Now write this somewhere
281(doesn't matter where, you throw it away later):
282>
283	:write main.c.html
284
285Open this file in your favorite browser and print it from there.  If all goes
286well, the output should look exactly as it does in Vim.  See |2html.vim| for
287details.  Don't forget to delete the HTML file when you are done with it.
288
289Instead of printing, you could also put the HTML file on a web server, and let
290others look at the colored text.
291
292==============================================================================
293*06.6*	Further reading
294
295|usr_44.txt|  Your own syntax highlighted.
296|syntax|      All the details.
297
298==============================================================================
299
300Next chapter: |usr_07.txt|  Editing more than one file
301
302Copyright: see |manual-copyright|  vim:tw=78:ts=8:noet:ft=help:norl:
303