comparison runtime/doc/usr_05.txt @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 4e2284e71352
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 *usr_05.txt* For Vim version 7.0aa. Last change: 2004 Mar 12
2
3 VIM USER MANUAL - by Bram Moolenaar
4
5 Set your settings
6
7
8 Vim can be tuned to work like you want it to. This chapter shows you how to
9 make Vim start with options set to different values. Add plugins to extend
10 Vims capabilities. Or define your own macros.
11
12 |05.1| The vimrc file
13 |05.2| The example vimrc file explained
14 |05.3| Simple mappings
15 |05.4| Adding a plugin
16 |05.5| Adding a help file
17 |05.6| The option window
18 |05.7| Often used options
19
20 Next chapter: |usr_06.txt| Using syntax highlighting
21 Previous chapter: |usr_04.txt| Making small changes
22 Table of contents: |usr_toc.txt|
23
24 ==============================================================================
25 *05.1* The vimrc file *vimrc-intro*
26
27 You probably got tired of typing commands that you use very often. To start
28 with all your favorite option settings and mappings, you write them in what is
29 called the vimrc file. Vim reads this file when it starts up.
30
31 If you have trouble finding your vimrc file, use this command: >
32
33 :scriptnames
34
35 One of the first files in the list should be called ".vimrc" or "_vimrc" and
36 is located in your home directory.
37 If you don't have a vimrc file yet, see |vimrc| to find out where you can
38 create a vimrc file. Also, the ":version" command mentions the name of the
39 "user vimrc file" Vim looks for.
40
41 For Unix this file is always used: >
42
43 ~/.vimrc
44
45 For MS-DOS and MS-Windows it is mostly one of these: >
46
47 $HOME/_vimrc
48 $VIM/_vimrc
49
50 The vimrc file can contain all the commands that you type after a colon. The
51 most simple ones are for setting options. For example, if you want Vim to
52 always start with the 'incsearch' option on, add this line you your vimrc
53 file: >
54
55 set incsearch
56
57 For this new line to take effect you need to exit Vim and start it again.
58 Later you will learn how to do this without exiting Vim.
59
60 This chapter only explains the most basic items. For more information on how
61 to write a Vim script file: |usr_41.txt|.
62
63 ==============================================================================
64 *05.2* The example vimrc file explained *vimrc_example.vim*
65
66 In the first chapter was explained how the example vimrc (included in the
67 Vim distribution) file can be used to make Vim startup in not-compatible mode
68 (see |not-compatible|). The file can be found here:
69
70 $VIMRUNTIME/vimrc_example.vim ~
71
72 In this section we will explain the various commands used in this file. This
73 will give you hints about how to set up your own preferences. Not everything
74 will be explained though. Use the ":help" command to find out more.
75
76 >
77 set nocompatible
78
79 As mentioned in the first chapter, these manuals explain Vim working in an
80 improved way, thus not completely Vi compatible. Setting the 'compatible'
81 option off, thus 'nocompatible' takes care of this.
82
83 >
84 set backspace=indent,eol,start
85
86 This specifies where in Insert mode the <BS> is allowed to delete the
87 character in front of the cursor. The three items, separated by commas, tell
88 Vim to delete the white space at the start of the line, a line break and the
89 character before where Insert mode started.
90 >
91
92 set autoindent
93
94 This makes Vim use the indent of the previous line for a newly created line.
95 Thus there is the same amount of white space before the new line. For example
96 when pressing <Enter> in Insert mode, and when using the "o" command to open a
97 new line.
98 >
99
100 if has("vms")
101 set nobackup
102 else
103 set backup
104 endif
105
106 This tells Vim to keep a backup copy of a file when overwriting it. But not
107 on the VMS system, since it keeps old versions of files already. The backup
108 file will have the same name as the original file with "~" added. See |07.4|
109 >
110
111 set history=50
112
113 Keep 50 commands and 50 search patterns in the history. Use another number if
114 you want to remember fewer or more lines.
115 >
116
117 set ruler
118
119 Always display the current cursor position in the lower right corner of the
120 Vim window.
121
122 >
123 set showcmd
124
125 Display an incomplete command in the lower right corner of the Vim window,
126 left of the ruler. For example, when you type "2f", Vim is waiting for you to
127 type the character to find and "2f" is displayed. When you press "w" next,
128 the "2fw" command is executed and the displayed "2f" is removed.
129
130 +-------------------------------------------------+
131 |text in the Vim window |
132 |~ |
133 |~ |
134 |-- VISUAL -- 2f 43,8 17% |
135 +-------------------------------------------------+
136 ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^
137 'showmode' 'showcmd' 'ruler'
138
139 >
140 set incsearch
141
142 Display the match for a search pattern when halfway typing it.
143
144 >
145 map Q gq
146
147 This defines a key mapping. More about that in the next section. This
148 defines the "Q" command to do formatting with the "gq" operator. This is how
149 it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you
150 will not need it.
151
152 >
153 vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
154
155 This is a complicated mapping. It will not be explained how it works here.
156 What it does is to make "p" in Visual mode overwrite the selected text with
157 the previously yanked text. You can see that mappings can be used to do quite
158 complicated things. Still, it is just a sequence of commands that are
159 executed like you typed them.
160
161 >
162 if &t_Co > 2 || has("gui_running")
163 syntax on
164 set hlsearch
165 endif
166
167 This switches on syntax highlighting, but only if colors are available. And
168 the 'hlsearch' option tells Vim to highlight matches with the last used search
169 pattern. The "if" command is very useful to set options only when some
170 condition is met. More about that in |usr_41.txt|.
171
172 *vimrc-filetype* >
173 filetype plugin indent on
174
175 This switches on three very clever mechanisms:
176 1. Filetype detection.
177 Whenever you start editing a file, Vim will try to figure out what kind of
178 file this is. When you edit "main.c", Vim will see the ".c" extension and
179 recognize this as a "c" filetype. When you edit a file that starts with
180 "#!/bin/sh", Vim will recognize it as a "sh" filetype.
181 The filetype detection is used for syntax highlighting and the other two
182 items below.
183 See |filetypes|.
184
185 2. Using filetype plugin files
186 Many different filetypes are edited with different options. For example,
187 when you edit a "c" file, it's very useful to set the 'cindent' option to
188 automatically indent the lines. These commonly useful option settings are
189 included with Vim in filetype plugins. You can also add your own, see
190 |write-filetype-plugin|.
191
192 3. Using indent files
193 When editing programs, the indent of a line can often be computed
194 automatically. Vim comes with these indent rules for a number of
195 filetypes. See |:filetype-indent-on| and 'indentexpr'.
196
197 >
198 autocmd FileType text setlocal textwidth=78
199
200 This makes Vim break text to avoid lines getting longer than 78 characters.
201 But only for files that have been detected to be plain text. There are
202 actually two parts here. "autocmd FileType text" is an autocommand. This
203 defines that when the file type is set to "text" the following command is
204 automatically executed. "setlocal textwidth=78" sets the 'textwidth' option
205 to 78, but only locally in one file.
206 >
207
208 autocmd BufReadPost *
209 \ if line("'\"") > 0 && line("'\"") <= line("$") |
210 \ exe "normal g`\"" |
211 \ endif
212
213 Another autocommand. This time it is used after reading any file. The
214 complicated stuff after it checks if the '" mark is defined, and jumps to it
215 if so. The backslash at the start of a line is used to continue the command
216 from the previous line. That avoids a line getting very long.
217 See |line-continuation|. This only works in a Vim script file, not when
218 typing commands at the command-line.
219
220 ==============================================================================
221 *05.3* Simple mappings
222
223 A mapping enables you to bind a set of Vim commands to a single key. Suppose,
224 for example, that you need to surround certain words with curly braces. In
225 other words, you need to change a word such as "amount" into "{amount}". With
226 the :map command, you can tell Vim that the F5 key does this job. The command
227 is as follows: >
228
229 :map <F5> i{<Esc>ea}<Esc>
230 <
231 Note:
232 When entering this command, you must enter <F5> by typing four
233 characters. Similarly, <Esc> is not entered by pressing the <Esc>
234 key, but by typing five characters. Watch out for this difference
235 when reading the manual!
236
237 Let's break this down:
238 <F5> The F5 function key. This is the trigger key that causes the
239 command to be executed as the key is pressed.
240
241 i{<Esc> Insert the { character. The <Esc> key ends Insert mode.
242
243 e Move to the end of the word.
244
245 a}<Esc> Append the } to the word.
246
247 After you execute the ":map" command, all you have to do to put {} around a
248 word is to put the cursor on the first character and press F5.
249
250 In this example, the trigger is a single key; it can be any string. But when
251 you use an existing Vim command, that command will no longer be available.
252 You better avoid that.
253 One key that can be used with mappings is the backslash. Since you
254 probably want to define more than one mapping, add another character. You
255 could map "\p" to add parens around a word, and "\c" to add curly braces, for
256 example: >
257
258 :map \p i(<Esc>ea)<Esc>
259 :map \c i{<Esc>ea}<Esc>
260
261 You need to type the \ and the p quickly after another, so that Vim knows they
262 belong together.
263
264 The ":map" command (with no arguments) lists your current mappings. At
265 least the ones for Normal mode. More about mappings in section |40.1|.
266
267 ==============================================================================
268 *05.4* Adding a plugin *add-plugin* *plugin*
269
270 Vim's functionality can be extended by adding plugins. A plugin is nothing
271 more than a Vim script file that is loaded automatically when Vim starts. You
272 can add a plugin very easily by dropping it in your plugin directory.
273 {not available when Vim was compiled without the |+eval| feature}
274
275 There are two types of plugins:
276
277 global plugin: Used for all kinds of files
278 filetype plugin: Only used for a specific type of file
279
280 The global plugins will be discussed first, then the filetype ones
281 |add-filetype-plugin|.
282
283
284 GLOBAL PLUGINS *standard-plugin*
285
286 When you start Vim, it will automatically load a number of global plugins.
287 You don't have to do anything for this. They add functionality that most
288 people will want to use, but which was implemented as a Vim script instead of
289 being compiled into Vim. You can find them listed in the help index
290 |standard-plugin-list|. Also see |load-plugins|.
291
292 *add-global-plugin*
293 You can add a global plugin to add functionality that will always be present
294 when you use Vim. There are only two steps for adding a global plugin:
295 1. Get a copy of the plugin.
296 2. Drop it in the right directory.
297
298
299 GETTING A GLOBAL PLUGIN
300
301 Where can you find plugins?
302 - Some come with Vim. You can find them in the directory $VIMRUNTIME/macros
303 and its sub-directories.
304 - Download from the net, check out http://vim.sf.net.
305 - They are sometimes posted in a Vim |maillist|.
306 - You could write one yourself, see |write-plugin|.
307
308
309 USING A GLOBAL PLUGIN
310
311 First read the text in the plugin itself to check for any special conditions.
312 Then copy the file to your plugin directory:
313
314 system plugin directory ~
315 Unix ~/.vim/plugin/
316 PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
317 Amiga s:vimfiles/plugin
318 Macintosh $VIM:vimfiles:plugin
319 Mac OS X ~/.vim/plugin/
320 RISC-OS Choices:vimfiles.plugin
321
322 Example for Unix (assuming you didn't have a plugin directory yet): >
323
324 mkdir ~/.vim
325 mkdir ~/.vim/plugin
326 cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
327
328 That's all! Now you can use the commands defined in this plugin to justify
329 text.
330
331
332 FILETYPE PLUGINS *add-filetype-plugin* *ftplugins*
333
334 The Vim distribution comes with a set of plugins for different filetypes that
335 you can start using with this command: >
336
337 :filetype plugin on
338
339 That's all! See |vimrc-filetype|.
340
341 If you are missing a plugin for a filetype you are using, or you found a
342 better one, you can add it. There are two steps for adding a filetype plugin:
343 1. Get a copy of the plugin.
344 2. Drop it in the right directory.
345
346
347 GETTING A FILETYPE PLUGIN
348
349 You can find them in the same places as the global plugins. Watch out if the
350 type of file is mentioned, then you know if the plugin is a global or a
351 filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype
352 plugins are in $VIMRUNTIME/ftplugin.
353
354
355 USING A FILETYPE PLUGIN *ftplugin-name*
356
357 You can add a filetype plugin by dropping it in the right directory. The
358 name of this directory is in the same directory mentioned above for global
359 plugins, but the last part is "ftplugin". Suppose you have found a plugin for
360 the "stuff" filetype, and you are on Unix. Then you can move this file to the
361 ftplugin directory: >
362
363 mv thefile ~/.vim/ftplugin/stuff.vim
364
365 If that file already exists you already have a plugin for "stuff". You might
366 want to check if the existing plugin doesn't conflict with the one you are
367 adding. If it's OK, you can give the new one another name: >
368
369 mv thefile ~/.vim/ftplugin/stuff_too.vim
370
371 The underscore is used to separate the name of the filetype from the rest,
372 which can be anything. If you would use "otherstuff.vim" it wouldn't work, it
373 would be loaded for the "otherstuff" filetype.
374
375 On MS-DOS you cannot use long filenames. You would run into trouble if you
376 add a second plugin and the filetype has more than six characters. You can
377 use an extra directory to get around this: >
378
379 mkdir $VIM/vimfiles/ftplugin/fortran
380 copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
381
382 The generic names for the filetype plugins are: >
383
384 ftplugin/<filetype>.vim
385 ftplugin/<filetype>_<name>.vim
386 ftplugin/<filetype>/<name>.vim
387
388 Here "<name>" can be any name that you prefer.
389 Examples for the "stuff" filetype on Unix: >
390
391 ~/.vim/ftplugin/stuff.vim
392 ~/.vim/ftplugin/stuff_def.vim
393 ~/.vim/ftplugin/stuff/header.vim
394
395 The <filetype> part is the name of the filetype the plugin is to be used for.
396 Only files of this filetype will use the settings from the plugin. The <name>
397 part of the plugin file doesn't matter, you can use it to have several plugins
398 for the same filetype. Note that it must end in ".vim".
399
400
401 Further reading:
402 |filetype-plugins| Documentation for the filetype plugins and information
403 about how to avoid that mappings cause problems.
404 |load-plugins| When the global plugins are loaded during startup.
405 |ftplugin-overrule| Overruling the settings from a global plugin.
406 |write-plugin| How to write a plugin script.
407 |plugin-details| For more information about using plugins or when your
408 plugin doesn't work.
409 |new-filetype| How to detect a new file type.
410
411 ==============================================================================
412 *05.5* Adding a help file *add-local-help* *matchit-install*
413
414 If you are lucky, the plugin you installed also comes with a help file. We
415 will explain how to install the help file, so that you can easily find help
416 for your new plugin.
417 Let us use the "matchit.vim" plugin as an example (it is included with
418 Vim). This plugin makes the "%" command jump to matching HTML tags,
419 if/else/endif in Vim scripts, etc. Very useful, although it's not backwards
420 compatible (that's why it is not enabled by default).
421 This plugin comes with documentation: "matchit.txt". Let's first copy the
422 plugin to the right directory. This time we will do it from inside Vim, so
423 that we can use $VIMRUNTIME. (You may skip some of the "mkdir" commands if
424 you already have the directory.) >
425
426 :!mkdir ~/.vim
427 :!mkdir ~/.vim/plugin
428 :!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
429
430 Now create a "doc" directory in one of the directories in 'runtimepath'. >
431
432 :!mkdir ~/.vim/doc
433
434 Copy the help file to the "doc" directory. >
435
436 :!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
437
438 Now comes the trick, which allows you to jump to the subjects in the new help
439 file: Generate the local tags file with the |:helptags| command. >
440
441 :helptags ~/.vim/doc
442
443 Now you can use the >
444
445 :help g%
446
447 command to find help for "g%" in the help file you just added. You can see an
448 entry for the local help file when you do: >
449
450 :help local-additions
451
452 The title lines from the local help files are automagically added to this
453 section. There you can see which local help files have been added and jump to
454 them through the tag.
455
456 For writing a local help file, see |write-local-help|.
457
458 ==============================================================================
459 *05.6* The option window
460
461 If you are looking for an option that does what you want, you can search in
462 the help files here: |options|. Another way is by using this command: >
463
464 :options
465
466 This opens a new window, with a list of options with a one-line explanation.
467 The options are grouped by subject. Move the cursor to a subject and press
468 <Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O.
469
470 You can change the value of an option. For example, move to the "displaying
471 text" subject. Then move the cursor down to this line:
472
473 set wrap nowrap ~
474
475 When you hit <Enter>, the line will change to:
476
477 set nowrap wrap ~
478
479 The option has now been switched off.
480
481 Just above this line is a short description of the 'wrap' option. Move the
482 cursor one line up to place it in this line. Now hit <Enter> and you jump to
483 the full help on the 'wrap' option.
484
485 For options that take a number or string argument you can edit the value.
486 Then press <Enter> to apply the new value. For example, move the cursor a few
487 lines up to this line:
488
489 set so=0 ~
490
491 Position the cursor on the zero with "$". Change it into a five with "r5".
492 Then press <Enter> to apply the new value. When you now move the cursor
493 around you will notice that the text starts scrolling before you reach the
494 border. This is what the 'scrolloff' option does, it specifies an offset
495 from the window border where scrolling starts.
496
497 ==============================================================================
498 *05.7* Often used options
499
500 There are an awful lot of options. Most of them you will hardly ever use.
501 Some of the more useful ones will be mentioned here. Don't forget you can
502 find more help on these options with the ":help" command, with single quotes
503 before and after the option name. For example: >
504
505 :help 'wrap'
506
507 In case you have messed up an option value, you can set it back to the
508 default by putting a ampersand (&) after the option name. Example: >
509
510 :set iskeyword&
511
512
513 NOT WRAPPING LINES
514
515 Vim normally wraps long lines, so that you can see all of the text. Sometimes
516 it's better to let the text continue right of the window. Then you need to
517 scroll the text left-right to see all of a long line. Switch wrapping of with
518 this command: >
519
520 :set nowrap
521
522 Vim will automatically scroll the text when you move to text that is not
523 displayed. To see a context of ten characters, do this: >
524
525 :set sidescroll=10
526
527 This doesn't change the text in the file, only the way it is displayed.
528
529
530 WRAPPING MOVEMENT COMMANDS
531
532 Most commands for moving around will stop moving at the start and end of a
533 line. You can change that with the 'whichwrap' option. This sets it to the
534 default value: >
535
536 :set whichwrap=b,s
537
538 This allows the <BS> key, when used in the first position of a line, to move
539 the cursor to the end of the previous line. And the <Space> key moves from
540 the end of a line to the start of the next one.
541
542 To allow the cursor keys <Left> and <Right> to also wrap, use this command: >
543
544 :set whichwrap=b,s,<,>
545
546 This is still only for Normal mode. To let <Left> and <Right> do this in
547 Insert mode as well: >
548
549 :set whichwrap=b,s,<,>,[,]
550
551 There are a few other flags that can be added, see 'whichwrap'.
552
553
554 VIEWING TABS
555
556 When there are tabs in a file, you cannot see where they are. To make them
557 visible: >
558
559 :set list
560
561 Now every Tab is displayed as ^I. And a $ is displayed at the end of each
562 line, so that you can spot trailing spaces that would otherwise go unnoticed.
563 A disadvantage is that this looks ugly when there are many Tabs in a file.
564 If you have a color terminal, or are using the GUI, Vim can show the spaces
565 and tabs as highlighted characters. Use the 'listchars' option: >
566
567 :set listchars=tab:>-,trail:-
568
569 Now every tab will be displayed as ">---" (with more or less "-") and trailing
570 white space as "-". Looks a lot better, doesn't it?
571
572
573 KEYWORDS
574
575 The 'iskeyword' option specifies which characters can appear in a word: >
576
577 :set iskeyword
578 < iskeyword=@,48-57,_,192-255 ~
579
580 The "@" stands for all alphabetic letters. "48-57" stands for ASCII
581 characters 48 to 57, which are the numbers 0 to 9. "192-255" are the
582 printable latin characters.
583 Sometimes you will want to include a dash in keywords, so that commands
584 like "w" consider "upper-case" to be one word. You can do it like this: >
585
586 :set iskeyword+=-
587 :set iskeyword
588 < iskeyword=@,48-57,_,192-255,- ~
589
590 If you look at the new value, you will see that Vim has added a comma for you.
591 To remove a character use "-=". For example, to remove the underscore: >
592
593 :set iskeyword-=_
594 :set iskeyword
595 < iskeyword=@,48-57,192-255,- ~
596
597 This time a comma is automatically deleted.
598
599
600 ROOM FOR MESSAGES
601
602 When Vim starts there is one line at the bottom that is used for messages.
603 When a message is long, it is either truncated, thus you can only see part of
604 it, or the text scrolls and you have to press <Enter> to continue.
605 You can set the 'cmdheight' option to the number of lines used for
606 messages. Example: >
607
608 :set cmdheight=3
609
610 This does mean there is less room to edit text, thus it's a compromise.
611
612 ==============================================================================
613
614 Next chapter: |usr_06.txt| Using syntax highlighting
615
616 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: