| 
									
										
										
										
											2024-10-05 16:44:27 +02:00
										 |  |  | *usr_06.txt*	For Vim version 9.1.  Last change: 2024 Oct 05 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		     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" | 
					
						
							|  |  |  | 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.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 | 
					
						
							|  |  |  | 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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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 | 
					
						
							| 
									
										
										
										
											2006-02-16 22:11:02 +00:00
										 |  |  | this command: > | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-16 22:11:02 +00:00
										 |  |  | 	:runtime syntax/colortest.vim | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | You will see text in various color combinations.  You can check which ones are | 
					
						
							| 
									
										
										
										
											2024-10-05 16:44:27 +02:00
										 |  |  | readable and look nice.  These aren't the only colors available to you though. | 
					
						
							| 
									
										
										
										
											2021-10-24 20:35:07 +01:00
										 |  |  | You can specify #rrggbb hex colors and you can define new names for hex | 
					
						
							|  |  |  | colors in |v:colornames| like so: > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	let v:colornames['mine_red'] = '#aa0000' | 
					
						
							| 
									
										
										
										
											2022-01-08 21:51:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-24 20:35:07 +01:00
										 |  |  | If you are authoring a color scheme for others to use, it is important | 
					
						
							|  |  |  | to define these colors only when they do not exist: > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This allows users of the color scheme to override the precise definition of | 
					
						
							| 
									
										
										
										
											2024-10-05 16:44:27 +02:00
										 |  |  | that color prior to loading your color scheme.  For example, in a |.vimrc| | 
					
						
							| 
									
										
										
										
											2022-01-08 21:51:59 +00:00
										 |  |  | file: > | 
					
						
							| 
									
										
										
										
											2021-10-24 20:35:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	runtime colors/lists/css_colors.vim | 
					
						
							|  |  |  | 	let v:colornames['your_red'] = v:colornames['css_red'] | 
					
						
							|  |  |  | 	colorscheme yourscheme | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | As a color scheme author, you should be able to rely on some color names for | 
					
						
							| 
									
										
										
										
											2024-10-05 16:44:27 +02:00
										 |  |  | GUI colors.  These are defined in `colors/lists/default.vim`.  All such files | 
					
						
							| 
									
										
										
										
											2021-11-07 20:27:04 +00:00
										 |  |  | found on the |'runtimepath'| are loaded each time the colorscheme command is | 
					
						
							| 
									
										
										
										
											2021-10-24 20:35:07 +01:00
										 |  |  | run. A canonical list is provided by the vim distribution, which should | 
					
						
							|  |  |  | include all X11 colors (previously defined in rgb.txt). | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							|  |  |  | *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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you want to stop highlighting completely use: > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	:syntax off | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This will completely disable syntax highlighting and remove it immediately for | 
					
						
							| 
									
										
										
										
											2019-06-06 12:14:49 +02:00
										 |  |  | all buffers.  See |:syntax-off| for more details. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 							*: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, | 
					
						
							| 
									
										
										
										
											2010-01-06 20:52:26 +01:00
										 |  |  | and then print it from a web browser. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Convert the current file to HTML with this command: > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:52:26 +01:00
										 |  |  | 	:TOhtml | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In case that doesn't work: > | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 	: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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-11 18:00:22 +02:00
										 |  |  | Copyright: see |manual-copyright|  vim:tw=78:ts=8:noet:ft=help:norl: |