blob: 67b33bdaaa11807597727647ad5a5bc0efa4e539 [file] [log] [blame]
Bram Moolenaarbb76f242016-09-12 14:24:39 +02001*usr_05.txt* For Vim version 8.0. Last change: 2016 Mar 28
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
3 VIM USER MANUAL - by Bram Moolenaar
4
5 Set your settings
6
7
8Vim can be tuned to work like you want it to. This chapter shows you how to
9make Vim start with options set to different values. Add plugins to extend
Bram Moolenaar4399ef42005-02-12 14:29:27 +000010Vim's capabilities. Or define your own macros.
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
12|05.1| The vimrc file
13|05.2| The example vimrc file explained
14|05.3| Simple mappings
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +010015|05.4| Adding a package
16|05.5| Adding a plugin
17|05.6| Adding a help file
18|05.7| The option window
19|05.8| Often used options
Bram Moolenaar071d4272004-06-13 20:20:40 +000020
21 Next chapter: |usr_06.txt| Using syntax highlighting
22 Previous chapter: |usr_04.txt| Making small changes
23Table of contents: |usr_toc.txt|
24
25==============================================================================
26*05.1* The vimrc file *vimrc-intro*
27
28You probably got tired of typing commands that you use very often. To start
Bram Moolenaar910f66f2006-04-05 20:41:53 +000029Vim with all your favorite option settings and mappings, you write them in
30what is called the vimrc file. Vim executes the commands in this file when it
31starts up.
Bram Moolenaar071d4272004-06-13 20:20:40 +000032
Bram Moolenaar910f66f2006-04-05 20:41:53 +000033If you already have a vimrc file (e.g., when your sysadmin has one setup for
34you), you can edit it this way: >
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
Bram Moolenaar910f66f2006-04-05 20:41:53 +000036 :edit $MYVIMRC
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
Bram Moolenaar910f66f2006-04-05 20:41:53 +000038If you don't have a vimrc file yet, see |vimrc| to find out where you can
Bram Moolenaar071d4272004-06-13 20:20:40 +000039create a vimrc file. Also, the ":version" command mentions the name of the
40"user vimrc file" Vim looks for.
41
Bram Moolenaar910f66f2006-04-05 20:41:53 +000042For Unix and Macintosh this file is always used and is recommended:
Bram Moolenaar071d4272004-06-13 20:20:40 +000043
Bram Moolenaar910f66f2006-04-05 20:41:53 +000044 ~/.vimrc ~
Bram Moolenaar071d4272004-06-13 20:20:40 +000045
Bram Moolenaar910f66f2006-04-05 20:41:53 +000046For MS-DOS and MS-Windows you can use one of these:
Bram Moolenaar071d4272004-06-13 20:20:40 +000047
Bram Moolenaar910f66f2006-04-05 20:41:53 +000048 $HOME/_vimrc ~
49 $VIM/_vimrc ~
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
51The vimrc file can contain all the commands that you type after a colon. The
52most simple ones are for setting options. For example, if you want Vim to
Bram Moolenaar2df58b42012-11-28 18:21:11 +010053always start with the 'incsearch' option on, add this line your vimrc file: >
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
55 set incsearch
56
57For this new line to take effect you need to exit Vim and start it again.
58Later you will learn how to do this without exiting Vim.
59
60This chapter only explains the most basic items. For more information on how
61to write a Vim script file: |usr_41.txt|.
62
63==============================================================================
64*05.2* The example vimrc file explained *vimrc_example.vim*
65
66In the first chapter was explained how the example vimrc (included in the
67Vim 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
72In this section we will explain the various commands used in this file. This
73will give you hints about how to set up your own preferences. Not everything
74will be explained though. Use the ":help" command to find out more.
75
76>
77 set nocompatible
78
79As mentioned in the first chapter, these manuals explain Vim working in an
80improved way, thus not completely Vi compatible. Setting the 'compatible'
81option off, thus 'nocompatible' takes care of this.
82
83>
84 set backspace=indent,eol,start
85
86This specifies where in Insert mode the <BS> is allowed to delete the
87character in front of the cursor. The three items, separated by commas, tell
88Vim to delete the white space at the start of the line, a line break and the
89character before where Insert mode started.
90>
91
92 set autoindent
93
94This makes Vim use the indent of the previous line for a newly created line.
95Thus there is the same amount of white space before the new line. For example
96when pressing <Enter> in Insert mode, and when using the "o" command to open a
97new line.
98>
99
100 if has("vms")
101 set nobackup
102 else
103 set backup
104 endif
105
106This tells Vim to keep a backup copy of a file when overwriting it. But not
107on the VMS system, since it keeps old versions of files already. The backup
108file will have the same name as the original file with "~" added. See |07.4|
109>
110
111 set history=50
112
113Keep 50 commands and 50 search patterns in the history. Use another number if
114you want to remember fewer or more lines.
115>
116
117 set ruler
118
119Always display the current cursor position in the lower right corner of the
120Vim window.
121
122>
123 set showcmd
124
125Display an incomplete command in the lower right corner of the Vim window,
126left of the ruler. For example, when you type "2f", Vim is waiting for you to
127type the character to find and "2f" is displayed. When you press "w" next,
128the "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
142Display the match for a search pattern when halfway typing it.
143
144>
145 map Q gq
146
147This defines a key mapping. More about that in the next section. This
148defines the "Q" command to do formatting with the "gq" operator. This is how
149it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you
150will not need it.
151
152>
Bram Moolenaar8fc061c2004-12-29 21:03:02 +0000153 vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000154
Bram Moolenaar8fc061c2004-12-29 21:03:02 +0000155This mapping yanks the visually selected text and searches for it in C files.
156This is a complicated mapping. You can see that mappings can be used to do
157quite complicated things. Still, it is just a sequence of commands that are
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158executed like you typed them.
159
160>
161 if &t_Co > 2 || has("gui_running")
162 syntax on
163 set hlsearch
164 endif
165
166This switches on syntax highlighting, but only if colors are available. And
167the 'hlsearch' option tells Vim to highlight matches with the last used search
168pattern. The "if" command is very useful to set options only when some
169condition is met. More about that in |usr_41.txt|.
170
171 *vimrc-filetype* >
172 filetype plugin indent on
173
174This switches on three very clever mechanisms:
1751. Filetype detection.
176 Whenever you start editing a file, Vim will try to figure out what kind of
177 file this is. When you edit "main.c", Vim will see the ".c" extension and
178 recognize this as a "c" filetype. When you edit a file that starts with
179 "#!/bin/sh", Vim will recognize it as a "sh" filetype.
180 The filetype detection is used for syntax highlighting and the other two
181 items below.
182 See |filetypes|.
183
1842. Using filetype plugin files
185 Many different filetypes are edited with different options. For example,
186 when you edit a "c" file, it's very useful to set the 'cindent' option to
187 automatically indent the lines. These commonly useful option settings are
188 included with Vim in filetype plugins. You can also add your own, see
189 |write-filetype-plugin|.
190
1913. Using indent files
192 When editing programs, the indent of a line can often be computed
193 automatically. Vim comes with these indent rules for a number of
194 filetypes. See |:filetype-indent-on| and 'indentexpr'.
195
196>
197 autocmd FileType text setlocal textwidth=78
198
199This makes Vim break text to avoid lines getting longer than 78 characters.
200But only for files that have been detected to be plain text. There are
201actually two parts here. "autocmd FileType text" is an autocommand. This
202defines that when the file type is set to "text" the following command is
203automatically executed. "setlocal textwidth=78" sets the 'textwidth' option
204to 78, but only locally in one file.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205
Bram Moolenaarc81e5e72007-05-05 18:24:42 +0000206 *restore-cursor* >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207 autocmd BufReadPost *
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +0100208 \ if line("'\"") > 1 && line("'\"") <= line("$") |
209 \ exe "normal! g`\"" |
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210 \ endif
211
212Another autocommand. This time it is used after reading any file. The
213complicated stuff after it checks if the '" mark is defined, and jumps to it
214if so. The backslash at the start of a line is used to continue the command
215from the previous line. That avoids a line getting very long.
216See |line-continuation|. This only works in a Vim script file, not when
217typing commands at the command-line.
218
219==============================================================================
220*05.3* Simple mappings
221
222A mapping enables you to bind a set of Vim commands to a single key. Suppose,
223for example, that you need to surround certain words with curly braces. In
224other words, you need to change a word such as "amount" into "{amount}". With
225the :map command, you can tell Vim that the F5 key does this job. The command
226is as follows: >
227
228 :map <F5> i{<Esc>ea}<Esc>
229<
230 Note:
231 When entering this command, you must enter <F5> by typing four
232 characters. Similarly, <Esc> is not entered by pressing the <Esc>
233 key, but by typing five characters. Watch out for this difference
234 when reading the manual!
235
236Let's break this down:
237 <F5> The F5 function key. This is the trigger key that causes the
238 command to be executed as the key is pressed.
239
240 i{<Esc> Insert the { character. The <Esc> key ends Insert mode.
241
242 e Move to the end of the word.
243
244 a}<Esc> Append the } to the word.
245
246After you execute the ":map" command, all you have to do to put {} around a
247word is to put the cursor on the first character and press F5.
248
249In this example, the trigger is a single key; it can be any string. But when
250you use an existing Vim command, that command will no longer be available.
251You better avoid that.
252 One key that can be used with mappings is the backslash. Since you
253probably want to define more than one mapping, add another character. You
Bram Moolenaar4399ef42005-02-12 14:29:27 +0000254could map "\p" to add parentheses around a word, and "\c" to add curly braces,
255for example: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256
257 :map \p i(<Esc>ea)<Esc>
258 :map \c i{<Esc>ea}<Esc>
259
260You need to type the \ and the p quickly after another, so that Vim knows they
261belong together.
262
263The ":map" command (with no arguments) lists your current mappings. At
264least the ones for Normal mode. More about mappings in section |40.1|.
265
266==============================================================================
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100267*05.4* Adding a package *add-package* *matchit-install*
268
269A package is a set of files that you can add to Vim. There are two kinds of
270packages: optional and automatically loaded on startup.
271
272The Vim distribution comes with a few packages that you can optionally use.
273For example, the matchit plugin. This plugin makes the "%" command jump to
274matching HTML tags, if/else/endif in Vim scripts, etc. Very useful, although
275it's not backwards compatible (that's why it is not enabled by default).
276
277To start using the matchit plugin, add one line to your vimrc file: >
Bram Moolenaar4f3f6682016-03-26 23:01:59 +0100278 packadd! matchit
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100279
Bram Moolenaar4f3f6682016-03-26 23:01:59 +0100280That's all! After restarting Vim you can find help about this plugin: >
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100281 :help matchit
282
283This works, because when `:packadd` loaded the plugin it also added the
284package directory in 'runtimepath', so that the help file can be found.
285
286You can find packages on the Internet in various places. It usually comes as
287an archive or as a repository. For an archive you can follow these steps:
288 1. create the package directory: >
289 mkdir -p ~/.vim/pack/fancy
290< "fancy" can be any name of your liking. Use one that describes the
291 package.
292 2. unpack the archive in that directory. This assumes the top
293 directory in the archive is "start": >
294 cd ~/.vim/pack/fancy
295 unzip /tmp/fancy.zip
296< If the archive layout is different make sure that you end up with a
297 path like this:
298 ~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim ~
299 Here "fancytext" is the name of the package, it can be anything
300 else.
301
302More information about packages can be found here: |packages|.
303
304==============================================================================
305*05.5* Adding a plugin *add-plugin* *plugin*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000306
307Vim's functionality can be extended by adding plugins. A plugin is nothing
308more than a Vim script file that is loaded automatically when Vim starts. You
309can add a plugin very easily by dropping it in your plugin directory.
310{not available when Vim was compiled without the |+eval| feature}
311
312There are two types of plugins:
313
314 global plugin: Used for all kinds of files
315 filetype plugin: Only used for a specific type of file
316
317The global plugins will be discussed first, then the filetype ones
318|add-filetype-plugin|.
319
320
321GLOBAL PLUGINS *standard-plugin*
322
323When you start Vim, it will automatically load a number of global plugins.
324You don't have to do anything for this. They add functionality that most
325people will want to use, but which was implemented as a Vim script instead of
326being compiled into Vim. You can find them listed in the help index
327|standard-plugin-list|. Also see |load-plugins|.
328
329 *add-global-plugin*
330You can add a global plugin to add functionality that will always be present
331when you use Vim. There are only two steps for adding a global plugin:
3321. Get a copy of the plugin.
3332. Drop it in the right directory.
334
335
336GETTING A GLOBAL PLUGIN
337
338Where can you find plugins?
339- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros
340 and its sub-directories.
Bram Moolenaar76b92b22006-03-24 22:46:53 +0000341- Download from the net. There is a large collection on http://www.vim.org.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342- They are sometimes posted in a Vim |maillist|.
343- You could write one yourself, see |write-plugin|.
344
Bram Moolenaar76b92b22006-03-24 22:46:53 +0000345Some plugins come as a vimball archive, see |vimball|.
346Some plugins can be updated automatically, see |getscript|.
347
Bram Moolenaar071d4272004-06-13 20:20:40 +0000348
349USING A GLOBAL PLUGIN
350
351First read the text in the plugin itself to check for any special conditions.
352Then copy the file to your plugin directory:
353
354 system plugin directory ~
355 Unix ~/.vim/plugin/
356 PC and OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
357 Amiga s:vimfiles/plugin
358 Macintosh $VIM:vimfiles:plugin
359 Mac OS X ~/.vim/plugin/
360 RISC-OS Choices:vimfiles.plugin
361
362Example for Unix (assuming you didn't have a plugin directory yet): >
363
364 mkdir ~/.vim
365 mkdir ~/.vim/plugin
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200366 cp /tmp/yourplugin.vim ~/.vim/plugin
Bram Moolenaar071d4272004-06-13 20:20:40 +0000367
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200368That's all! Now you can use the commands defined in this plugin.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000369
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000370Instead of putting plugins directly into the plugin/ directory, you may
371better organize them by putting them into subdirectories under plugin/.
372As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl
373plugins.
Bram Moolenaar07d4d732005-10-03 22:04:08 +0000374
Bram Moolenaar071d4272004-06-13 20:20:40 +0000375
376FILETYPE PLUGINS *add-filetype-plugin* *ftplugins*
377
378The Vim distribution comes with a set of plugins for different filetypes that
379you can start using with this command: >
380
381 :filetype plugin on
382
383That's all! See |vimrc-filetype|.
384
385If you are missing a plugin for a filetype you are using, or you found a
386better one, you can add it. There are two steps for adding a filetype plugin:
3871. Get a copy of the plugin.
3882. Drop it in the right directory.
389
390
391GETTING A FILETYPE PLUGIN
392
393You can find them in the same places as the global plugins. Watch out if the
394type of file is mentioned, then you know if the plugin is a global or a
395filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype
396plugins are in $VIMRUNTIME/ftplugin.
397
398
399USING A FILETYPE PLUGIN *ftplugin-name*
400
401You can add a filetype plugin by dropping it in the right directory. The
402name of this directory is in the same directory mentioned above for global
403plugins, but the last part is "ftplugin". Suppose you have found a plugin for
404the "stuff" filetype, and you are on Unix. Then you can move this file to the
405ftplugin directory: >
406
407 mv thefile ~/.vim/ftplugin/stuff.vim
408
409If that file already exists you already have a plugin for "stuff". You might
410want to check if the existing plugin doesn't conflict with the one you are
411adding. If it's OK, you can give the new one another name: >
412
413 mv thefile ~/.vim/ftplugin/stuff_too.vim
414
415The underscore is used to separate the name of the filetype from the rest,
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000416which can be anything. If you use "otherstuff.vim" it wouldn't work, it would
417be loaded for the "otherstuff" filetype.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000418
419On MS-DOS you cannot use long filenames. You would run into trouble if you
420add a second plugin and the filetype has more than six characters. You can
421use an extra directory to get around this: >
422
423 mkdir $VIM/vimfiles/ftplugin/fortran
424 copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
425
426The generic names for the filetype plugins are: >
427
428 ftplugin/<filetype>.vim
429 ftplugin/<filetype>_<name>.vim
430 ftplugin/<filetype>/<name>.vim
431
432Here "<name>" can be any name that you prefer.
433Examples for the "stuff" filetype on Unix: >
434
435 ~/.vim/ftplugin/stuff.vim
436 ~/.vim/ftplugin/stuff_def.vim
437 ~/.vim/ftplugin/stuff/header.vim
438
439The <filetype> part is the name of the filetype the plugin is to be used for.
440Only files of this filetype will use the settings from the plugin. The <name>
441part of the plugin file doesn't matter, you can use it to have several plugins
442for the same filetype. Note that it must end in ".vim".
443
444
445Further reading:
446|filetype-plugins| Documentation for the filetype plugins and information
447 about how to avoid that mappings cause problems.
448|load-plugins| When the global plugins are loaded during startup.
449|ftplugin-overrule| Overruling the settings from a global plugin.
450|write-plugin| How to write a plugin script.
451|plugin-details| For more information about using plugins or when your
452 plugin doesn't work.
453|new-filetype| How to detect a new file type.
454
455==============================================================================
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100456*05.6* Adding a help file *add-local-help*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000457
458If you are lucky, the plugin you installed also comes with a help file. We
459will explain how to install the help file, so that you can easily find help
460for your new plugin.
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100461 Let us use the "doit.vim" plugin as an example. This plugin comes with
462documentation: "doit.txt". Let's first copy the plugin to the right
463directory. This time we will do it from inside Vim. (You may skip some of
464the "mkdir" commands if you already have the directory.) >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000465
466 :!mkdir ~/.vim
467 :!mkdir ~/.vim/plugin
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100468 :!cp /tmp/doit.vim ~/.vim/plugin
Bram Moolenaar071d4272004-06-13 20:20:40 +0000469
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000470The "cp" command is for Unix, on MS-DOS you can use "copy".
471
Bram Moolenaar071d4272004-06-13 20:20:40 +0000472Now create a "doc" directory in one of the directories in 'runtimepath'. >
473
474 :!mkdir ~/.vim/doc
475
476Copy the help file to the "doc" directory. >
477
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100478 :!cp /tmp/doit.txt ~/.vim/doc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000479
480Now comes the trick, which allows you to jump to the subjects in the new help
481file: Generate the local tags file with the |:helptags| command. >
482
483 :helptags ~/.vim/doc
484
485Now you can use the >
486
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100487 :help doit
Bram Moolenaar071d4272004-06-13 20:20:40 +0000488
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100489command to find help for "doit" in the help file you just added. You can see
490an entry for the local help file when you do: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000491
492 :help local-additions
493
494The title lines from the local help files are automagically added to this
495section. There you can see which local help files have been added and jump to
496them through the tag.
497
498For writing a local help file, see |write-local-help|.
499
500==============================================================================
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100501*05.7* The option window
Bram Moolenaar071d4272004-06-13 20:20:40 +0000502
503If you are looking for an option that does what you want, you can search in
504the help files here: |options|. Another way is by using this command: >
505
506 :options
507
508This opens a new window, with a list of options with a one-line explanation.
509The options are grouped by subject. Move the cursor to a subject and press
510<Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O.
511
512You can change the value of an option. For example, move to the "displaying
513text" subject. Then move the cursor down to this line:
514
515 set wrap nowrap ~
516
517When you hit <Enter>, the line will change to:
518
519 set nowrap wrap ~
520
521The option has now been switched off.
522
523Just above this line is a short description of the 'wrap' option. Move the
524cursor one line up to place it in this line. Now hit <Enter> and you jump to
525the full help on the 'wrap' option.
526
527For options that take a number or string argument you can edit the value.
528Then press <Enter> to apply the new value. For example, move the cursor a few
529lines up to this line:
530
531 set so=0 ~
532
533Position the cursor on the zero with "$". Change it into a five with "r5".
534Then press <Enter> to apply the new value. When you now move the cursor
535around you will notice that the text starts scrolling before you reach the
536border. This is what the 'scrolloff' option does, it specifies an offset
537from the window border where scrolling starts.
538
539==============================================================================
Bram Moolenaaraedfcbe2016-03-25 17:02:51 +0100540*05.8* Often used options
Bram Moolenaar071d4272004-06-13 20:20:40 +0000541
542There are an awful lot of options. Most of them you will hardly ever use.
543Some of the more useful ones will be mentioned here. Don't forget you can
544find more help on these options with the ":help" command, with single quotes
545before and after the option name. For example: >
546
547 :help 'wrap'
548
549In case you have messed up an option value, you can set it back to the
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000550default by putting an ampersand (&) after the option name. Example: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000551
552 :set iskeyword&
553
554
555NOT WRAPPING LINES
556
557Vim normally wraps long lines, so that you can see all of the text. Sometimes
558it's better to let the text continue right of the window. Then you need to
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000559scroll the text left-right to see all of a long line. Switch wrapping off
560with this command: >
Bram Moolenaar071d4272004-06-13 20:20:40 +0000561
562 :set nowrap
563
564Vim will automatically scroll the text when you move to text that is not
565displayed. To see a context of ten characters, do this: >
566
567 :set sidescroll=10
568
569This doesn't change the text in the file, only the way it is displayed.
570
571
572WRAPPING MOVEMENT COMMANDS
573
574Most commands for moving around will stop moving at the start and end of a
575line. You can change that with the 'whichwrap' option. This sets it to the
576default value: >
577
578 :set whichwrap=b,s
579
580This allows the <BS> key, when used in the first position of a line, to move
581the cursor to the end of the previous line. And the <Space> key moves from
582the end of a line to the start of the next one.
583
584To allow the cursor keys <Left> and <Right> to also wrap, use this command: >
585
586 :set whichwrap=b,s,<,>
587
588This is still only for Normal mode. To let <Left> and <Right> do this in
589Insert mode as well: >
590
591 :set whichwrap=b,s,<,>,[,]
592
593There are a few other flags that can be added, see 'whichwrap'.
594
595
596VIEWING TABS
597
598When there are tabs in a file, you cannot see where they are. To make them
599visible: >
600
601 :set list
602
Bram Moolenaar1b826e52007-05-12 15:14:36 +0000603Now every tab is displayed as ^I. And a $ is displayed at the end of each
Bram Moolenaar071d4272004-06-13 20:20:40 +0000604line, so that you can spot trailing spaces that would otherwise go unnoticed.
605 A disadvantage is that this looks ugly when there are many Tabs in a file.
606If you have a color terminal, or are using the GUI, Vim can show the spaces
607and tabs as highlighted characters. Use the 'listchars' option: >
608
609 :set listchars=tab:>-,trail:-
610
611Now every tab will be displayed as ">---" (with more or less "-") and trailing
612white space as "-". Looks a lot better, doesn't it?
613
614
615KEYWORDS
616
617The 'iskeyword' option specifies which characters can appear in a word: >
618
619 :set iskeyword
620< iskeyword=@,48-57,_,192-255 ~
621
622The "@" stands for all alphabetic letters. "48-57" stands for ASCII
623characters 48 to 57, which are the numbers 0 to 9. "192-255" are the
624printable latin characters.
625 Sometimes you will want to include a dash in keywords, so that commands
626like "w" consider "upper-case" to be one word. You can do it like this: >
627
628 :set iskeyword+=-
629 :set iskeyword
630< iskeyword=@,48-57,_,192-255,- ~
631
632If you look at the new value, you will see that Vim has added a comma for you.
633 To remove a character use "-=". For example, to remove the underscore: >
634
635 :set iskeyword-=_
636 :set iskeyword
637< iskeyword=@,48-57,192-255,- ~
638
639This time a comma is automatically deleted.
640
641
642ROOM FOR MESSAGES
643
644When Vim starts there is one line at the bottom that is used for messages.
645When a message is long, it is either truncated, thus you can only see part of
646it, or the text scrolls and you have to press <Enter> to continue.
647 You can set the 'cmdheight' option to the number of lines used for
648messages. Example: >
649
650 :set cmdheight=3
651
652This does mean there is less room to edit text, thus it's a compromise.
653
654==============================================================================
655
656Next chapter: |usr_06.txt| Using syntax highlighting
657
658Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: