Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | *usr_06.txt* For Vim version 7.0aa. Last change: 2002 Jul 14 |
| 2 | |
| 3 | VIM USER MANUAL - by Bram Moolenaar |
| 4 | |
| 5 | Using syntax highlighting |
| 6 | |
| 7 | |
| 8 | Black and white text is boring. With colors your file comes to life. This |
| 9 | not only looks nice, it also speeds up your work. Change the colors used for |
| 10 | the different sorts of text. Print your text, with the colors you see on the |
| 11 | screen. |
| 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 |
| 22 | Table of contents: |usr_toc.txt| |
| 23 | |
| 24 | ============================================================================== |
| 25 | *06.1* Switching it on |
| 26 | |
| 27 | It all starts with one simple command: > |
| 28 | |
| 29 | :syntax enable |
| 30 | |
| 31 | That should work in most situations to get color in your files. Vim will |
| 32 | automagically detect the type of file and load the right syntax highlighting. |
| 33 | Suddenly comments are blue, keywords brown and strings red. This makes it |
| 34 | easy to overview the file. After a while you will find that black&white text |
| 35 | slows you down! |
| 36 | |
| 37 | If you always want to use syntax highlighting, put the ":syntax enable" |
| 38 | command in your |vimrc| file. |
| 39 | |
| 40 | If you want syntax highlighting only when the terminal supports colors, you |
| 41 | can put this in your |vimrc| file: > |
| 42 | |
| 43 | if &t_Co > 1 |
| 44 | syntax enable |
| 45 | endif |
| 46 | |
| 47 | If you want syntax highlighting only in the GUI version, put the ":syntax |
| 48 | enable" command in your |gvimrc| file. |
| 49 | |
| 50 | ============================================================================== |
| 51 | *06.2* No or wrong colors? |
| 52 | |
| 53 | There 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 | |
| 106 | Or 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 | |
| 138 | If you don't like the default colors, you can select another color scheme. In |
| 139 | the 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 |
| 144 | want to try out. Look in the directory $VIMRUNTIME/colors. |
| 145 | |
| 146 | When you found the color scheme that you like, add the ":colorscheme" command |
| 147 | to your |vimrc| file. |
| 148 | |
| 149 | You could also write your own color scheme. This is how you do it: |
| 150 | |
| 151 | 1. 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 | |
| 159 | 2. 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 | |
| 177 | 3. Tell Vim to always use your color scheme. Put this line in your |vimrc|: > |
| 178 | |
| 179 | colorscheme mine |
| 180 | |
| 181 | If you want to see what the most often used color combinations look like, use |
| 182 | these commands: > |
| 183 | |
| 184 | :edit $VIMRUNTIME/syntax/colortest.vim |
| 185 | :source % |
| 186 | |
| 187 | You will see text in various color combinations. You can check which ones are |
| 188 | readable and look nice. |
| 189 | |
| 190 | ============================================================================== |
| 191 | *06.4* With colors or without colors |
| 192 | |
| 193 | Displaying text in color takes a lot of effort. If you find the displaying |
| 194 | too slow, you might want to disable syntax highlighting for a moment: > |
| 195 | |
| 196 | :syntax clear |
| 197 | |
| 198 | When editing another file (or the same one) the colors will come back. |
| 199 | |
| 200 | *:syn-off* |
| 201 | If you want to stop highlighting completely use: > |
| 202 | |
| 203 | :syntax off |
| 204 | |
| 205 | This will completely disable syntax highlighting and remove it immediately for |
| 206 | all buffers. |
| 207 | |
| 208 | *:syn-manual* |
| 209 | If you want syntax highlighting only for specific files, use this: > |
| 210 | |
| 211 | :syntax manual |
| 212 | |
| 213 | This will enable the syntax highlighting, but not switch it on automatically |
| 214 | when starting to edit a buffer. To switch highlighting on for the current |
| 215 | buffer, set the 'syntax' option: > |
| 216 | |
| 217 | :set syntax=ON |
| 218 | < |
| 219 | ============================================================================== |
| 220 | *06.5* Printing with colors *syntax-printing* |
| 221 | |
| 222 | In the MS-Windows version you can print the current file with this command: > |
| 223 | |
| 224 | :hardcopy |
| 225 | |
| 226 | You will get the usual printer dialog, where you can select the printer and a |
| 227 | few settings. If you have a color printer, the paper output should look the |
| 228 | same as what you see inside Vim. But when you use a dark background the |
| 229 | colors will be adjusted to look good on white paper. |
| 230 | |
| 231 | There are several options that change the way Vim prints: |
| 232 | 'printdevice' |
| 233 | 'printheader' |
| 234 | 'printfont' |
| 235 | 'printoptions' |
| 236 | |
| 237 | To print only a range of lines, use Visual mode to select the lines and then |
| 238 | type the command: > |
| 239 | |
| 240 | v100j:hardcopy |
| 241 | |
| 242 | "v" starts Visual mode. "100j" moves a hundred lines down, they will be |
| 243 | highlighted. Then ":hardcopy" will print those lines. You can use other |
| 244 | commands to move in Visual mode, of course. |
| 245 | |
| 246 | This also works on Unix, if you have a PostScript printer. Otherwise, you |
| 247 | will have to do a bit more work. You need to convert the text to HTML first, |
| 248 | and then print it from a web browser such as Netscape. |
| 249 | |
| 250 | Convert the current file to HTML with this command: > |
| 251 | |
| 252 | :source $VIMRUNTIME/syntax/2html.vim |
| 253 | |
| 254 | You will see it crunching away, this can take quite a while for a large file. |
| 255 | Some time later another window shows the HTML code. Now write this somewhere |
| 256 | (doesn't matter where, you throw it away later): |
| 257 | > |
| 258 | :write main.c.html |
| 259 | |
| 260 | Open this file in your favorite browser and print it from there. If all goes |
| 261 | well, the output should look exactly as it does in Vim. See |2html.vim| for |
| 262 | details. Don't forget to delete the HTML file when you are done with it. |
| 263 | |
| 264 | Instead of printing, you could also put the HTML file on a web server, and let |
| 265 | others look at the colored text. |
| 266 | |
| 267 | ============================================================================== |
| 268 | *06.6* Further reading |
| 269 | |
| 270 | |usr_44.txt| Your own syntax highlighted. |
| 271 | |syntax| All the details. |
| 272 | |
| 273 | ============================================================================== |
| 274 | |
| 275 | Next chapter: |usr_07.txt| Editing more than one file |
| 276 | |
| 277 | Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: |