39
|
1 *intro.txt* For Vim version 7.0aa. Last change: 2004 Dec 16
|
7
|
2
|
|
3
|
|
4 VIM REFERENCE MANUAL by Bram Moolenaar
|
|
5
|
|
6
|
|
7 Introduction to Vim *ref* *reference*
|
|
8
|
|
9 1. Introduction |intro|
|
|
10 2. Vim on the internet |internet|
|
|
11 3. Credits |credits|
|
|
12 4. Notation |notation|
|
|
13 5. Modes, introduction |vim-modes-intro|
|
|
14 6. Switching from mode to mode |mode-switching|
|
|
15 7. The window contents |window-contents|
|
|
16 8. Definitions |definitions|
|
|
17
|
|
18 ==============================================================================
|
|
19 1. Introduction *intro*
|
|
20
|
|
21 Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so many
|
|
22 improvements that a name change was appropriate. Vim is a text editor which
|
|
23 includes almost all the commands from the Unix program "Vi" and a lot of new
|
|
24 ones. It is very useful for editing programs and other plain text.
|
|
25 All commands are given with the keyboard. This has the advantage that you
|
|
26 can keep your fingers on the keyboard and your eyes on the screen. For those
|
|
27 who want it, there is mouse support and a GUI version with scrollbars and
|
|
28 menus (see |gui.txt|).
|
|
29
|
|
30 An overview of this manual can be found in the file "help.txt", |help.txt|.
|
|
31 It can be accessed from within Vim with the <Help> or <F1> key and with the
|
|
32 |:help| command (just type ":help", without the bars or quotes).
|
|
33 The 'helpfile' option can be set to the name of the help file, in case it
|
|
34 is not located in the default place. You can jump to subjects like with tags:
|
|
35 Use CTRL-] to jump to a subject under the cursor, use CTRL-T to jump back.
|
|
36
|
|
37 Throughout this manual the differences between Vi and Vim are mentioned in
|
|
38 curly braces, like this: {Vi does not have on-line help}. See |vi_diff.txt|
|
|
39 for a summary of the differences between Vim and Vi.
|
|
40
|
|
41 This manual refers to Vim on various machines. There may be small differences
|
|
42 between different computers and terminals. Besides the remarks given in this
|
|
43 document, there is a separate document for each supported system, see
|
|
44 |sys-file-list|.
|
|
45
|
|
46 This manual is a reference for all the Vim commands and options. This is not
|
|
47 an introduction to the use of Vi or Vim, it gets a bit complicated here and
|
|
48 there. For beginners, there is a hands-on |tutor|. To learn using Vim, read
|
|
49 the user manual |usr_toc.txt|.
|
|
50
|
|
51 *book*
|
|
52 There are many books on Vi that contain a section for beginners. There are
|
|
53 two books I can recommend:
|
|
54
|
|
55 "Vim - Vi Improved" by Steve Oualline
|
|
56
|
|
57 This is the very first book completely dedicated to Vim. It is very good for
|
|
58 beginners. The most often used commands are explained with pictures and
|
|
59 examples. The less often used commands are also explained, the more advanced
|
|
60 features are summarized. There is a comprehensive index and a quick
|
|
61 reference. Parts of this book have been included in the user manual
|
|
62 |frombook|.
|
|
63 Published by New Riders Publishing. ISBN: 0735710015
|
|
64 For more information try one of these:
|
|
65 http://iccf-holland.org/click5.html
|
|
66 http://www.vim.org/iccf/click5.html
|
|
67
|
|
68 "Learning the Vi editor" by Linda Lamb and Arnold Robbins
|
|
69
|
|
70 This is a book about Vi that includes a chapter on Vim (in the sixth edition).
|
|
71 The first steps in Vi are explained very well. The commands that Vim adds are
|
|
72 only briefly mentioned. There is also a German translation.
|
|
73 Published by O'Reilly. ISBN: 1-56592-426-6.
|
|
74
|
|
75 ==============================================================================
|
|
76 2. Vim on the internet *internet*
|
|
77
|
|
78 *www* *faq* *FAQ* *distribution* *download*
|
|
79 The Vim pages contain the most recent information about Vim. They also
|
|
80 contain links to the most recent version of Vim. The FAQ is a list of
|
|
81 Frequently Asked Questions. Read this if you have problems.
|
|
82
|
|
83 VIM home page: http://www.vim.org/
|
|
84 VIM FAQ: http://vimdoc.sf.net/
|
|
85 Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS
|
|
86
|
|
87
|
|
88 Usenet News group where Vim is discussed: *news* *usenet*
|
|
89 comp.editors
|
|
90 This group is also for other editors. If you write about Vim, don't forget to
|
|
91 mention that.
|
|
92
|
|
93 *mail-list* *maillist*
|
|
94 There are several mailing lists for Vim:
|
|
95 <vim@vim.org>
|
|
96 For discussions about using existing versions of Vim: Useful mappings,
|
|
97 questions, answers, where to get a specific version, etc.
|
|
98 <vim-dev@vim.org> *vim-dev* *vimdev*
|
|
99 For discussions about changing Vim: New features, porting, patches,
|
|
100 beta-test versions, etc.
|
|
101 <vim-announce@vim.org> *vim-announce*
|
|
102 Announcements about new versions of Vim; also for beta-test versions
|
|
103 and ports to different systems.
|
|
104 <vim-multibyte@vim.org> *vim-multibyte*
|
|
105 For discussions about using and improving the multi-byte aspects of
|
|
106 Vim.
|
|
107 <vim-mac@vim.org> *vim-mac*
|
|
108 For discussions about using and improving the Macintosh version of
|
|
109 Vim.
|
|
110
|
|
111 See http://www.vim.org/maillist.php for the latest information.
|
|
112
|
|
113 NOTE:
|
|
114 - You can only send messages to these lists if you have subscribed!
|
|
115 - You need to send the messages from the same location as where you subscribed
|
|
116 from (to avoid spam mail).
|
|
117 - Maximum message size is 40000 characters.
|
|
118
|
|
119 *subscribe-maillist*
|
|
120 If you want to join, send a message to
|
|
121 <vim-help@vim.org>
|
|
122 Make sure that your "From:" address is correct. Then the list server will
|
|
123 give you help on how to subscribe.
|
|
124
|
|
125 You can retrieve old messages from the maillist software, and an index of
|
|
126 messages. Ask vim-help for instructions.
|
|
127
|
|
128 Archives are kept at: *maillist-archive*
|
|
129 http://groups.yahoo.com/group/vim
|
|
130 http://groups.yahoo.com/group/vimdev
|
|
131 http://groups.yahoo.com/group/vimannounce
|
|
132 http://groups.yahoo.com/group/vim-multibyte
|
|
133 http://groups.yahoo.com/group/vim-mac
|
|
134
|
|
135
|
|
136 Additional maillists:
|
|
137
|
|
138 <vim-fr@club.voila.fr> *french-maillist*
|
|
139 Vim list in the French language. Subscribe by sending a message to
|
|
140 <vim-fr-subscribe@club.voila.fr>
|
|
141 Or go to http://groups.yahoo.com/group/vim-fr.
|
|
142
|
|
143
|
|
144 Bug reports: *bugs* *bug-reports* *bugreport.vim*
|
|
145
|
|
146 Send bug reports to: Vim bugs <bugs@vim.org>
|
|
147 This is not a maillist but the message is redirected to the Vim maintainer.
|
|
148 Please be brief; all the time that is spent on answering mail is subtracted
|
|
149 from the time that is spent on improving Vim! Always give a reproducible
|
|
150 example and try to find out which settings or other things influence the
|
|
151 appearance of the bug. Try different machines, if possible. Send me patches
|
|
152 if you can!
|
|
153
|
|
154 In case of doubt, use: >
|
|
155 :so $VIMRUNTIME/bugreport.vim
|
|
156 This will create a file "bugreport.txt" in the current directory, with a lot
|
|
157 of information of your environment. Before sending this out, check if it
|
|
158 doesn't contain any confidential information!
|
|
159
|
|
160 *debug-vim*
|
|
161 When Vim crashes in one of the test files, and you are using gcc for
|
|
162 compilation, here is what you can do to find out exactly where Vim crashes:
|
|
163
|
|
164 1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
|
|
165 which you can uncomment).
|
|
166
|
|
167 2. Execute these commands (replace "11" with the test that fails): >
|
|
168 cd testdir
|
|
169 gdb ../vim
|
|
170 run -u unix.vim -U NONE -s dotest.in test11.in
|
|
171
|
|
172 3. Check where Vim crashes, gdb should give a message for this.
|
|
173
|
|
174 4. Get a stack trace from gdb with this command: >
|
|
175 where
|
|
176 < You can check out different places in the stack trace with: >
|
|
177 frame 3
|
|
178 < Replace "3" with one of the numbers in the stack trace.
|
|
179
|
|
180 *year-2000* *Y2K*
|
|
181 Since Vim internally doesn't use dates for editing, there is no year 2000
|
|
182 problem to worry about. Vim does use the time in the form of seconds since
|
|
183 January 1st 1970. It is used for a time-stamp check of the edited file and
|
|
184 the swap file, which is not critical and should only cause warning messages.
|
|
185
|
|
186 There might be a year 2038 problem, when the seconds don't fit in a 32 bit int
|
|
187 anymore. This depends on the compiler, libraries and operating system.
|
|
188 Specifically, time_t and the ctime() function are used. And the time_t is
|
|
189 stored in four bytes in the swap file. But that's only used for printing a
|
|
190 file date/time for recovery, it will never affect normal editing.
|
|
191
|
|
192 The Vim strftime() function directly uses the strftime() system function.
|
|
193 localtime() uses the time() system function. getftime() uses the time
|
|
194 returned by the stat() system function. If your system libraries are year
|
|
195 2000 compliant, Vim is too.
|
|
196
|
|
197 The user may create scripts for Vim that use external commands. These might
|
|
198 introduce Y2K problems, but those are not really part of Vim itself.
|
|
199
|
|
200 ==============================================================================
|
|
201 3. Credits *credits* *author*
|
|
202
|
|
203 Most of Vim was written by Bram Moolenaar <Bram@vim.org>.
|
|
204
|
|
205 Parts of the documentation come from several Vi manuals, written by:
|
|
206 W.N. Joy
|
|
207 Alan P.W. Hewett
|
|
208 Mark Horton
|
|
209
|
|
210 The Vim editor is based on Stevie and includes (ideas from) other software,
|
|
211 worked on by the people mentioned here. Other people helped by sending me
|
|
212 patches, suggestions and giving feedback about what is good and bad in Vim.
|
|
213
|
|
214 Vim would never have become what it is now, without the help of these people!
|
|
215
|
|
216 Ron Aaron Win32 GUI changes
|
|
217 Zoltan Arpadffy work on VMS port
|
|
218 Tony Andrews Stevie
|
|
219 Gert van Antwerpen changes for DJGPP on MS-DOS
|
|
220 Berkeley DB(3) ideas for swap file implementation
|
|
221 Keith Bostic Nvi
|
|
222 Walter Briscoe Makefile updates, various patches
|
|
223 Ralf Brown SPAWNO library for MS-DOS
|
|
224 Robert Colon many useful remarks
|
|
225 Marcin Dalecki GTK+ GUI port, toolbar icons, gettext()
|
|
226 Kayhan Demirel sent me news in Uganda
|
|
227 Chris & John Downey xvi (ideas for multi-windows version)
|
|
228 Henk Elbers first VMS port
|
29
|
229 Daniel Elstner GTK+ 2 port
|
7
|
230 Eric Fischer Mac port, 'cindent', and other improvements
|
|
231 Benji Fisher Answering lots of user questions
|
|
232 Bill Foster Athena GUI port
|
|
233 Loic Grenie xvim (ideas for multi windows version)
|
|
234 Sven Guckes Vim promotor and previous WWW page maintainer
|
|
235 Darren Hiebert Exuberant ctags
|
29
|
236 Jason Hildebrand GTK+ 2 port
|
7
|
237 Bruce Hunsaker improvements for VMS port
|
|
238 Andy Kahn Cscope support, GTK+ GUI port
|
|
239 Oezguer Kesim Maintainer of Vim Mailing Lists
|
|
240 Axel Kielhorn work on the Macintosh port
|
|
241 Steve Kirkendall Elvis
|
|
242 Roger Knobbe original port to Windows NT
|
|
243 Sergey Laskavy Vim's help from Moscow
|
|
244 Felix von Leitner Maintainer of Vim Mailing Lists
|
|
245 David Leonard Port of Python extensions to Unix
|
|
246 Avner Lottem Edit in right-to-left windows
|
|
247 Flemming Madsen X11 client-server, various features and patches
|
|
248 MicroSoft Gave me a copy of DevStudio to compile Vim with
|
|
249 Paul Moore Python interface extensions, many patches
|
|
250 Katsuhito Nagano Work on multi-byte versions
|
|
251 Sung-Hyun Nam Work on multi-byte versions
|
|
252 Vince Negri Win32 GUI and generic console enhancements
|
|
253 Steve Oualline Author of the first Vim book |frombook|
|
|
254 George V. Reilly Win32 port, Win32 GUI start-off
|
|
255 Stephen Riehm bug collector
|
|
256 Stefan Roemer various patches and help to users
|
|
257 Ralf Schandl IBM OS/390 port
|
|
258 Olaf Seibert DICE and BeBox version, regexp improvements
|
|
259 Mortaza Shiran Farsi patches
|
|
260 Peter da Silva termlib
|
|
261 Paul Slootman OS/2 port
|
|
262 Henry Spencer regular expressions
|
|
263 Dany St-Amant Macintosh port
|
|
264 Tim Thompson Stevie
|
|
265 G. R. (Fred) Walter Stevie
|
|
266 Sven Verdoolaege Perl interface
|
|
267 Robert Webb Command-line completion, GUI versions, and
|
|
268 lots of patches
|
|
269 Ingo Wilken Tcl interface
|
|
270 Mike Williams PostScript printing
|
|
271 Juergen Weigert Lattice version, AUX improvements, UNIX and
|
|
272 MS-DOS ports, autoconf
|
|
273 Stefan 'Sec' Zehl Maintainer of vim.org
|
|
274
|
|
275 I wish to thank all the people that sent me bug reports and suggestions. The
|
|
276 list is too long to mention them all here. Vim would not be the same without
|
|
277 the ideas from all these people: They keep Vim alive!
|
|
278
|
|
279
|
|
280 In this documentation there are several references to other versions of Vi:
|
39
|
281 *Vi* *vi*
|
7
|
282 Vi "the original". Without further remarks this is the version
|
|
283 of Vi that appeared in Sun OS 4.x. ":version" returns
|
|
284 "Version 3.7, 6/7/85". Sometimes other versions are referred
|
|
285 to. Only runs under Unix. Source code only available with a
|
|
286 license. More information on Vi can be found through:
|
|
287 http://vi-editor.org [doesn't currently work...]
|
|
288 *Posix*
|
|
289 Posix From the IEEE standard 1003.2, Part 2: Shell and utilities.
|
|
290 Generally known as "Posix". This is a textual description of
|
|
291 how Vi is supposed to work.
|
|
292 The version used is a draft from beginning 1996, so all remarks are
|
|
293 "expected to comply to" this. Anything can change though...
|
|
294 *Nvi*
|
|
295 Nvi The "New" Vi. The version of Vi that comes with BSD 4.4 and FreeBSD.
|
|
296 Very good compatibility with the original Vi, with a few extensions.
|
|
297 The version used is 1.79. ":version" returns "Version 1.79
|
|
298 (10/23/96)". There has been no release the last few years, although
|
|
299 there is a development version 1.81.
|
|
300 Source code is freely available.
|
|
301 *Elvis*
|
|
302 Elvis Another Vi clone, made by Steve Kirkendall. Very compact but isn't
|
|
303 as flexible as Vim.
|
|
304 The version used is 2.1. It is still being developed. Source code is
|
|
305 freely available.
|
|
306
|
|
307 ==============================================================================
|
|
308 4. Notation *notation*
|
|
309
|
|
310 When syntax highlighting is used to read this, text that is not typed
|
|
311 literally is often highlighted with the Special group. These are items in [],
|
|
312 {} and <>, and CTRL-X.
|
|
313
|
|
314 Note that Vim uses all possible characters in commands. Sometimes the [], {}
|
|
315 and <> are part of what you type, the context should make this clear.
|
|
316
|
|
317
|
|
318 [] Characters in square brackets are optional.
|
|
319
|
|
320 *count* *[count]* *E489*
|
|
321 [count] An optional number that may precede the command to multiply
|
|
322 or iterate the command. If no number is given, a count of one
|
|
323 is used, unless otherwise noted. Note that in this manual the
|
|
324 [count] is not mentioned in the description of the command,
|
|
325 but only in the explanation. This was done to make the
|
|
326 commands easier to look up. If the 'showcmd' option is on,
|
|
327 the (partially) entered count is shown at the bottom of the
|
|
328 window. You can use <Del> to erase the last digit (|N<Del>|).
|
|
329
|
|
330 *[quotex]*
|
|
331 ["x] An optional register designation where text can be stored.
|
|
332 See |registers|. The x is a single character between 'a' and
|
|
333 'z' or 'A' and 'Z' or '"', and in some cases (with the put
|
|
334 command) between '0' and '9', '%', '#', or others. The
|
|
335 uppercase and lowercase letter designate the same register,
|
|
336 but the lowercase letter is used to overwrite the previous
|
|
337 register contents, while the uppercase letter is used to
|
|
338 append to the previous register contents. Without the ""x" or
|
|
339 with """" the stored text is put into the unnamed register.
|
|
340
|
|
341 *{}*
|
|
342 {} Curly braces denote parts of the command which must appear,
|
|
343 but which can take a number of different values. The
|
|
344 differences between Vim and Vi are also given in curly braces
|
|
345 (this will be clear from the context).
|
|
346
|
|
347 *{char1-char2}*
|
|
348 {char1-char2} A single character from the range char1 to char2. For
|
|
349 example: {a-z} is a lowercase letter. Multiple ranges may be
|
|
350 concatenated. For example, {a-zA-Z0-9} is any alphanumeric
|
|
351 character.
|
|
352
|
36
|
353 *{motion}* *movement*
|
7
|
354 {motion} A command that moves the cursor. These are explained in
|
|
355 |motion.txt|. Examples:
|
|
356 w to start of next word
|
|
357 b to begin of current word
|
|
358 4j four lines down
|
|
359 /The<CR> to next occurrence of "The"
|
|
360 This is used after an |operator| command to move over the text
|
|
361 that is to be operated upon.
|
|
362 - If the motion includes a count and the operator also has a
|
|
363 count, the two counts are multiplied. For example: "2d3w"
|
|
364 deletes six words.
|
|
365 - The motion can be backwards, e.g. "db" to delete to the
|
|
366 start of the word.
|
|
367 - The motion can also be a mouse click. The mouse is not
|
|
368 supported in every terminal though.
|
|
369 - The ":omap" command can be used to map characters while an
|
|
370 operator is pending.
|
|
371 - Ex commands can be used to move the cursor. This can be
|
|
372 used to call a function that does some complicated motion.
|
|
373 The motion is always characterwise exclusive, no matter
|
|
374 what ":" command is used. This means it's impossible to
|
|
375 include the last character of a line without the line break
|
|
376 (unless 'virtualedit' is set).
|
|
377 If the Ex command changes the text before where the operator
|
|
378 starts or jumps to another buffer the result is
|
|
379 unpredictable. It is possible to change the text further
|
|
380 down. Jumping to another buffer is possible if the current
|
|
381 buffer is not unloaded.
|
|
382
|
|
383 *{Visual}*
|
|
384 {Visual} A selected text area. It is started with the "v", "V", or
|
|
385 CTRL-V command, then any cursor movement command can be used
|
|
386 to change the end of the selected text.
|
|
387 This is used before an |operator| command to highlight the
|
|
388 text that is to be operated upon.
|
|
389 See |Visual-mode|.
|
|
390
|
|
391 *<character>*
|
|
392 <character> A special character from the table below, optionally with
|
|
393 modifiers, or a single ASCII character with modifiers.
|
|
394
|
|
395 *'character'*
|
|
396 'c' A single ASCII character.
|
|
397
|
|
398 *CTRL-{char}*
|
|
399 CTRL-{char} {char} typed as a control character; that is, typing {char}
|
|
400 while holding the CTRL key down. The case of {char} does not
|
|
401 matter; thus CTRL-A and CTRL-a are equivalent. But on some
|
|
402 terminals, using the SHIFT key will produce another code,
|
|
403 don't use it then.
|
|
404
|
|
405 *'option'*
|
|
406 'option' An option, or parameter, that can be set to a value, is
|
|
407 enclosed in single quotes. See |options|.
|
|
408
|
|
409 *quotecommandquote*
|
|
410 "command" A reference to a command that you can type is enclosed in
|
|
411 double quotes.
|
|
412
|
|
413 *key-notation* *key-codes* *keycodes*
|
|
414 These names for keys are used in the documentation. They can also be used
|
|
415 with the ":map" command (insert the key name by pressing CTRL-K and then the
|
|
416 key you want the name for).
|
|
417
|
|
418 notation meaning equivalent decimal value(s) ~
|
|
419 -----------------------------------------------------------------------
|
|
420 <Nul> zero CTRL-@ 0 (stored as 10) *<Nul>*
|
|
421 <BS> backspace CTRL-H 8 *backspace*
|
|
422 <Tab> tab CTRL-I 9 *tab* *Tab*
|
|
423 *linefeed*
|
|
424 <NL> linefeed CTRL-J 10 (used for <Nul>)
|
|
425 <FF> formfeed CTRL-L 12 *formfeed*
|
|
426 <CR> carriage return CTRL-M 13 *carriage-return*
|
|
427 <Return> same as <CR> *<Return>*
|
|
428 <Enter> same as <CR> *<Enter>*
|
|
429 <Esc> escape CTRL-[ 27 *escape* *<Esc>*
|
|
430 <Space> space 32 *space*
|
|
431 <lt> less-than < 60 *<lt>*
|
|
432 <Bslash> backslash \ 92 *backslash* *<Bslash>*
|
|
433 <Bar> vertical bar | 124 *<Bar>*
|
|
434 <Del> delete 127
|
|
435 <CSI> command sequence intro ALT-Esc 155 *<CSI>*
|
|
436 <xCSI> CSI when typed in the GUI *<xCSI>*
|
|
437
|
|
438 <EOL> end-of-line (can be <CR>, <LF> or <CR><LF>,
|
|
439 depends on system and 'fileformat') *<EOL>*
|
|
440
|
|
441 <Up> cursor-up *cursor-up* *cursor_up*
|
|
442 <Down> cursor-down *cursor-down* *cursor_down*
|
|
443 <Left> cursor-left *cursor-left* *cursor_left*
|
|
444 <Right> cursor-right *cursor-right* *cursor_right*
|
|
445 <S-Up> shift-cursor-up
|
|
446 <S-Down> shift-cursor-down
|
|
447 <S-Left> shift-cursor-left
|
|
448 <S-Right> shift-cursor-right
|
|
449 <C-Left> control-cursor-left
|
|
450 <C-Right> control-cursor-right
|
|
451 <F1> - <F12> function keys 1 to 12 *function_key* *function-key*
|
|
452 <S-F1> - <S-F12> shift-function keys 1 to 12 *<S-F1>*
|
|
453 <Help> help key
|
|
454 <Undo> undo key
|
|
455 <Insert> insert key
|
|
456 <Home> home *home*
|
|
457 <End> end *end*
|
|
458 <PageUp> page-up *page_up* *page-up*
|
|
459 <PageDown> page-down *page_down* *page-down*
|
|
460 <kHome> keypad home (upper left) *keypad-home*
|
|
461 <kEnd> keypad end (lower left) *keypad-end*
|
|
462 <kPageUp> keypad page-up (upper right) *keypad-page-up*
|
|
463 <kPageDown> keypad page-down (lower right) *keypad-page-down*
|
|
464 <kPlus> keypad + *keypad-plus*
|
|
465 <kMinus> keypad - *keypad-minus*
|
|
466 <kMultiply> keypad * *keypad-multiply*
|
|
467 <kDivide> keypad / *keypad-divide*
|
|
468 <kEnter> keypad Enter *keypad-enter*
|
|
469 <kPoint> keypad Decimal point *keypad-point*
|
|
470 <k0> - <k9> keypad 0 to 9 *keypad-0* *keypad-9*
|
|
471 <S-...> shift-key *shift* *<S-*
|
|
472 <C-...> control-key *control* *ctrl* *<C-*
|
|
473 <M-...> alt-key or meta-key *meta* *alt* *<M-*
|
|
474 <A-...> same as <M-...> *<A-*
|
|
475 <D-...> command-key (Macintosh only) *<D-*
|
|
476 <t_xx> key with "xx" entry in termcap
|
|
477 -----------------------------------------------------------------------
|
|
478
|
|
479 Note: The shifted cursor keys, the help key, and the undo key are only
|
|
480 available on a few terminals. On the Amiga, shifted function key 10 produces
|
|
481 a code (CSI) that is also used by key sequences. It will be recognized only
|
|
482 after typing another key.
|
|
483
|
|
484 Note: There are two codes for the delete key. 127 is the decimal ASCII value
|
|
485 for the delete key, which is always recognized. Some delete keys send another
|
|
486 value, in which case this value is obtained from the termcap entry "kD". Both
|
|
487 values have the same effect. Also see |:fixdel|.
|
|
488
|
|
489 Note: The keypad keys are used in the same way as the corresponding "normal"
|
|
490 keys. For example, <kHome> has the same effect as <Home>. If a keypad key
|
|
491 sends the same raw key code as its non-keypad equivalent, it will be
|
|
492 recognized as the non-keypad code. For example, when <kHome> sends the same
|
|
493 code as <Home>, when pressing <kHome> Vim will think <Home> was pressed.
|
|
494 Mapping <kHome> will not work then.
|
|
495
|
|
496 *<>*
|
|
497 Examples are often given in the <> notation. Sometimes this is just to make
|
|
498 clear what you need to type, but often it can be typed literally, e.g., with
|
|
499 the ":map" command. The rules are:
|
|
500 1. Any printable characters are typed directly, except backslash and '<'
|
|
501 2. A backslash is represented with "\\", double backslash, or "<Bslash>".
|
|
502 3. A real '<' is represented with "\<" or "<lt>". When there is no
|
|
503 confusion possible, a '<' can be used directly.
|
|
504 4. "<key>" means the special key typed. This is the notation explained in
|
|
505 the table above. A few examples:
|
|
506 <Esc> Escape key
|
|
507 <C-G> CTRL-G
|
|
508 <Up> cursor up key
|
|
509 <C-LeftMouse> Control- left mouse click
|
|
510 <S-F11> Shifted function key 11
|
|
511 <M-a> Meta- a ('a' with bit 8 set)
|
|
512 <M-A> Meta- A ('A' with bit 8 set)
|
|
513 <t_kd> "kd" termcap entry (cursor down key)
|
|
514
|
|
515 If you want to use the full <> notation in Vim, you have to make sure the '<'
|
|
516 flag is excluded from 'cpoptions' (when 'compatible' is not set, it already is
|
|
517 by default). >
|
|
518 :set cpo-=<
|
|
519 The <> notation uses <lt> to escape the special meaning of key names. Using a
|
|
520 backslash also works, but only when 'cpoptions' does not include the 'B' flag.
|
|
521
|
|
522 Examples for mapping CTRL-H to the six characters "<Home>": >
|
|
523 :imap <C-H> \<Home>
|
|
524 :imap <C-H> <lt>Home>
|
|
525 The first one only works when the 'B' flag is not in 'cpoptions'. The second
|
|
526 one always works.
|
|
527 To get a literal "<lt>" in a mapping: >
|
|
528 :map <C-L> <lt>lt>
|
|
529
|
|
530 For mapping, abbreviation and menu commands you can then copy-paste the
|
|
531 examples and use them directly. Or type them literally, including the '<' and
|
|
532 '>' characters. This does NOT work for other commands, like ":set" and
|
|
533 ":autocmd"!
|
|
534
|
|
535 ==============================================================================
|
|
536 5. Modes, introduction *vim-modes-intro* *vim-modes*
|
|
537
|
|
538 Vim has six BASIC modes:
|
|
539
|
|
540 *Normal* *Normal-mode* *command-mode*
|
|
541 Normal mode In Normal mode you can enter all the normal editor
|
|
542 commands. If you start the editor you are in this
|
|
543 mode (unless you have set the 'insertmode' option,
|
|
544 see below). This is also known as command mode.
|
|
545
|
|
546 Visual mode This is like Normal mode, but the movement commands
|
|
547 extend a highlighted area. When a non-movement
|
|
548 command is used, it is executed for the highlighted
|
|
549 area. See |Visual-mode|.
|
|
550 If the 'showmode' option is on "-- VISUAL --" is shown
|
|
551 at the bottom of the window.
|
|
552
|
|
553 Select mode This looks most like the MS-Windows selection mode.
|
|
554 Typing a printable character deletes the selection
|
|
555 and starts Insert mode. See |Select-mode|.
|
|
556 If the 'showmode' option is on "-- SELECT --" is shown
|
|
557 at the bottom of the window.
|
|
558
|
|
559 Insert mode In Insert mode the text you type is inserted into the
|
|
560 buffer. See |Insert-mode|.
|
|
561 If the 'showmode' option is on "-- INSERT --" is shown
|
|
562 at the bottom of the window.
|
|
563
|
|
564 Command-line mode In Command-line mode (also called Cmdline mode) you
|
|
565 Cmdline mode can enter one line of text at the bottom of the
|
|
566 window. This is for the Ex commands, ":", the pattern
|
|
567 search commands, "?" and "/", and the filter command,
|
|
568 "!". |Cmdline-mode|
|
|
569
|
|
570 Ex mode Like Command-line mode, but after entering a command
|
|
571 you remain in Ex mode. Very limited editing of the
|
|
572 command line. |Ex-mode|
|
|
573
|
|
574 There are five ADDITIONAL modes. These are variants of the BASIC modes:
|
|
575
|
|
576 *Operator-pending* *Operator-pending-mode*
|
|
577 Operator-pending mode This is like Normal mode, but after an operator
|
|
578 command has started, and Vim is waiting for a {motion}
|
|
579 to specify the text that the operator will work on.
|
|
580
|
|
581 Replace mode Replace mode is a special case of Insert mode. You
|
|
582 can do the same things as in Insert mode, but for
|
|
583 each character you enter, one character of the existing
|
|
584 text is deleted. See |Replace-mode|.
|
|
585 If the 'showmode' option is on "-- REPLACE --" is
|
|
586 shown at the bottom of the window.
|
|
587
|
|
588 Insert Normal mode Entered when CTRL-O given in Insert mode. This is
|
|
589 like Normal mode, but after executing one command Vim
|
|
590 returns to Insert mode.
|
|
591 If the 'showmode' option is on "-- (insert) --" is
|
|
592 shown at the bottom of the window.
|
|
593
|
|
594 Insert Visual mode Entered when starting a Visual selection from Insert
|
|
595 mode, e.g., by using CTRL-O and then "v", "V" or
|
|
596 CTRL-V. When the Visual selection ends, Vim returns
|
|
597 to Insert mode.
|
|
598 If the 'showmode' option is on "-- (insert) VISUAL --"
|
|
599 is shown at the bottom of the window.
|
|
600
|
|
601 Insert Select mode Entered when starting Select mode from Insert mode.
|
|
602 E.g., by dragging the mouse or <S-Right>.
|
|
603 When the Select mode ends, Vim returns to Insert mode.
|
|
604 If the 'showmode' option is on "-- (insert) SELECT --"
|
|
605 is shown at the bottom of the window.
|
|
606
|
|
607 ==============================================================================
|
|
608 6. Switching from mode to mode *mode-switching*
|
|
609
|
|
610 If for any reason you do not know which mode you are in, you can always get
|
|
611 back to Normal mode by typing <Esc> twice. This doesn't work for Ex mode
|
|
612 though, use ":visual".
|
|
613 You will know you are back in Normal mode when you see the screen flash or
|
|
614 hear the bell after you type <Esc>. However, when pressing <Esc> after using
|
|
615 CTRL-O in Insert mode you get a beep but you are still in Insert mode, type
|
|
616 <Esc> again.
|
|
617
|
|
618 *i_esc*
|
|
619 TO mode ~
|
|
620 Normal Visual Select Insert Replace Cmd-line Ex ~
|
|
621 FROM mode ~
|
|
622 Normal v V ^V *4 *1 R : / ? ! Q
|
|
623 Visual *2 ^G c C -- : --
|
|
624 Select *5 ^O ^G *6 -- -- --
|
|
625 Insert <Esc> -- -- <Insert> -- --
|
|
626 Replace <Esc> -- -- <Insert> -- --
|
|
627 Command-line *3 -- -- :start -- --
|
|
628 Ex :vi -- -- -- -- --
|
|
629
|
|
630 - NA
|
|
631 -- not possible
|
|
632
|
|
633 *1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
|
|
634 "A", "o", "O", "c", "C", "s" or S".
|
|
635 *2 Go from Visual mode to Normal mode by giving a non-movement command, which
|
|
636 causes the command to be executed, or by hitting <Esc> "v", "V" or "CTRL-V"
|
|
637 (see |v_v|), which just stops Visual mode without side effects.
|
|
638 *3 Go from Command-line mode to Normal mode by:
|
|
639 - Hitting <CR> or <NL>, which causes the entered command to be executed.
|
|
640 - Deleting the complete line (e.g., with CTRL-U) and giving a final <BS>.
|
|
641 - Hitting CTRL-C or <Esc>, which quits the command-line without executing
|
|
642 the command.
|
|
643 In the last case <Esc> may be the character defined with the 'wildchar'
|
|
644 option, in which case it will start command-line completion. You can
|
|
645 ignore that and type <Esc> again. {Vi: when hitting <Esc> the command-line
|
|
646 is executed. This is unexpected for most people; therefore it was changed
|
|
647 in Vim. But when the <Esc> is part of a mapping, the command-line is
|
|
648 executed. If you want the Vi behaviour also when typing <Esc>, use ":cmap
|
|
649 ^V<Esc> ^V^M"}
|
|
650 *4 Go from Normal to Select mode by:
|
|
651 - use the mouse to select text while 'selectmode' contains "mouse"
|
|
652 - use a non-printable command to move the cursor while keeping the Shift
|
|
653 key pressed, and the 'selectmode' option contains "key"
|
|
654 - use "v", "V" or "CTRL-V" while 'selectmode' contains "cmd"
|
|
655 - use "gh", "gH" or "g CTRL-H" |g_CTRL-H|
|
|
656 *5 Go from Select mode to Normal mode by using a non-printable command to move
|
|
657 the cursor, without keeping the Shift key pressed.
|
|
658 *6 Go from Select mode to Insert mode by typing a printable character. The
|
|
659 selection is deleted and the character is inserted.
|
|
660
|
|
661 If the 'insertmode' option is on, editing a file will start in Insert mode.
|
|
662
|
|
663 *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
|
|
664 Additionally the command CTRL-\ CTRL-N or <C-\><C-N> can be used to go to
|
|
665 Normal mode from any other mode. This can be used to make sure Vim is in
|
|
666 Normal mode, without causing a beep like <Esc> would. However, this does not
|
|
667 work in Ex mode. When used after a command that takes an argument, such as
|
|
668 |f| or |m|, the timeout set with 'ttimeoutlen' applies.
|
|
669
|
|
670 *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
|
|
671 The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
|
|
672 'insertmode' is set. Otherwise it goes to Normal mode. This can be used to
|
|
673 make sure Vim is in the mode indicated by 'insertmode', without knowing in
|
|
674 what mode Vim currently is.
|
|
675
|
|
676 *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
|
|
677 Q Switch to "Ex" mode. This is a bit like typing ":"
|
|
678 commands one after another, except:
|
|
679 - You don't have to keep pressing ":".
|
|
680 - The screen doesn't get updated after each command.
|
|
681 - There is no normal command-line editing.
|
|
682 - Mappings and abbreviations are not used.
|
|
683 In fact, you are editing the lines with the "standard"
|
|
684 line-input editing commands (<Del> or <BS> to erase,
|
|
685 CTRL-U to kill the whole line).
|
|
686 Vim will enter this mode by default if it's invoked as
|
|
687 "ex" on the command-line.
|
|
688 Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
689 Note: In older versions of Vim "Q" formatted text,
|
|
690 that is now done with |gq|. But if you use the
|
|
691 |vimrc_example.vim| script "Q" works like "gq".
|
|
692
|
|
693 *gQ*
|
|
694 gQ Switch to "Ex" mode, but really behave like typing ":"
|
|
695 commands after another. All command line editing,
|
|
696 completion etc. is available.
|
|
697 Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
698 {not in Vi}
|
|
699
|
|
700 ==============================================================================
|
|
701 7. The window contents *window-contents*
|
|
702
|
|
703 In Normal mode and Insert/Replace mode the screen window will show the current
|
|
704 contents of the buffer: What You See Is What You Get. There are two
|
|
705 exceptions:
|
|
706 - When the 'cpoptions' option contains '$', and the change is within one line,
|
|
707 the text is not directly deleted, but a '$' is put at the last deleted
|
|
708 character.
|
|
709 - When inserting text in one window, other windows on the same text are not
|
|
710 updated until the insert is finished.
|
|
711 {Vi: The screen is not always updated on slow terminals}
|
|
712
|
|
713 Lines longer than the window width will wrap, unless the 'wrap' option is off
|
|
714 (see below). The 'linebreak' option can be set to wrap at a blank character.
|
|
715
|
|
716 If the window has room after the last line of the buffer, Vim will show '~' in
|
|
717 the first column of the last lines in the window, like this: >
|
|
718
|
|
719 +-----------------------+
|
|
720 |some line |
|
|
721 |last line |
|
|
722 |~ |
|
|
723 |~ |
|
|
724 +-----------------------+
|
|
725
|
|
726 Thus the '~' lines indicate that the end of the buffer was reached.
|
|
727
|
|
728 If the last line in a window doesn't fit, Vim will indicate this with a '@' in
|
|
729 the first column of the last lines in the window, like this: >
|
|
730
|
|
731 +-----------------------+
|
|
732 |first line |
|
|
733 |second line |
|
|
734 |@ |
|
|
735 |@ |
|
|
736 +-----------------------+
|
|
737
|
|
738 Thus the '@' lines indicate that there is a line that doesn't fit in the
|
|
739 window.
|
|
740
|
|
741 When the "lastline" flag is present in the 'display' option, you will not see
|
|
742 '@' characters at the left side of window. If the last line doesn't fit
|
|
743 completely, only the part that fits is shown, and the last three characters of
|
|
744 the last line are replaced with "@@@", like this: >
|
|
745
|
|
746 +-----------------------+
|
|
747 |first line |
|
|
748 |second line |
|
|
749 |a very long line that d|
|
|
750 |oesn't fit in the wi@@@|
|
|
751 +-----------------------+
|
|
752
|
|
753 If there is a single line that is too long to fit in the window, this is a
|
|
754 special situation. Vim will show only part of the line, around where the
|
|
755 cursor is. There are no special characters shown, so that you can edit all
|
|
756 parts of this line.
|
|
757 {Vi: gives an "internal error" on lines that do not fit in the window}
|
|
758
|
|
759 The '@' occasion in the 'highlight' option can be used to set special
|
|
760 highlighting for the '@' and '~' characters. This makes it possible to
|
|
761 distinguish them from real characters in the buffer.
|
|
762
|
|
763 The 'showbreak' option contains the string to put in front of wrapped lines.
|
|
764
|
|
765 *wrap-off*
|
|
766 If the 'wrap' option is off, long lines will not wrap. Only the part that
|
|
767 fits on the screen is shown. If the cursor is moved to a part of the line
|
|
768 that is not shown, the screen is scrolled horizontally. The advantage of
|
|
769 this method is that columns are shown as they are and lines that cannot fit
|
|
770 on the screen can be edited. The disadvantage is that you cannot see all the
|
|
771 characters of a line at once. The 'sidescroll' option can be set to the
|
|
772 minimal number of columns to scroll. {Vi: has no 'wrap' option}
|
|
773
|
|
774 All normal ASCII characters are displayed directly on the screen. The <Tab>
|
|
775 is replaced with the number of spaces that it represents. Other non-printing
|
|
776 characters are replaced with "^{char}", where {char} is the non-printing
|
|
777 character with 64 added. Thus character 7 (bell) will be shown as "^G".
|
|
778 Characters between 127 and 160 are replaced with "~{char}", where {char} is
|
|
779 the character with 64 subtracted. These characters occupy more than one
|
|
780 position on the screen. The cursor can only be positioned on the first one.
|
|
781
|
|
782 If you set the 'number' option, all lines will be preceded with their
|
|
783 number. Tip: If you don't like wrapping lines to mix with the line numbers,
|
|
784 set the 'showbreak' option to eight spaces:
|
|
785 ":set showbreak=\ \ \ \ \ \ \ \ "
|
|
786
|
|
787 If you set the 'list' option, <Tab> characters will not be shown as several
|
|
788 spaces, but as "^I". A '$' will be placed at the end of the line, so you can
|
|
789 find trailing blanks.
|
|
790
|
|
791 In Command-line mode only the command-line itself is shown correctly. The
|
|
792 display of the buffer contents is updated as soon as you go back to Command
|
|
793 mode.
|
|
794
|
|
795 The last line of the window is used for status and other messages. The
|
|
796 status messages will only be used if an option is on:
|
|
797
|
|
798 status message option default Unix default ~
|
|
799 current mode 'showmode' on on
|
|
800 command characters 'showcmd' on off
|
|
801 cursor position 'ruler' off off
|
|
802
|
|
803 The current mode is "-- INSERT --" or "-- REPLACE --", see |'showmode'|. The
|
|
804 command characters are those that you typed but were not used yet. {Vi: does
|
|
805 not show the characters you typed or the cursor position}
|
|
806
|
|
807 If you have a slow terminal you can switch off the status messages to speed
|
|
808 up editing:
|
|
809 :set nosc noru nosm
|
|
810
|
|
811 If there is an error, an error message will be shown for at least one second
|
|
812 (in reverse video). {Vi: error messages may be overwritten with other
|
|
813 messages before you have a chance to read them}
|
|
814
|
|
815 Some commands show how many lines were affected. Above which threshold this
|
|
816 happens can be controlled with the 'report' option (default 2).
|
|
817
|
|
818 On the Amiga Vim will run in a CLI window. The name Vim and the full name of
|
|
819 the current file name will be shown in the title bar. When the window is
|
|
820 resized, Vim will automatically redraw the window. You may make the window as
|
|
821 small as you like, but if it gets too small not a single line will fit in it.
|
|
822 Make it at least 40 characters wide to be able to read most messages on the
|
|
823 last line.
|
|
824
|
|
825 On most Unix systems, resizing the window is recognized and handled correctly
|
|
826 by Vim. {Vi: not ok}
|
|
827
|
|
828 ==============================================================================
|
|
829 8. Definitions *definitions*
|
|
830
|
|
831 screen The whole area that Vim uses to work in. This can be
|
|
832 a terminal emulator window. Also called "the Vim
|
|
833 window".
|
|
834 window A view on a buffer.
|
|
835
|
|
836 A screen contains one or more windows, separated by status lines and with the
|
|
837 command line at the bottom.
|
|
838
|
|
839 +-------------------------------+
|
|
840 screen | window 1 | window 2 |
|
|
841 | | |
|
|
842 | | |
|
|
843 |= status line =|= status line =|
|
|
844 | window 3 |
|
|
845 | |
|
|
846 | |
|
|
847 |==== status line ==============|
|
|
848 |command line |
|
|
849 +-------------------------------+
|
|
850
|
|
851 The command line is also used for messages. It scrolls up the screen when
|
|
852 there is not enough room in the command line.
|
|
853
|
|
854 A difference is made between four types of lines:
|
|
855
|
|
856 buffer lines The lines in the buffer. This is the same as the
|
|
857 lines as they are read from/written to a file. They
|
|
858 can be thousands of characters long.
|
|
859 logical lines The buffer lines with folding applied. Buffer lines
|
|
860 in a closed fold are changed to a single logical line:
|
|
861 "+-- 99 lines folded". They can be thousands of
|
|
862 characters long.
|
|
863 window lines The lines displayed in a window: A range of logical
|
|
864 lines with wrapping, line breaks, etc. applied. They
|
|
865 can only be as long as the width of the window allows,
|
|
866 longer lines are wrapped or truncated.
|
|
867 screen lines The lines of the screen that Vim uses. Consists of
|
|
868 the window lines of all windows, with status lines
|
|
869 and the command line added. They can only be as long
|
|
870 as the width of the screen allows. When the command
|
|
871 line gets longer it wraps and lines are scrolled to
|
|
872 make room.
|
|
873
|
|
874 buffer lines logical lines window lines screen lines ~
|
|
875
|
|
876 1. one 1. one 1. +-- folded 1. +-- folded
|
|
877 2. two 2. +-- folded 2. five 2. five
|
|
878 3. three 3. five 3. six 3. six
|
|
879 4. four 4. six 4. seven 4. seven
|
|
880 5. five 5. seven 5. === status line ===
|
|
881 6. six 6. aaa
|
|
882 7. seven 7. bbb
|
|
883 8. ccc ccc c
|
|
884 1. aaa 1. aaa 1. aaa 9. cc
|
|
885 2. bbb 2. bbb 2. bbb 10. ddd
|
|
886 3. ccc ccc ccc 3. ccc ccc ccc 3. ccc ccc c 11. ~
|
|
887 4. ddd 4. ddd 4. cc 12. === status line ===
|
|
888 5. ddd 13. (command line)
|
|
889 6. ~
|
|
890
|
|
891 ==============================================================================
|
|
892 vim:tw=78:ts=8:ft=help:norl:
|