1*starting.txt* For Vim version 7.0aa. Last change: 2004 Jun 18 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar 5 6 7Starting Vim *starting* 8 91. Vim arguments |vim-arguments| 102. Vim on the Amiga |starting-amiga| 113. Running eVim |evim-keys| 124. Initialization |initialization| 135. $VIM and $VIMRUNTIME |$VIM| 146. Suspending |suspend| 157. Saving settings |save-settings| 168. Views and Sessions |views-sessions| 179. The viminfo file |viminfo-file| 18 19============================================================================== 201. Vim arguments *vim-arguments* 21 22Most often, Vim is started to edit a single file with the command 23 24 vim filename *-vim* 25 26More generally, Vim is started with: 27 28 vim [option | filename] .. 29 30Option arguments and file name arguments can be mixed, and any number of them 31can be given. However, watch out for options that take an argument. 32 33For compatibility with various Vi versions, see |cmdline-arguments|. 34 35Exactly one out of the following five items may be used to choose how to 36start editing: 37 38 *-file* *---* 39filename One or more file names. The first one will be the current 40 file and read into the buffer. The cursor will be positioned 41 on the first line of the buffer. 42 To avoid a file name starting with a '-' being interpreted as 43 an option, precede the arglist with "--", e.g.: > 44 vim -- -filename 45< All arguments after the "--" will be interpreted as file names, 46 no other options or "+command" argument can follow. 47 48 *--* 49- This argument can mean two things, depending on whether Ex 50 mode is to be used. 51 52 Starting in Normal mode: > 53 vim - 54 ex -v - 55< Start editing a new buffer, which is filled with text 56 that is read from stdin. The commands that would normally be 57 read from stdin will now be read from stderr. Example: > 58 find . -name "*.c" -print | vim - 59< The buffer will be marked modified, because it contains text 60 that needs to be saved. Except when in readonly mode, then 61 the buffer is not marked modified. Example: > 62 ls | view - 63< 64 Starting in Ex mode: > 65 ex - 66 vim -e - 67 exim - 68 vim -E 69< Start editing in silent mode. See |-s-ex|. 70 71 *-t* *-tag* 72-t {tag} A tag. "tag" is looked up in the tags file, the associated 73 file becomes the current file, and the associated command is 74 executed. Mostly this is used for C programs, in which case 75 "tag" often is a function name. The effect is that the file 76 containing that function becomes the current file and the 77 cursor is positioned on the start of the function (see 78 |tags|). 79 80 *-q* *-qf* 81-q [errorfile] QuickFix mode. The file with the name [errorfile] is read 82 and the first error is displayed. See |quickfix|. 83 If [errorfile] is not given, the 'errorfile' option is used 84 for the file name. See 'errorfile' for the default value. 85 {not in Vi} 86 87(nothing) Without one of the four items above, Vim will start editing a 88 new buffer. It's empty and doesn't have a file name. 89 90 91The startup mode can be changed by using another name instead of "vim", which 92is equal to giving options: 93ex vim -e Start in Ex mode (see |Ex-mode|). *ex* 94exim vim -E Start in improved Ex mode (see |Ex-mode|). *exim* 95 (normally not installed) 96view vim -R Start in read-only mode (see |-R|). *view* 97gvim vim -g Start the GUI (see |gui|). *gvim* 98gex vim -eg Start the GUI in Ex mode. *gex* 99gview vim -Rg Start the GUI in read-only mode. *gview* 100rvim vim -Z Like "vim", but in restricted mode (see |-Z|) *rvim* 101rview vim -RZ Like "view", but in restricted mode. *rview* 102rgvim vim -gZ Like "gvim", but in restricted mode. *rgvim* 103rgview vim -RgZ Like "gview", but in restricted mode. *rgview* 104evim vim -y Easy Vim: set 'insertmode' (see |-y|) *evim* 105eview vim -yR Like "evim" in read-only mode *eview* 106vimdiff vim -d Start in diff mode |diff-mode| 107gvimdiff vim -gd Start in diff mode |diff-mode| 108 109Additional characters may follow, they are ignored. For example, you can have 110"gvim-5" to start the GUI. You must have an executable by that name then, of 111course. 112 113On Unix, you would normally have one executable called Vim, and links from the 114different startup-names to that executable. If your system does not support 115links and you do not want to have several copies of the executable, you could 116use an alias instead. For example: > 117 alias view vim -R 118 alias gvim vim -g 119< 120 *startup-options* 121The option arguments may be given in any order. Single-letter options can be 122combined after one dash. There can be no option arguments after the "--" 123argument. 124 125On VMS all option arguments are assumed to be lowercase, unless preceded with 126a slash. Thus "-R" means recovery and "-/R" readonly. 127 128--help *-h* *--help* 129-h Give usage (help) message and exit. {not in Vi} 130 See |info-message| about capturing the text. 131 132 *--version* 133--version Print version information and exit. Same output as for 134 |:version| command. {not in Vi} 135 See |info-message| about capturing the text. 136 137 *--noplugin* 138--noplugin Skip loading plugins. Resets the 'loadplugins' option. 139 {not in Vi} 140 Note that the |-u| argument may also disable loading plugins: 141 argument load vimrc files load plugins ~ 142 (nothing) yes yes 143 -u NONE no no 144 -u NORC no yes 145 --noplugin yes no 146 147 *--literal* 148--literal Take file names literally, don't expand wildcards. Not needed 149 for Unix, because Vim always takes file names literally (the 150 shell expands wildcards). 151 Applies to all the names, also the ones that come before this 152 argument. 153 154 *-+* 155+[num] The cursor will be positioned on line "num" for the first 156 file being edited. If "num" is missing, the cursor will be 157 positioned on the last line. 158 159 *-+/* 160+/{pat} The cursor will be positioned on the first line containing 161 "pat" in the first file being edited (see |pattern| for the 162 available search patterns). 163 164+{command} *-+c* *-c* 165-c {command} {command} will be executed after the first file has been 166 read (and after autocommands and modelines for that file have 167 been processed). "command" is interpreted as an Ex command. 168 If the "command" contains spaces, it must be enclosed in 169 double quotes (this depends on the shell that is used). 170 Example: > 171 vim "+set si" main.c 172 vim "+find stdio.h" 173 vim -c "set ff=dos" -c wq mine.mak 174< 175 Note: You can use up to 10 "+" or "-c" arguments in a Vim 176 command. They are executed in the order given. A "-S" 177 argument counts as a "-c" argument as well. 178 {Vi only allows one command} 179 180--cmd {command} *--cmd* 181 {command} will be executed before processing any vimrc file. 182 Otherwise it acts like -c {command}. You can use up to 10 of 183 these commands, independently from "-c" commands. 184 {not in Vi} 185 186 *-S* 187-S {file} The {file} will be sourced after the first file has been read. 188 This is an easy way to do the equivalent of: > 189 -c "source {file}" 190< It can be mixed with "-c" arguments and repeated like "-c". 191 The limit of 10 "-c" arguments applies here as well. 192 {file} cannot start with a "-". 193 {not in Vi} 194 195-S Works like "-S Session.vim". Only when used as the last 196 argument or when another "-" option follows. 197 198 *-r* 199-r Recovery mode. Without a file name argument, a list of 200 existing swap files is given. With a file name, a swap file 201 is read to recover a crashed editing session. See 202 |crash-recovery|. 203 204 *-L* 205-L Same as -r. {only in some versions of Vi: "List recoverable 206 edit sessions"} 207 208 *-R* 209-R Readonly mode. The 'readonly' option will be set for all the 210 files being edited. You can still edit the buffer, but will 211 be prevented from accidentally overwriting a file. If you 212 forgot that you are in View mode and did make some changes, 213 you can overwrite a file by adding an exclamation mark to 214 the Ex command, as in ":w!". The 'readonly' option can be 215 reset with ":set noro" (see the options chapter, |options|). 216 Subsequent edits will not be done in readonly mode. Calling 217 the executable "view" has the same effect as the -R argument. 218 The 'updatecount' option will be set to 10000, meaning that 219 the swap file will not be updated automatically very often. 220 221 *-m* 222-m Modifications not allowed to be written. The 'write' option 223 will be reset, so that writing files is disabled. However, 224 the 'write' option can be set to enable writing again. 225 {not in Vi} 226 227 *-M* 228-M Modifications not allowed. The 'modifiable' option will be 229 reset, so that changes are not allowed. The 'write' option 230 will be reset, so that writing files is disabled. However, 231 the 'modifiable' and 'write' options can be set to enable 232 changes and writing. 233 {not in Vi} 234 235 *-Z* *restricted-mode* *E145* 236-Z Restricted mode. All commands that make use of an external 237 shell are disabled. This includes suspending with CTRL-Z, 238 ":sh", filtering, the system() function, backtick expansion, 239 etc. 240 {not in Vi} 241 242 *-g* 243-g Start Vim in GUI mode. See |gui|. {not in Vi} 244 245 *-v* 246-v Start Ex in Vi mode. Only makes a difference when the 247 executable is called "ex" or "gvim". For gvim the GUI is not 248 started if possible. 249 250 *-e* 251-e Start Vim in Ex mode |Q|. Only makes a difference when the 252 executable is not called "ex". 253 254 *-E* 255-E Start Vim in improved Ex mode |gQ|. Only makes a difference 256 when the executable is not called "exim". 257 {not in Vi} 258 259 *-s-ex* 260-s Silent or batch mode. Only when Vim was started as "ex" or 261 when preceded with the "-e" argument. Otherwise see |-s|, 262 which does take an argument while this use of "-s" doesn't. 263 To be used when Vim is used to execute Ex commands from a file 264 instead of a terminal. Switches off most prompts and 265 informative messages. Also warnings and error messages. 266 But ":print" output is displayed. And when 'verbose' is 267 non-zero messages are printed (for debugging). 268 If Vim appears to be stuck try typing "qa!<Enter>". You don't 269 get a prompt thus you can't see Vim is waiting for you to type 270 something. 271 Initializations are skipped (except the ones given with the 272 "-u" argument). 273 Example: > 274 vim -e -s < thefilter thefile 275< 276 *-b* 277-b Binary mode. File I/O will only recognize <NL> to separate 278 lines. The 'expandtab' option will be reset. The 'textwidth' 279 option is set to 0. 'modeline' is reset. The 'binary' option 280 is set. This is done after reading the vimrc/exrc files but 281 before reading any file in the arglist. See also 282 |edit-binary|. {not in Vi} 283 284 *-l* 285-l Lisp mode. Sets the 'lisp' and 'showmatch' options on. 286 287 *-A* 288-A Arabic mode. Sets the 'arabic' option on. (Only when 289 compiled with the |+arabic| features (which include 290 |+rightleft|), otherwise Vim gives an error message 291 and exits. {not in Vi} 292 293 *-F* 294-F Farsi mode. Sets the 'fkmap' and 'rightleft' options on. 295 (Only when compiled with |+rightleft| and |+farsi| features, 296 otherwise Vim gives an error message and exits). {not in Vi} 297 298 *-H* 299-H Hebrew mode. Sets the 'hkmap' and 'rightleft' options on. 300 (Only when compiled with the |+rightleft| feature, otherwise 301 Vim gives an error message and exits). {not in Vi} 302 303 *-V* *verbose* 304-V[N] Verbose. Sets the 'verbose' option to [N] (default: 10). 305 Messages will be given for each file that is ":source"d and 306 for reading or writing a viminfo file. Can be used to find 307 out what is happening upon startup and exit. {not in Vi} 308 309 *-D* 310-D Debugging. Go to debugging mode when executing the first 311 command from a script. |debug-mode| 312 {not available when compiled without the |+eval| feature} 313 {not in Vi} 314 315 *-C* 316-C Compatible mode. Sets the 'compatible' option. You can use 317 this to get 'compatible', even though a .vimrc file exists. 318 But the command ":set nocompatible" overrules it anyway. 319 Also see |compatible-default|. {not in Vi} 320 321 *-N* 322-N Not compatible mode. Resets the 'compatible' option. You can 323 use this to get 'nocompatible', when there is no .vimrc file. 324 Also see |compatible-default|. {not in Vi} 325 326 *-y* *easy* 327-y Easy mode. Implied for |evim| and |eview|. Starts with 328 'insertmode' set and behaves like a click-and-type editor. 329 This sources the script $VIMRUNTIME/evim.vim. Mappings are 330 set up to work like most click-and-type editors, see 331 |evim-keys|. The GUI is started when available. 332 {not in Vi} 333 334 *-n* 335-n No swap file will be used. Recovery after a crash will be 336 impossible. Handy if you want to view or edit a file on a 337 very slow medium (e.g., a floppy). 338 Can also be done with ":set updatecount=0". You can switch it 339 on again by setting the 'updatecount' option to some value, 340 e.g., ":set uc=100". 341 'updatecount' is set to 0 AFTER executing commands from a 342 vimrc file, but before the GUI initializations. Thus it 343 overrides a setting for 'updatecount' in a vimrc file, but not 344 in a gvimrc file. See |startup|. 345 When you want to reduce accesses to the disk (e.g., for a 346 laptop), don't use "-n", but set 'updatetime' and 347 'updatecount' to very big numbers, and type ":preserve" when 348 you want to save your work. This way you keep the possibility 349 for crash recovery. 350 {not in Vi} 351 352 *-o* 353-o[N] Open N windows, split horizontally. If [N] is not given, 354 one window is opened for every file given as argument. If 355 there is not enough room, only the first few files get a 356 window. If there are more windows than arguments, the last 357 few windows will be editing an empty file. 358 {not in Vi} 359 360 *-O* 361-O[N] Open N windows, split vertically. Otherwise it's like -o. 362 If both the -o and the -O option are given, the last one on 363 the command line determines how the windows will be split. 364 {not in Vi} 365 366 *-T* 367-T {terminal} Set the terminal type to "terminal". This influences the 368 codes that Vim will send to your terminal. This is normally 369 not needed, because Vim will be able to find out what type 370 of terminal you are using (See |terminal-info|). {not in Vi} 371 372 *-d* 373-d Start in diff mode, like |vimdiff|. 374 {not in Vi} {not available when compiled without the |+diff| 375 feature} 376 377-d {device} Only on the Amiga and when not compiled with the |+diff| 378 feature. Works like "-dev". 379 *-dev* 380-dev {device} Only on the Amiga: The {device} is opened to be used for 381 editing. 382 Normally you would use this to set the window position and 383 size: "-d con:x/y/width/height", e.g., 384 "-d con:30/10/600/150". But you can also use it to start 385 editing on another device, e.g., AUX:. {not in Vi} 386 *-f* 387-f Amiga: Do not restart Vim to open a new window. This 388 option should be used when Vim is started by a program that 389 will wait for the edit session to finish (e.g., mail or 390 readnews). See |amiga-window|. 391 392 GUI: Do not disconnect from the program that started Vim. 393 'f' stands for "foreground". If omitted, the GUI forks a new 394 process and exits the current one. "-f" should be used when 395 gvim is started by a program that will wait for the edit 396 session to finish (e.g., mail or readnews). If you want gvim 397 never to fork, include 'f' in 'guioptions' in your .gvimrc. 398 Careful: You can use "-gf" to start the GUI in the foreground, 399 but "-fg" is used to specify the foreground color. |gui-fork| 400 {not in Vi} 401 402 *--nofork* 403--nofork GUI: Do not fork. Same as |-f|. 404 *-u* *E282* 405-u {vimrc} The file {vimrc} is read for initializations. Most other 406 initializations are skipped; see |initialization|. This can 407 be used to start Vim in a special mode, with special 408 mappings and settings. A shell alias can be used to make 409 this easy to use. For example: > 410 alias vimc vim -u ~/.c_vimrc !* 411< Also consider using autocommands; see |autocommand|. 412 When {vimrc} is equal to "NONE" (all uppercase), all 413 initializations from files and environment variables are 414 skipped, including reading the .gvimrc file when the GUI 415 starts. Loading plugins is also skipped. 416 When {vimrc} is equal to "NORC" (all uppercase), this has the 417 same effect as "NONE", but loading plugins is not skipped. 418 Using the "-u" argument has the side effect that the 419 'compatible' option will be on by default. This can have 420 unexpected effects. See |'compatible'|. 421 {not in Vi} 422 423 *-U* *E230* 424-U {gvimrc} The file "gvimrc" is read for initializations when the GUI 425 starts. Other GUI initializations are skipped. When {gvimrc} 426 is equal to "NONE", no file is read for initializations at 427 all. 428 Exception: Reading the system-wide menu file is always done. 429 {not in Vi} 430 431 *-i* 432-i {viminfo} The file "viminfo" is used instead of the default viminfo 433 file. If the name "NONE" is used (all uppercase), no viminfo 434 file is read or written, even if 'viminfo' is set or when 435 ":rv" or ":wv" are used. See also |viminfo-file|. 436 {not in Vi} 437 438 *-x* 439-x Use encryption to read/write files. Will prompt for a key, 440 which is then stored in the 'key' option. All writes will 441 then use this key to encrypt the text. The '-x' argument is 442 not needed when reading a file, because there is a check if 443 the file that is being read has been encrypted, and Vim asks 444 for a key automatically. |encryption| 445 446 *-X* 447-X Do not try connecting to the X server to get the current 448 window title and copy/paste using the X clipboard. This 449 avoids a long startup time when running Vim in a terminal 450 emulator and the connection to the X server is slow. 451 Only makes a difference on Unix or VMS, when compiled with the 452 |+X11| feature. Otherwise it's ignored. 453 To disable the connection only for specific terminals, see the 454 'clipboard' option. 455 When the X11 Session Management Protocol (XSMP) handler has 456 been built in, the -X option also disables that connection as 457 it, too, may have undesirable delays. 458 When the connection is desired later anyway (e.g., for 459 client-server messages), call the |serverlist()| function. 460 This does not enable the XSMP handler though. 461 {not in Vi} 462 463 *-s* 464-s {scriptin} The script file "scriptin" is read. The characters in the 465 file are interpreted as if you had typed them. The same can 466 be done with the command ":source! {scriptin}". If the end 467 of the file is reached before the editor exits, further 468 characters are read from the keyboard. Only works when not 469 started in Ex mode, see |-s-ex|. See also |complex-repeat|. 470 {not in Vi} 471 472 *-w* 473-w {scriptout} All the characters that you type are recorded in the file 474 "scriptout", until you exit Vim. This is useful if you want 475 to create a script file to be used with "vim -s" or 476 ":source!". When the "scriptout" file already exists, new 477 characters are appended. See also |complex-repeat|. 478 {not in Vi} 479 480 *-W* 481-W {scriptout} Like -w, but do not append, overwrite an existing file. 482 {not in Vi} 483 484 *-w_nr* 485-w{number} Does nothing. This was included for Vi-compatibility. In Vi 486 it sets the 'window' option, which is not implemented in Vim. 487 488--remote [+{cmd}] {file} ... 489 Open the {file} in another Vim that functions as a server. 490 Any non-file arguments must come before this. 491 See |--remote|. {not in Vi} 492 493--remote-silent [+{cmd}] {file} ... 494 Like --remote, but don't complain if there is no server. 495 See |--remote-silent|. {not in Vi} 496 497--remote-wait [+{cmd}] {file} ... 498 Like --remote, but wait for the server to finish editing the 499 file(s). 500 See |--remote-wait|. {not in Vi} 501 502--remote-wait-silent [+{cmd}] {file} ... 503 Like --remote-wait, but don't complain if there is no server. 504 See |--remote-wait-silent|. {not in Vi} 505 506--servername {name} 507 Specify the name of the Vim server to send to or to become. 508 See |--servername|. {not in Vi} 509 510--remote-send {keys} 511 Send {keys} to a Vim server and exit. 512 See |--remote-send|. {not in Vi} 513 514--remote-expr {expr} 515 Evaluate {expr} in another Vim that functions as a server. 516 The result is printed on stdout. 517 See |--remote-expr|. {not in Vi} 518 519--serverlist Output a list of Vim server names and exit. See 520 See |--serverlist|. {not in Vi} 521 522--socketid {id} *--socketid* 523 GTK+ GUI Vim only. Make gvim try to use GtkPlug mechanism, so 524 that it runs inside another window. See |gui-gtk-socketid| 525 for details. {not in Vi} 526 527--echo-wid *--echo-wid* 528 GTK+ GUI Vim only. Make gvim echo the Window ID on stdout, 529 which can be used to run gvim in a kpart widget. The format 530 of the output is: > 531 WID: 12345\n 532< {not in Vi} 533 534--role {role} *--role* 535 GTK+ 2 GUI only. Set the role of the main window to {role}. 536 The window role can be used by a window manager to uniquely 537 identify a window, in order to restore window placement and 538 such. The --role argument is passed automatically when 539 restoring the session on login. See |gui-gnome-session| 540 {not in Vi} 541 542-P {parent-title} *-P* *MDI* *E671* *E672* 543 Win32 only: Specify the title of the parent application. When 544 possible, Vim will run in an MDI window inside the 545 application. 546 {parent-title} must appear in the window title of the parent 547 application. Make sure that it is specific enough. 548 Note that the implementation is still primitive. It won't 549 work with all applications and the menu doesn't work. 550 551-nb *-nb* 552-nb={fname} 553-nb:{hostname}:{addr}:{password} 554 Attempt connecting to Netbeans and become an editor server for 555 it. The second form specifies a file to read connection info 556 from. The third form specifies the hostname, address and 557 password for connecting to Netbeans. |netbeans-run| 558 559Example for using a script file to change a name in several files: 560 Create a file "subs.vi" containing substitute commands and a :wq 561 command: > 562 :%s/Jones/Smith/g 563 :%s/Allen/Peter/g 564 :wq 565< 566 Execute Vim on all files you want to change: > 567 568 foreach i ( *.let ) vim -s subs.vi $i 569 570If the executable is called "view", Vim will start in Readonly mode. This is 571useful if you can make a hard or symbolic link from "view" to "vim". 572Starting in Readonly mode can also be done with "vim -R". 573 574If the executable is called "ex", Vim will start in "Ex" mode. This means it 575will accept only ":" commands. But when the "-v" argument is given, Vim will 576start in Normal mode anyway. 577 578Additional arguments are available on unix like systems when compiled with 579X11 GUI support. See |gui-resources|. 580 581============================================================================== 5822. Vim on the Amiga *starting-amiga* 583 584Starting Vim from the Workbench *workbench* 585------------------------------- 586 587Vim can be started from the Workbench by clicking on its icon twice. It will 588then start with an empty buffer. 589 590Vim can be started to edit one or more files by using a "Project" icon. The 591"Default Tool" of the icon must be the full pathname of the Vim executable. 592The name of the ".info" file must be the same as the name of the text file. 593By clicking on this icon twice, Vim will be started with the file name as 594current file name, which will be read into the buffer (if it exists). You can 595edit multiple files by pressing the shift key while clicking on icons, and 596clicking twice on the last one. The "Default Tool" for all these icons must 597be the same. 598 599It is not possible to give arguments to Vim, other than file names, from the 600workbench. 601 602Vim window *amiga-window* 603---------- 604 605Vim will run in the CLI window where it was started. If Vim was started with 606the "run" or "runback" command, or if Vim was started from the workbench, it 607will open a window of its own. 608 609Technical detail: 610 To open the new window a little trick is used. As soon as Vim 611 recognizes that it does not run in a normal CLI window, it will 612 create a script file in "t:". This script file contains the same 613 command as the one Vim was started with, and an "endcli" command. 614 This script file is then executed with a "newcli" command (the "c:run" 615 and "c:newcli" commands are required for this to work). The script 616 file will hang around until reboot, or until you delete it. This 617 method is required to get the ":sh" and ":!" commands to work 618 correctly. But when Vim was started with the -f option (foreground 619 mode), this method is not used. The reason for this is that 620 when a program starts Vim with the -f option it will wait for Vim to 621 exit. With the script trick, the calling program does not know when 622 Vim exits. The -f option can be used when Vim is started by a mail 623 program which also waits for the edit session to finish. As a 624 consequence, the ":sh" and ":!" commands are not available when the 625 -f option is used. 626 627Vim will automatically recognize the window size and react to window 628resizing. Under Amiga DOS 1.3, it is advised to use the fastfonts program, 629"FF", to speed up display redrawing. 630 631============================================================================== 6323. Running eVim *evim-keys* 633 634EVim runs Vim as click-and-type editor. This is very unlike the original Vi 635idea. But it helps for people that don't use Vim often enough to learn the 636commands. Hopefully they will find out that learning to use Normal mode 637commands will make their editing much more effective. 638 639In Evim these options are changed from their default value: 640 641 :set nocompatible Use Vim improvements 642 :set insertmode Remain in Insert mode most of the time 643 :set hidden Keep invisible buffers loaded 644 :set backup Keep backup files (not for VMS) 645 :set backspace=2 Backspace over everything 646 :set autoindent auto-indent new lines 647 :set history=50 keep 50 lines of Ex commands 648 :set ruler show the cursor position 649 :set incsearch show matches halfway typing a pattern 650 :set mouse=a use the mouse in all modes 651 :set hlsearch highlight all matches for a search pattern 652 :set whichwrap+=<,>,[,] <Left> and <Right> wrap around line breaks 653 :set guioptions-=a non-Unix only: don't do auto-select 654 655Key mappings: 656 <Down> moves by screen lines rather than file lines 657 <Up> idem 658 Q does "gq", formatting, instead of Ex mode 659 <BS> in Visual mode: deletes the selection 660 CTRL-X in Visual mode: Cut to clipboard 661 <S-Del> idem 662 CTRL-C in Visual mode: Copy to clipboard 663 <C-Insert> idem 664 CTRL-V Pastes from the clipboard (in any mode) 665 <S-Insert> idem 666 CTRL-Q do what CTRL-V used to do 667 CTRL-Z undo 668 CTRL-Y redo 669 <M-Space> system menu 670 CTRL-A select all 671 <C-Tab> next window, CTRL-W w 672 <C-F4> close window, CTRL-W c 673 674Additionally: 675- ":behave mswin" is used |:behave| 676- syntax highlighting is enabled 677- filetype detection is enabled, filetype plugins and indenting is enabled 678- in a text file 'textwidth' is set to 78 679 680One hint: If you want to go to Normal mode to be able to type a sequence of 681commands, use CTRL-L. |i_CTRL-L| 682 683============================================================================== 6844. Initialization *initialization* *startup* 685 686This section is about the non-GUI version of Vim. See |gui-fork| for 687additional initialization when starting the GUI. 688 689At startup, Vim checks environment variables and files and sets values 690accordingly. Vim proceeds in this order: 691 6921. Set the 'shell' and 'term' option *SHELL* *COMSPEC* *TERM* 693 The environment variable SHELL, if it exists, is used to set the 694 'shell' option. On MS-DOS and Win32, the COMSPEC variable is used 695 if SHELL is not set. 696 The environment variable TERM, if it exists, is used to set the 'term' 697 option. 698 6992. Process the arguments 700 The options and file names from the command that start Vim are 701 inspected. Buffers are created for all files (but not loaded yet). 702 7033. Execute Ex commands, from environment variables and/or files 704 An environment variable is read as one Ex command line, where multiple 705 commands must be separated with '|' or "<NL>". 706 *vimrc* *exrc* 707 A file that contains initialization commands is called a "vimrc" file. 708 Each line in a vimrc file is executed as an Ex command line. It is 709 sometimes also referred to as "exrc" file. They are the same type of 710 file, but "exrc" is what Vi always used, "vimrc" is a Vim specific 711 name. Also see |vimrc-intro|. 712 713 Recommended place for your personal initializations: 714 Unix $HOME/.vimrc 715 OS/2 $HOME/.vimrc or $VIM/.vimrc (or _vimrc) 716 MS-DOS and Win32 $HOME/_vimrc or $VIM/_vimrc 717 Amiga s:.vimrc or $VIM/.vimrc 718 719 If Vim was started with "-u filename", the file "filename" is used. 720 All following initializations until 4. are skipped. 721 "vim -u NORC" can be used to skip these initializations without 722 reading a file. "vim -u NONE" also skips loading plugins. |-u| 723 724 If Vim was started in Ex mode with the "-s" argument, all following 725 initializations until 4. are skipped. Only the "-u" option is 726 interpreted. 727 *evim.vim* 728 a. If vim was started as |evim| or |eview| or with the |-y| argument, the 729 script $VIMRUNTIME/evim.vim will be loaded. 730 *system-vimrc* 731 b. For Unix, MS-DOS, MS-Windows, OS/2, VMS, Macintosh, RISC-OS and Amiga 732 the system vimrc file is read for initializations. The path of this 733 file is shown with the ":version" command. Mostly it's "$VIM/vimrc". 734 Note that this file is ALWAYS read in 'compatible' mode, since the 735 automatic resetting of 'compatible' is only done later. Add a ":set 736 nocp" command if you like. 737 738 *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* 739 c. Four places are searched for initializations. The first that exists 740 is used, the others are ignored. 741 - The environment variable VIMINIT (see also |compatible-default|) (*) 742 The value of $VIMINIT is used as an Ex command line. 743 - The user vimrc file(s): 744 "$HOME/.vimrc" (for Unix and OS/2) (*) 745 "s:.vimrc" (for Amiga) (*) 746 "home:.vimrc" (for Amiga) (*) 747 "$VIM/.vimrc" (for OS/2 and Amiga) (*) 748 "$HOME/_vimrc" (for MS-DOS and Win32) (*) 749 "$VIM\_vimrc" (for MS-DOS and Win32) (*) 750 Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist, 751 "_vimrc" is also tried, in case an MS-DOS compatible file 752 system is used. For MS-DOS and Win32 ".vimrc" is checked 753 after "_vimrc", in case long file names are used. 754 Note: For MS-DOS and Win32, "$HOME" is checked first. If no 755 "_vimrc" or ".vimrc" is found there, "$VIM" is tried. 756 See |$VIM| for when $VIM is not set. 757 - The environment variable EXINIT. 758 The value of $EXINIT is used as an Ex command line. 759 - The user exrc file(s). Same as for the user vimrc file, but with 760 "vimrc" replaced by "exrc". But without the (*)! 761 762 d. If the 'exrc' option is on (which is not the default), the current 763 directory is searched for four files. The first that exists is used, 764 the others are ignored. 765 - The file ".vimrc" (for Unix, Amiga and OS/2) (*) 766 "_vimrc" (for MS-DOS and Win32) (*) 767 - The file "_vimrc" (for Unix, Amiga and OS/2) (*) 768 ".vimrc" (for MS-DOS and Win32) (*) 769 - The file ".exrc" (for Unix, Amiga and OS/2) 770 "_exrc" (for MS-DOS and Win32) 771 - The file "_exrc" (for Unix, Amiga and OS/2) 772 ".exrc" (for MS-DOS and Win32) 773 774 (*) Using this file or environment variable will cause 'compatible' to be 775 off by default. See |compatible-default|. 776 7774. Load the plugin scripts. *load-plugins* 778 This does the same as the command: > 779 :runtime! plugin/*.vim 780< The result is that all directories in the 'runtimepath' option will be 781 searched for the "plugin" sub-directory and all files ending in ".vim" 782 will be sourced (in alphabetical order per directory). 783 Loading plugins won't be done when: 784 - The 'loadplugins' option was reset in a vimrc file. 785 - The |--noplugin| command line argument is used. 786 - The "-u NONE" command line argument is used |-u|. 787 - When Vim was compiled without the |+eval| feature. 788 Note that using "-c set noloadplugins" doesn't work, because the 789 commands from the command line have not been executed yet. 790 7915. Set 'shellpipe' and 'shellredir' 792 The 'shellpipe' and 'shellredir' options are set according to the 793 value of the 'shell' option, unless they have been set before. 794 This means that Vim will figure out the values of 'shellpipe' and 795 'shellredir' for you, unless you have set them yourself. 796 7976. Set 'updatecount' to zero, if "-n" command argument used 798 7997. Set binary options 800 If the "-b" flag was given to Vim, the options for binary editing will 801 be set now. See |-b|. 802 8038. Perform GUI initializations 804 Only when starting "gvim", the GUI initializations will be done. See 805 |gui-init|. 806 8079. Read the viminfo file 808 If the 'viminfo' option is not empty, the viminfo file is read. See 809 |viminfo-file|. 810 81110. Read the quickfix file 812 If the "-q" flag was given to Vim, the quickfix file is read. If this 813 fails, Vim exits. 814 81511. Open all windows 816 When the |-o| flag was given, windows will be opened (but not 817 displayed yet). 818 When switching screens, it happens now. Redrawing starts. 819 If the "-q" flag was given to Vim, the first error is jumped to. 820 Buffers for all windows will be loaded. 821 82212. Execute startup commands 823 If a "-t" flag was given to Vim, the tag is jumped to. 824 The commands given with the |-c| and |+cmd| arguments are executed. 825 If the 'insertmode' option is set, Insert mode is entered. 826 The |VimEnter| autocommands are executed. 827 828Some hints on using initializations: 829 830Standard setup: 831Create a vimrc file to set the default settings and mappings for all your edit 832sessions. Put it in a place so that it will be found by 3b: 833 ~/.vimrc (Unix and OS/2) 834 s:.vimrc (Amiga) 835 $VIM\_vimrc (MS-DOS and Win32) 836Note that creating a vimrc file will cause the 'compatible' option to be off 837by default. See |compatible-default|. 838 839Local setup: 840Put all commands that you need for editing a specific directory only into a 841vimrc file and place it in that directory under the name ".vimrc" ("_vimrc" 842for MS-DOS and Win32). NOTE: To make Vim look for these special files you 843have to turn on the option 'exrc'. See |trojan-horse| too. 844 845System setup: 846This only applies if you are managing a Unix system with several users and 847want to set the defaults for all users. Create a vimrc file with commands 848for default settings and mappings and put it in the place that is given with 849the ":version" command. 850 851Saving the current state of Vim to a file: 852Whenever you have changed values of options or when you have created a 853mapping, then you may want to save them in a vimrc file for later use. See 854|save-settings| about saving the current state of settings to a file. 855 856Avoiding setup problems for Vi users: 857Vi uses the variable EXINIT and the file "~/.exrc". So if you do not want to 858interfere with Vi, then use the variable VIMINIT and the file "vimrc" instead. 859 860Amiga environment variables: 861On the Amiga, two types of environment variables exist. The ones set with the 862DOS 1.3 (or later) setenv command are recognized. See the AmigaDos 1.3 863manual. The environment variables set with the old Manx Set command (before 864version 5.0) are not recognized. 865 866MS-DOS line separators: 867On MS-DOS-like systems (MS-DOS itself, Win32, and OS/2), Vim assumes that all 868the vimrc files have <CR> <NL> pairs as line separators. This will give 869problems if you have a file with only <NL>s and have a line like 870":map xx yy^M". The trailing ^M will be ignored. 871 872 *compatible-default* 873When Vim starts, the 'compatible' option is on. This will be used when Vim 874starts its initializations. But as soon as a user vimrc file is found, or a 875vimrc file in the current directory, or the "VIMINIT" environment variable is 876set, it will be set to 'nocompatible'. This has the side effect of setting or 877resetting other options (see 'compatible'). But only the options that have 878not been set or reset will be changed. This has the same effect like the 879value of 'compatible' had this value when starting Vim. Note that this 880doesn't happen for the system-wide vimrc file. 881 882But there is a side effect of setting or resetting 'compatible' at the moment 883a .vimrc file is found: Mappings are interpreted the moment they are 884encountered. This makes a difference when using things like "<CR>". If the 885mappings depend on a certain value of 'compatible', set or reset it before 886giving the mapping. 887 888The above behavior can be overridden in these ways: 889- If the "-N" command line argument is given, 'nocompatible' will be used, 890 even when no vimrc file exists. 891- If the "-C" command line argument is given, 'compatible' will be used, even 892 when a vimrc file exists. 893- If the "-u {vimrc}" argument is used, 'compatible' will be used. 894- When the name of the executable ends in "ex", then this works like the "-C" 895 argument was given: 'compatible' will be used, even when a vimrc file 896 exists. This has been done to make Vim behave like "ex", when it is started 897 as "ex". 898 899Avoiding trojan horses: *trojan-horse* 900While reading the "vimrc" or the "exrc" file in the current directory, some 901commands can be disabled for security reasons by setting the 'secure' option. 902This is always done when executing the command from a tags file. Otherwise it 903would be possible that you accidentally use a vimrc or tags file that somebody 904else created and contains nasty commands. The disabled commands are the ones 905that start a shell, the ones that write to a file, and ":autocmd". The ":map" 906commands are echoed, so you can see which keys are being mapped. 907 If you want Vim to execute all commands in a local vimrc file, you 908can reset the 'secure' option in the EXINIT or VIMINIT environment variable or 909in the global "exrc" or "vimrc" file. This is not possible in "vimrc" or 910"exrc" in the current directory, for obvious reasons. 911 On Unix systems, this only happens if you are not the owner of the 912vimrc file. Warning: If you unpack an archive that contains a vimrc or exrc 913file, it will be owned by you. You won't have the security protection. Check 914the vimrc file before you start Vim in that directory, or reset the 'exrc' 915option. Some Unix systems allow a user to do "chown" on a file. This makes 916it possible for another user to create a nasty vimrc and make you the owner. 917Be careful! 918 When using tag search commands, executing the search command (the last 919part of the line in the tags file) is always done in secure mode. This works 920just like executing a command from a vimrc/exrc in the current directory. 921 922 *slow-start* 923If Vim takes a long time to start up, there may be a few causes: 924- If the Unix version was compiled with the GUI and/or X11 (check the output 925 of ":version" for "+GUI" and "+X11"), it may need to load shared libraries 926 and connect to the X11 server. Try compiling a version with GUI and X11 927 disabled. This also should make the executable smaller. 928 Use the |-X| command line argument to avoid connecting to the X server when 929 running in a terminal. 930- If you have "viminfo" enabled, the loading of the viminfo file may take a 931 while. You can find out if this is the problem by disabling viminfo for a 932 moment (use the Vim argument "-i NONE", |-i|). Try reducing the number of 933 lines stored in a register with ":set viminfo='20,<50,s10". |viminfo-file|. 934 935 *:intro* 936When Vim starts without a file name, an introductory message is displayed (for 937those who don't know what Vim is). It is removed as soon as the display is 938redrawn in any way. To see the message again, use the ":intro" command (if 939there is not enough room, you will see only part of it). 940 To avoid the intro message on startup, add the 'I' flag to 'shortmess'. 941 942 *info-message* 943The |--help| and |--version| arguments cause Vim to print a message and then 944exit. Normally the message is send to stdout, thus can be redirected to a 945file with: > 946 947 vim --help >file 948 949From inside Vim: > 950 951 :read !vim --help 952 953When using gvim, it detects that it might have been started from the desktop, 954without a terminal to show messages on. This is detected when both stdout and 955stderr are not a tty. This breaks the ":read" command, as used in the example 956above. To make it work again, set 'shellredir' to ">" instead of the default 957">&": > 958 959 :set shellredir=> 960 :read !gvim --help 961 962This still won't work for systems where gvim does not use stdout at all 963though. 964 965============================================================================== 9665. $VIM and $VIMRUNTIME 967 *$VIM* 968The environment variable "$VIM" is used to locate various user files for Vim, 969such as the user startup script ".vimrc". This depends on the system, see 970|startup|. 971 972To avoid the need for every user to set the $VIM environment variable, Vim 973will try to get the value for $VIM in this order: 9741. The value defined by the $VIM environment variable. You can use this to 975 make Vim look in a specific directory for its support files. Example: > 976 setenv VIM /home/paul/vim 9772. The path from 'helpfile' is used, unless it contains some environment 978 variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg 979 problem). The file name ("help.txt" or any other) is removed. Then 980 trailing directory names are removed, in this order: "doc", "runtime" and 981 "vim{version}" (e.g., "vim54"). 9823. For MSDOS, Win32 and OS/2 Vim tries to use the directory name of the 983 executable. If it ends in "/src", this is removed. This is useful if you 984 unpacked the .zip file in some directory, and adjusted the search path to 985 find the vim executable. Trailing directory names are removed, in this 986 order: "runtime" and "vim{version}" (e.g., "vim54"). 9874. For Unix the compile-time defined installation directory is used (see the 988 output of ":version"). 989 990Once Vim has done this once, it will set the $VIM environment variable. To 991change it later, use a ":let" command like this: > 992 :let $VIM = "/home/paul/vim/" 993< 994 *$VIMRUNTIME* 995The environment variable "$VIMRUNTIME" is used to locate various support 996files, such as the on-line documentation and files used for syntax 997highlighting. For example, the main help file is normally 998"$VIMRUNTIME/doc/help.txt". 999You don't normally set $VIMRUNTIME yourself, but let Vim figure it out. This 1000is the order used to find the value of $VIMRUNTIME: 10011. If the environment variable $VIMRUNTIME is set, it is used. You can use 1002 this when the runtime files are in an unusual location. 10032. If "$VIM/vim{version}" exists, it is used. {version} is the version 1004 number of Vim, without any '-' or '.'. For example: "$VIM/vim54". This is 1005 the normal value for $VIMRUNTIME. 10063. If "$VIM/runtime" exists, it is used. 10074. The value of $VIM is used. This is for backwards compatibility with older 1008 versions. 10095. When the 'helpfile' option is set and doesn't contain a '$', its value is 1010 used, with "doc/help.txt" removed from the end. 1011 1012For Unix, when there is a compiled-in default for $VIMRUNTIME (check the 1013output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in 1014default is used after step 5. This means that the compiled-in default 1015overrules the value of $VIM. This is useful if $VIM is "/etc" and the runtime 1016files are in "/usr/share/vim/vim54". 1017 1018Once Vim has done this once, it will set the $VIMRUNTIME environment variable. 1019To change it later, use a ":let" command like this: > 1020 :let $VIMRUNTIME = "/home/piet/vim/vim54" 1021 1022In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that 1023greps in the help files) you might be able to use this: > 1024 1025 VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' ` 1026 1027============================================================================== 10286. Suspending *suspend* 1029 1030 *iconize* *iconise* *CTRL-Z* *v_CTRL-Z* 1031CTRL-Z Suspend Vim, like ":stop". 1032 Works in Normal and in Visual mode. In Insert and 1033 Command-line mode, the CTRL-Z is inserted as a normal 1034 character. In Visual mode Vim goes back to Normal 1035 mode. 1036 1037 1038:sus[pend][!] or *:sus* *:suspend* *:st* *:stop* 1039:st[op][!] Suspend Vim. 1040 If the '!' is not given and 'autowrite' is set, every 1041 buffer with changes and a file name is written out. 1042 If the '!' is given or 'autowrite' is not set, changed 1043 buffers are not written, don't forget to bring Vim 1044 back to the foreground later! 1045 1046In the GUI, suspending is implemented as iconising gvim. In Windows 95/NT, 1047gvim is minimized. 1048 1049On many Unix systems, it is possible to suspend Vim with CTRL-Z. This is only 1050possible in Normal and Visual mode (see next chapter, |vim-modes|). Vim will 1051continue if you make it the foreground job again. On other systems, CTRL-Z 1052will start a new shell. This is the same as the ":sh" command. Vim will 1053continue if you exit from the shell. 1054 1055In X-windows the selection is disowned when Vim suspends. this means you 1056can't paste it in another application (since Vim is going to sleep an attempt 1057to get the selection would make the program hang). 1058 1059============================================================================== 10607. Saving settings *save-settings* 1061 1062Mostly you will edit your vimrc files manually. This gives you the greatest 1063flexibility. There are a few commands to generate a vimrc file automatically. 1064You can use these files as they are, or copy/paste lines to include in another 1065vimrc file. 1066 1067 *:mk* *:mkexrc* 1068:mk[exrc] [file] Write current key mappings and changed options to 1069 [file] (default ".exrc" in the current directory), 1070 unless it already exists. {not in Vi} 1071 1072:mk[exrc]! [file] Always write current key mappings and changed 1073 options to [file] (default ".exrc" in the current 1074 directory). {not in Vi} 1075 1076 *:mkv* *:mkvimrc* 1077:mkv[imrc][!] [file] Like ":mkexrc", but the default is ".vimrc" in the 1078 current directory. The ":version" command is also 1079 written to the file. {not in Vi} 1080 1081These commands will write ":map" and ":set" commands to a file, in such a way 1082that when these commands are executed, the current key mappings and options 1083will be set to the same values. The options 'columns', 'endofline', 1084'fileformat', 'key', 'lines', 'modified', 'scroll', 'term', 'textmode', 1085'ttyfast' and 'ttymouse' are not included, because these are terminal or file 1086dependent. Note that the options 'binary', 'paste' and 'readonly' are 1087included, this might not always be what you want. 1088 1089When special keys are used in mappings, The 'cpoptions' option will be 1090temporarily set to its Vim default, to avoid the mappings to be 1091misinterpreted. This makes the file incompatible with Vi, but makes sure it 1092can be used with different terminals. 1093 1094Only global mappings are stored, not mappings local to a buffer. 1095 1096A common method is to use a default ".vimrc" file, make some modifications 1097with ":map" and ":set" commands and write the modified file. First read the 1098default ".vimrc" in with a command like ":source ~piet/.vimrc.Cprogs", change 1099the settings and then save them in the current directory with ":mkvimrc!". If 1100you want to make this file your default .vimrc, move it to your home directory 1101(on Unix), s: (Amiga) or $VIM directory (MS-DOS). You could also use 1102autocommands |autocommand| and/or modelines |modeline|. 1103 1104If you only want to add a single option setting to your vimrc, you can use 1105these steps: 11061. Edit your vimrc file with Vim. 11072. Play with the option until it's right. E.g., try out different values for 1108 'guifont'. 11093. Append a line to set the value of the option, using the expression register 1110 '=' to enter the value. E.g., for the 'guifont' option: > 1111 o:set guifont=<C-R>=&guifont<CR><Esc> 1112< [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key] 1113 1114Note that when you create a .vimrc file, this can influence the 'compatible' 1115option, which has several side effects. See |'compatible'|. 1116":mkvimrc", ":mkexrc" and ":mksession" write the command to set or reset the 1117'compatible' option to the output file first, because of these side effects. 1118 1119============================================================================== 11208. Views and Sessions *views-sessions* 1121 1122This is introduced in sections |21.4| and |21.5| of the user manual. 1123 1124 *View* *view-file* 1125A View is a collection of settings that apply to one window. You can save a 1126View and when you restore it later, the text is displayed in the same way. 1127The options and mappings in this window will also be restored, so that you can 1128continue editing like when the View was saved. 1129 1130 *Session* *session-file* 1131A Session keeps the Views for all windows, plus the global settings. You can 1132save a Session and when you restore it later the window layout looks the same. 1133You can use a Session to quickly switch between different projects, 1134automatically loading the files you were last working on in that project. 1135 1136Views and Sessions are a nice addition to viminfo-files, which are used to 1137remember information for all Views and Sessions together |viminfo-file|. 1138 1139You can quickly start editing with a previously saved View or Session with the 1140|-S| argument: > 1141 vim -S Session.vim 1142< 1143All this is {not in Vi} and {not available when compiled without the 1144|+mksession| feature}. 1145 1146 *:mks* *:mksession* 1147:mks[ession][!] [file] Write a Vim script that restores the current editing 1148 session. 1149 When [!] is included an existing file is overwritten. 1150 When [file] is omitted "Session.vim" is used. 1151 1152The output of ":mksession" is like ":mkvimrc", but additional commands are 1153added to the file. Which ones depends on the 'sessionoptions' option. The 1154resulting file, when executed with a ":source" command: 11551. Restores global mappings and options, if 'sessionoptions' contains 1156 "options". Script-local mappings will not be written. 11572. Restores global variables that start with an uppercase letter and contain 1158 at least one lowercase letter, if 'sessionoptions' contains "globals". 11593. Unloads all currently loaded buffers. 11604. Restores the current directory if 'sessionoptions' contains "curdir", or 1161 sets the current directory to where the Session file is if 'sessionoptions' 1162 contains "sesdir". 11635. Restores GUI Vim window position, if 'sessionoptions' contains "winpos". 11646. Restores screen size, if 'sessionoptions' contains "resize". 11657. Reloads the buffer list, with the last cursor positions. If 1166 'sessionoptions' contains "buffers" then all buffers are restored, 1167 including hidden and unloaded buffers. Otherwise only buffers in windows 1168 are restored. 11698. Restores all windows with the same layout. If 'sessionoptions' contains 1170 contains "help", help windows are restored. If 'sessionoptions' contains 1171 "blank", windows editing a buffer without a name will be restored. 1172 If 'sessionoptions' contains "winsize" and no (help/blank) windows were 1173 left out, the window sizes are restored (relative to the screen size). 1174 Otherwise, the windows are just given sensible sizes. 11759. Restores the Views for all the windows, as with |:mkview|. But 1176 'sessionoptions' is used instead of 'viewoptions'. 117710. If a file exists with the same name as the Session file, but ending in 1178 "x.vim" (for eXtra), executes that as well. You can use *x.vim files to 1179 specify additional settings and actions associated with a given Session, 1180 such as creating menu items in the GUI version. 1181 1182After restoring the Session, the full filename of your current Session is 1183available in the internal variable "v:this_session" |this_session-variable|. 1184An example mapping: > 1185 :nmap <F2> :wa<Bar>exe "mksession! " . v:this_session<CR>:so ~/sessions/ 1186This saves the current Session, and starts off the command to load another. 1187 1188 *:mkvie* *:mkview* 1189:mkvie[w][!] [file] Write a Vim script that restores the contents of the 1190 current window. 1191 When [!] is included an existing file is overwritten. 1192 When [file] is omitted or is a number from 1 to 9, a 1193 name is generated and 'viewdir' prepended. When last 1194 directory name in 'viewdir' does not exist, this 1195 directory is created. 1196 An existing file is always overwritten then. Use 1197 |:loadview| to load this view again. 1198 When [file] is the name of a file ('viewdir' is not 1199 used), a command to edit the file is added to the 1200 generated file. 1201 1202The output of ":mkview" contains these items: 12031. The argument list used in the window. When the global argument list is 1204 used it is reset to the global list. 1205 The index in the argument list is also restored. 12062. The file being edited in the window. If there is no file, the window is 1207 made empty. 12083. Restore mappings, abbreviations and options local to the window if 1209 'viewoptions' contains "options" or "localoptions". For the options it 1210 restores only values that are local to the current buffer and values local 1211 to the window. 1212 When storing the view as part of a session and "options" is in 1213 'sessionoptions', global values for local options will be stored too. 12144. Restore folds when using manual folding and 'viewoptions' contains 1215 "folds". Restore manually opened and closed folds. 12165. The scroll position and the cursor position in the file. Doesn't work very 1217 well when there are closed folds. 12186. The local current directory, if it is different from the global current 1219 directory. 1220 1221Note that Views and Sessions are not perfect: 1222- They don't restore everything. For example, defined functions, autocommands 1223 and ":syntax on" are not included. Things like register contents and 1224 command line history are in viminfo, not in Sessions or Views. 1225- Global option values are only set when they differ from the default value. 1226 When the current value is not the default value, loading a Session will not 1227 set it back to the default value. Local options will be set back to the 1228 default value though. 1229- Existing mappings will be overwritten without warning. An existing mapping 1230 may cause an error for ambiguity. 1231- When storing manual folds and when storing manually opened/closed folds, 1232 changes in the file between saving and loading the view will mess it up. 1233- The Vim script is not very efficient. But still faster than typing the 1234 commands yourself! 1235 1236 *:lo* *:loadview* 1237:lo[adview] [nr] Load the view for the current file. When [nr] is 1238 omitted, the view stored with ":mkview" is loaded. 1239 When [nr] is specified, the view stored with ":mkview 1240 [nr]" is loaded. 1241 1242The combination of ":mkview" and ":loadview" can be used to store up to ten 1243different views of a file. These are remembered in the directory specified 1244with the 'viewdir' option. The views are stored using the file name. If a 1245file is renamed or accessed through a (symbolic) link the view will not be 1246found. 1247 1248You might want to clean up your 'viewdir' directory now and then. 1249 1250To automatically save and restore views for *.c files: > 1251 au BufWinLeave *.c mkview 1252 au BufWinEnter *.c silent loadview 1253 1254============================================================================== 12559. The viminfo file *viminfo* *viminfo-file* *E136* 1256 *E575* *E576* *E577* 1257If you exit Vim and later start it again, you would normally lose a lot of 1258information. The viminfo file can be used to remember that information, which 1259enables you to continue where you left off. 1260 1261This is introduced in section |21.3| of the user manual. 1262 1263The viminfo file is used to store: 1264- The command line history. 1265- The search string history. 1266- The input-line history. 1267- Contents of registers. 1268- Marks for several files. 1269- File marks, pointing to locations in files. 1270- Last search/substitute pattern (for 'n' and '&'). 1271- The buffer list. 1272- Global variables. 1273 1274The viminfo file is not supported when the |+viminfo| feature has been 1275disabled at compile time. 1276 1277You could also use a Session file. The difference is that the viminfo file 1278does not depend on what you are working on. There normally is only one 1279viminfo file. Session files are used to save the state of a specific editing 1280Session. You could have several Session files, one for each project you are 1281working on. Viminfo and Session files together can be used to effectively 1282enter Vim and directly start working in your desired setup. |session-file| 1283 1284 *viminfo-read* 1285When Vim is started and the 'viminfo' option is non-empty, the contents of 1286the viminfo file are read and the info can be used in the appropriate places. 1287The marks are not read in at startup (but file marks are). See 1288|initialization| for how to set the 'viminfo' option upon startup. 1289 1290 *viminfo-write* 1291When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo 1292file (it's actually merged with the existing one, if one exists). The 1293'viminfo' option is a string containing information about what info should be 1294stored, and contains limits on how much should be stored (see 'viminfo'). 1295 1296Notes for Unix: 1297- The file protection for the viminfo file will be set to prevent other users 1298 from being able to read it, because it may contain any text or commands that 1299 you have worked with. 1300- If you want to share the viminfo file with other users (e.g. when you "su" 1301 to another user), you can make the file writable for the group or everybody. 1302 Vim will preserve this when writing new viminfo files. Be careful, don't 1303 allow just anybody to read and write your viminfo file! 1304- Vim will not overwrite a viminfo file that is not writable by the current 1305 "real" user. This helps for when you did "su" to become root, but your 1306 $HOME is still set to a normal user's home directory. Otherwise Vim would 1307 create a viminfo file owned by root that nobody else can read. 1308 1309Marks are stored for each file separately. When a file is read and 'viminfo' 1310is non-empty, the marks for that file are read from the viminfo file. NOTE: 1311The marks are only written when exiting Vim, which is fine because marks are 1312remembered for all the files you have opened in the current editing session, 1313unless ":bdel" is used. If you want to save the marks for a file that you are 1314about to abandon with ":bdel", use ":wv". The '[' and ']' marks are not 1315stored, but the '"' mark is. The '"' mark is very useful for jumping to the 1316cursor position when the file was last exited. No marks are saved for files 1317that start with any string given with the "r" flag in 'viminfo'. This can be 1318used to avoid saving marks for files on removable media (for MS-DOS you would 1319use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:"). 1320 1321 *viminfo-file-marks* 1322Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The 1323numbered marks ('0 to '9) are a bit special. When the viminfo file is written 1324(when exiting or with the ":wviminfo" command), '0 is set to the current cursor 1325position and file. The old '0 is moved to '1, '1 to '2, etc. This 1326resembles what happens with the "1 to "9 delete registers. If the current 1327cursor position is already present in '0 to '9, it is moved to '0, to avoid 1328having the same position twice. The result is that with "'0", you can jump 1329back to the file and line where you exited Vim. To do that right away, try 1330using this command: > 1331 1332 vim -c "normal '0" 1333 1334In a shell you could make an alias for it: > 1335 1336 alias lvim vim -c '"'normal "'"0'"' 1337 1338Use the "r" flag in 'viminfo' to specify for which files no marks should be 1339remembered. 1340 1341 1342VIMINFO FILE NAME *viminfo-file-name* 1343 1344- The default name of the viminfo file is "$HOME/.viminfo" for Unix and OS/2, 1345 "s:.viminfo" for Amiga, "$HOME\_viminfo" for MS-DOS and Win32. For the last 1346 two, when $HOME is not set, "$VIM\_viminfo" is used. When $VIM is also not 1347 set, "c:\_viminfo" is used. For OS/2 "$VIM/.viminfo" is used when $HOME is 1348 not set and $VIM is set. 1349- The 'n' flag in the 'viminfo' option can be used to specify another viminfo 1350 file name |'viminfo'|. 1351- The "-i" Vim argument can be used to set another file name, |-i|. When the 1352 file name given is "NONE" (all uppercase), no viminfo file is ever read or 1353 written. Also not for the commands below! 1354- For the commands below, another file name can be given, overriding the 1355 default and the name given with 'viminfo' or "-i" (unless it's NONE). 1356 1357 1358CHARACTER ENCODING *viminfo-encoding* 1359 1360The text in the viminfo file is encoded as specified with the 'encoding' 1361option. Normally you will always work with the same 'encoding' value, and 1362this works just fine. However, if you read the viminfo file with another 1363value for 'encoding' than what it was written with, some of the text 1364(non-ASCII characters) may be invalid. If this is unacceptable, add the 'c' 1365flag to the 'viminfo' option: > 1366 :set viminfo+=c 1367Vim will then attempt to convert the text in the viminfo file from the 1368'encoding' value it was written with to the current 'encoding' value. This 1369requires Vim to be compiled with the |+iconv| feature. Filenames are not 1370converted. 1371 1372 1373MANUALLY READING AND WRITING 1374 1375Two commands can be used to read and write the viminfo file manually. This 1376can be used to exchange registers between two running Vim programs: First 1377type ":wv" in one and then ":rv" in the other. Note that if the register 1378already contained something, then ":rv!" would be required. Also note 1379however that this means everything will be overwritten with information from 1380the first Vim, including the command line history, etc. 1381 1382The viminfo file itself can be edited by hand too, although we suggest you 1383start with an existing one to get the format right. It is reasonably 1384self-explanatory once you're in there. This can be useful in order to 1385create a second file, say "~/.my_viminfo" which could contain certain 1386settings that you always want when you first start Vim. For example, you 1387can preload registers with particular data, or put certain commands in the 1388command line history. A line in your .vimrc file like > 1389 :rviminfo! ~/.my_viminfo 1390can be used to load this information. You could even have different viminfos 1391for different types of files (e.g., C code) and load them based on the file 1392name, using the ":autocmd" command (see |:autocmd|). 1393 1394 *viminfo-errors* 1395When Vim detects an error while reading a viminfo file, it will not overwrite 1396that file. If there are more than 10 errors, Vim stops reading the viminfo 1397file. This was done to avoid accidentally destroying a file when the file 1398name of the viminfo file is wrong. This could happen when accidentally typing 1399"vim -i file" when you wanted "vim -R file" (yes, somebody accidentally did 1400that!). If you want to overwrite a viminfo file with an error in it, you will 1401either have to fix the error, or delete the file (while Vim is running, so 1402most of the information will be restored). 1403 1404 *:rv* *:rviminfo* *E195* 1405:rv[iminfo][!] [file] Read from viminfo file [file] (default: see above). 1406 If [!] is given, then any information that is 1407 already set (registers, marks, etc.) will be 1408 overwritten. {not in Vi} 1409 1410 *:wv* *:wviminfo* *E137* *E138* *E574* 1411:wv[iminfo][!] [file] Write to viminfo file [file] (default: see above). 1412 The information in the file is first read in to make 1413 a merge between old and new info. When [!] is used, 1414 the old information is not read first, only the 1415 internal info is written. If 'viminfo' is empty, marks 1416 for up to 100 files will be written. 1417 When you get error "E138: Can't write viminfo file" 1418 check that no old temp files were left behind (e.g. 1419 ~/.viminf*) and that you can write in the directory of 1420 the .viminfo file. 1421 {not in Vi} 1422 1423 vim:tw=78:ts=8:ft=help:norl: 1424