Mercurial > vim
annotate runtime/doc/starting.txt @ 30148:d8560d2c1f30 v9.0.0410
patch 9.0.0410: struct member cts_lnum is unused
Commit: https://github.com/vim/vim/commit/d7633114af2365e32080b61af473db347a3489c2
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Sep 7 20:01:17 2022 +0100
patch 9.0.0410: struct member cts_lnum is unused
Problem: Struct member cts_lnum is unused.
Solution: Delete it.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 07 Sep 2022 21:15:03 +0200 |
parents | f8116058ca76 |
children | fa309d9af73c |
rev | line source |
---|---|
29314 | 1 *starting.txt* For Vim version 9.0. Last change: 2022 Jun 14 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Starting Vim *starting* | |
8 | |
9 1. Vim arguments |vim-arguments| | |
10 2. Vim on the Amiga |starting-amiga| | |
11 3. Running eVim |evim-keys| | |
12 4. Initialization |initialization| | |
13 5. $VIM and $VIMRUNTIME |$VIM| | |
14 6. Suspending |suspend| | |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
15 7. Exiting |exiting| |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
16 8. Saving settings |save-settings| |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
17 9. Views and Sessions |views-sessions| |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
18 10. The viminfo file |viminfo-file| |
7 | 19 |
20 ============================================================================== | |
21 1. Vim arguments *vim-arguments* | |
22 | |
23 Most often, Vim is started to edit a single file with the command | |
24 | |
25 vim filename *-vim* | |
26 | |
27 More generally, Vim is started with: | |
28 | |
29 vim [option | filename] .. | |
30 | |
31 Option arguments and file name arguments can be mixed, and any number of them | |
32 can be given. However, watch out for options that take an argument. | |
33 | |
34 For compatibility with various Vi versions, see |cmdline-arguments|. | |
35 | |
36 Exactly one out of the following five items may be used to choose how to | |
37 start editing: | |
38 | |
39 *-file* *---* | |
40 filename One or more file names. The first one will be the current | |
41 file and read into the buffer. The cursor will be positioned | |
42 on the first line of the buffer. | |
43 To avoid a file name starting with a '-' being interpreted as | |
44 an option, precede the arglist with "--", e.g.: > | |
45 vim -- -filename | |
46 < All arguments after the "--" will be interpreted as file names, | |
47 no other options or "+command" argument can follow. | |
8440
4c6ad81d41fe
commit https://github.com/vim/vim/commit/5f148ec0b5a6cedd9129b3abac351034b83cc4f7
Christian Brabandt <cb@256bit.org>
parents:
8392
diff
changeset
|
48 For behavior of quotes on MS-Windows, see |win32-quotes|. |
7 | 49 |
50 *--* | |
51 - This argument can mean two things, depending on whether Ex | |
52 mode is to be used. | |
53 | |
54 Starting in Normal mode: > | |
55 vim - | |
56 ex -v - | |
57 < Start editing a new buffer, which is filled with text | |
58 that is read from stdin. The commands that would normally be | |
59 read from stdin will now be read from stderr. Example: > | |
60 find . -name "*.c" -print | vim - | |
19404 | 61 |
62 < The buffer will be marked as modified, so that you are | |
63 reminded to save the text when trying to exit. If you don't | |
64 like that, put this these lines in your vimrc: > | |
65 " Don't set 'modified' when reading from stdin | |
66 au StdinReadPost * set nomodified | |
7 | 67 < |
68 Starting in Ex mode: > | |
69 ex - | |
70 vim -e - | |
71 exim - | |
72 vim -E | |
73 < Start editing in silent mode. See |-s-ex|. | |
74 | |
75 *-t* *-tag* | |
76 -t {tag} A tag. "tag" is looked up in the tags file, the associated | |
77 file becomes the current file, and the associated command is | |
78 executed. Mostly this is used for C programs, in which case | |
79 "tag" often is a function name. The effect is that the file | |
80 containing that function becomes the current file and the | |
81 cursor is positioned on the start of the function (see | |
82 |tags|). | |
83 | |
84 *-q* *-qf* | |
85 -q [errorfile] QuickFix mode. The file with the name [errorfile] is read | |
86 and the first error is displayed. See |quickfix|. | |
87 If [errorfile] is not given, the 'errorfile' option is used | |
88 for the file name. See 'errorfile' for the default value. | |
89 | |
90 (nothing) Without one of the four items above, Vim will start editing a | |
91 new buffer. It's empty and doesn't have a file name. | |
92 | |
93 | |
94 The startup mode can be changed by using another name instead of "vim", which | |
95 is equal to giving options: | |
96 ex vim -e Start in Ex mode (see |Ex-mode|). *ex* | |
97 exim vim -E Start in improved Ex mode (see |Ex-mode|). *exim* | |
98 (normally not installed) | |
99 view vim -R Start in read-only mode (see |-R|). *view* | |
100 gvim vim -g Start the GUI (see |gui|). *gvim* | |
2581 | 101 gex vim -eg Start the GUI in Ex mode. *gex* |
102 gview vim -Rg Start the GUI in read-only mode. *gview* | |
7 | 103 rvim vim -Z Like "vim", but in restricted mode (see |-Z|) *rvim* |
2581 | 104 rview vim -RZ Like "view", but in restricted mode. *rview* |
105 rgvim vim -gZ Like "gvim", but in restricted mode. *rgvim* | |
106 rgview vim -RgZ Like "gview", but in restricted mode. *rgview* | |
7 | 107 evim vim -y Easy Vim: set 'insertmode' (see |-y|) *evim* |
2581 | 108 eview vim -yR Like "evim" in read-only mode *eview* |
7 | 109 vimdiff vim -d Start in diff mode |diff-mode| |
110 gvimdiff vim -gd Start in diff mode |diff-mode| | |
111 | |
112 Additional characters may follow, they are ignored. For example, you can have | |
19116 | 113 "gvim-8" to start the GUI. You must have an executable by that name then, of |
7 | 114 course. |
115 | |
116 On Unix, you would normally have one executable called Vim, and links from the | |
117 different startup-names to that executable. If your system does not support | |
118 links and you do not want to have several copies of the executable, you could | |
119 use an alias instead. For example: > | |
120 alias view vim -R | |
121 alias gvim vim -g | |
122 < | |
123 *startup-options* | |
124 The option arguments may be given in any order. Single-letter options can be | |
125 combined after one dash. There can be no option arguments after the "--" | |
126 argument. | |
127 | |
128 On VMS all option arguments are assumed to be lowercase, unless preceded with | |
129 a slash. Thus "-R" means recovery and "-/R" readonly. | |
130 | |
13857 | 131 --help *-h* *--help* *-?* |
132 -? | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
133 -h Give usage (help) message and exit. |
7 | 134 See |info-message| about capturing the text. |
135 | |
136 *--version* | |
137 --version Print version information and exit. Same output as for | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
138 |:version| command. |
7 | 139 See |info-message| about capturing the text. |
140 | |
141 *--noplugin* | |
142 --noplugin Skip loading plugins. Resets the 'loadplugins' option. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
143 |
7 | 144 Note that the |-u| argument may also disable loading plugins: |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
145 argument load: vimrc files plugins defaults.vim ~ |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
146 (nothing) yes yes yes |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
147 -u NONE no no no |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
148 -u DEFAULTS no no yes |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
149 -u NORC no yes no |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
150 --noplugin yes no yes |
7 | 151 |
1989 | 152 --startuptime {fname} *--startuptime* |
1972 | 153 During startup write timing messages to the file {fname}. |
154 This can be used to find out where time is spent while loading | |
1989 | 155 your .vimrc, plugins and opening the first file. |
1972 | 156 When {fname} already exists new messages are appended. |
18016 | 157 {only available when compiled with the |+startuptime| |
158 feature} | |
1972 | 159 |
7 | 160 *--literal* |
161 --literal Take file names literally, don't expand wildcards. Not needed | |
162 for Unix, because Vim always takes file names literally (the | |
163 shell expands wildcards). | |
164 Applies to all the names, also the ones that come before this | |
165 argument. | |
166 | |
167 *-+* | |
168 +[num] The cursor will be positioned on line "num" for the first | |
169 file being edited. If "num" is missing, the cursor will be | |
170 positioned on the last line. | |
171 | |
172 *-+/* | |
173 +/{pat} The cursor will be positioned on the first line containing | |
174 "pat" in the first file being edited (see |pattern| for the | |
6009 | 175 available search patterns). The search starts at the cursor |
176 position, which can be the first line or the cursor position | |
177 last used from |viminfo|. To force a search from the first | |
178 line use "+1 +/pat". | |
7 | 179 |
180 +{command} *-+c* *-c* | |
181 -c {command} {command} will be executed after the first file has been | |
182 read (and after autocommands and modelines for that file have | |
183 been processed). "command" is interpreted as an Ex command. | |
184 If the "command" contains spaces, it must be enclosed in | |
185 double quotes (this depends on the shell that is used). | |
186 Example: > | |
187 vim "+set si" main.c | |
188 vim "+find stdio.h" | |
189 vim -c "set ff=dos" -c wq mine.mak | |
190 < | |
191 Note: You can use up to 10 "+" or "-c" arguments in a Vim | |
192 command. They are executed in the order given. A "-S" | |
193 argument counts as a "-c" argument as well. | |
194 | |
195 --cmd {command} *--cmd* | |
196 {command} will be executed before processing any vimrc file. | |
197 Otherwise it acts like -c {command}. You can use up to 10 of | |
198 these commands, independently from "-c" commands. | |
199 | |
200 *-S* | |
201 -S {file} The {file} will be sourced after the first file has been read. | |
202 This is an easy way to do the equivalent of: > | |
203 -c "source {file}" | |
204 < It can be mixed with "-c" arguments and repeated like "-c". | |
205 The limit of 10 "-c" arguments applies here as well. | |
206 {file} cannot start with a "-". | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
207 |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
208 Do not use this for running a script to do some work and exit |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
209 Vim, you won't see error messages. Use |-u| instead. |
7 | 210 |
211 -S Works like "-S Session.vim". Only when used as the last | |
212 argument or when another "-" option follows. | |
213 | |
214 *-r* | |
215 -r Recovery mode. Without a file name argument, a list of | |
216 existing swap files is given. With a file name, a swap file | |
217 is read to recover a crashed editing session. See | |
218 |crash-recovery|. | |
219 | |
220 *-L* | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
221 -L Same as -r. |
7 | 222 |
223 *-R* | |
224 -R Readonly mode. The 'readonly' option will be set for all the | |
225 files being edited. You can still edit the buffer, but will | |
226 be prevented from accidentally overwriting a file. If you | |
227 forgot that you are in View mode and did make some changes, | |
228 you can overwrite a file by adding an exclamation mark to | |
229 the Ex command, as in ":w!". The 'readonly' option can be | |
230 reset with ":set noro" (see the options chapter, |options|). | |
231 Subsequent edits will not be done in readonly mode. Calling | |
232 the executable "view" has the same effect as the -R argument. | |
233 The 'updatecount' option will be set to 10000, meaning that | |
234 the swap file will not be updated automatically very often. | |
10617 | 235 See |-M| for disallowing modifications. |
7 | 236 |
237 *-m* | |
238 -m Modifications not allowed to be written. The 'write' option | |
239 will be reset, so that writing files is disabled. However, | |
240 the 'write' option can be set to enable writing again. | |
241 | |
242 *-M* | |
243 -M Modifications not allowed. The 'modifiable' option will be | |
244 reset, so that changes are not allowed. The 'write' option | |
245 will be reset, so that writing files is disabled. However, | |
246 the 'modifiable' and 'write' options can be set to enable | |
247 changes and writing. | |
248 | |
15748
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
249 *-Z* *restricted-mode* *E145* *E981* |
7 | 250 -Z Restricted mode. All commands that make use of an external |
251 shell are disabled. This includes suspending with CTRL-Z, | |
15748
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
252 ":sh", filtering, the system() function, backtick expansion |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
253 and libcall(). |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
254 Also disallowed are delete(), rename(), mkdir(), job_start(), |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
255 etc. |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
256 Interfaces, such as Python, Ruby and Lua, are also disabled, |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
257 since they could be used to execute shell commands. Perl uses |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
258 the Safe module. |
27509
ef32ea9fbe6c
patch 8.2.4282: restricted mode requires the -Z command line option
Bram Moolenaar <Bram@vim.org>
parents:
27321
diff
changeset
|
259 For Unix restricted mode is used when the last part of $SHELL |
ef32ea9fbe6c
patch 8.2.4282: restricted mode requires the -Z command line option
Bram Moolenaar <Bram@vim.org>
parents:
27321
diff
changeset
|
260 is "nologin" or "false". |
15748
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
261 Note that the user may still find a loophole to execute a |
93b78c4a7cd5
patch 8.1.0881: can execute shell commands in rvim through interfaces
Bram Moolenaar <Bram@vim.org>
parents:
15033
diff
changeset
|
262 shell command, it has only been made difficult. |
7 | 263 |
264 *-g* | |
3445 | 265 -g Start Vim in GUI mode. See |gui|. For the opposite see |-v|. |
7 | 266 |
267 *-v* | |
268 -v Start Ex in Vi mode. Only makes a difference when the | |
269 executable is called "ex" or "gvim". For gvim the GUI is not | |
270 started if possible. | |
271 | |
272 *-e* | |
27321 | 273 -e Start Vim in Ex mode, see |Ex-mode|. Only makes a difference |
274 when the executable is not called "ex". | |
7 | 275 |
276 *-E* | |
277 -E Start Vim in improved Ex mode |gQ|. Only makes a difference | |
278 when the executable is not called "exim". | |
279 | |
280 *-s-ex* | |
281 -s Silent or batch mode. Only when Vim was started as "ex" or | |
282 when preceded with the "-e" argument. Otherwise see |-s|, | |
283 which does take an argument while this use of "-s" doesn't. | |
284 To be used when Vim is used to execute Ex commands from a file | |
285 instead of a terminal. Switches off most prompts and | |
286 informative messages. Also warnings and error messages. | |
168 | 287 The output of these commands is displayed (to stdout): |
288 :print | |
289 :list | |
290 :number | |
291 :set to display option values. | |
292 When 'verbose' is non-zero messages are printed (for | |
293 debugging, to stderr). | |
294 'term' and $TERM are not used. | |
7 | 295 If Vim appears to be stuck try typing "qa!<Enter>". You don't |
296 get a prompt thus you can't see Vim is waiting for you to type | |
297 something. | |
298 Initializations are skipped (except the ones given with the | |
299 "-u" argument). | |
300 Example: > | |
301 vim -e -s < thefilter thefile | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
302 < For the opposite, to see errors from the script, execute the |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
303 file with the |-u| flag: > |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
304 vim -u thefilter thefile |
7 | 305 < |
306 *-b* | |
307 -b Binary mode. File I/O will only recognize <NL> to separate | |
237 | 308 lines. The 'expandtab' option will be reset. The 'textwidth' |
7 | 309 option is set to 0. 'modeline' is reset. The 'binary' option |
310 is set. This is done after reading the vimrc/exrc files but | |
311 before reading any file in the arglist. See also | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
312 |edit-binary|. |
7 | 313 |
314 *-l* | |
315 -l Lisp mode. Sets the 'lisp' and 'showmatch' options on. | |
316 | |
317 *-A* | |
18016 | 318 -A Arabic mode. Sets the 'arabic' option on. {only when |
7 | 319 compiled with the |+arabic| features (which include |
320 |+rightleft|), otherwise Vim gives an error message | |
18016 | 321 and exits} |
7 | 322 |
323 *-F* | |
15850
a6ca8cf07a98
patch 8.1.0932: Farsi support is outdated and unused
Bram Moolenaar <Bram@vim.org>
parents:
15748
diff
changeset
|
324 -F This was used for Farsi mode, which has been removed. |
a6ca8cf07a98
patch 8.1.0932: Farsi support is outdated and unused
Bram Moolenaar <Bram@vim.org>
parents:
15748
diff
changeset
|
325 See |farsi.txt|. |
7 | 326 |
327 *-H* | |
328 -H Hebrew mode. Sets the 'hkmap' and 'rightleft' options on. | |
18016 | 329 {only when compiled with the |+rightleft| feature, otherwise |
330 Vim gives an error message and exits} | |
7 | 331 |
332 *-V* *verbose* | |
333 -V[N] Verbose. Sets the 'verbose' option to [N] (default: 10). | |
334 Messages will be given for each file that is ":source"d and | |
335 for reading or writing a viminfo file. Can be used to find | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
336 out what is happening upon startup and exit. |
1125 | 337 Example: > |
338 vim -V8 foobar | |
7 | 339 |
294 | 340 -V[N]{filename} |
341 Like -V and set 'verbosefile' to {filename}. The result is | |
342 that messages are not displayed but written to the file | |
343 {filename}. {filename} must not start with a digit. | |
1125 | 344 Example: > |
345 vim -V20vimlog foobar | |
346 < | |
28435
0533e7466ef0
patch 8.2.4742: there is no way to start logging very early in startup
Bram Moolenaar <Bram@vim.org>
parents:
27903
diff
changeset
|
347 --log {filename} *--log* |
0533e7466ef0
patch 8.2.4742: there is no way to start logging very early in startup
Bram Moolenaar <Bram@vim.org>
parents:
27903
diff
changeset
|
348 Start logging and write entries to {filename}. |
29069
be6c32395444
patch 8.2.5056: the channel log only contains some of the raw terminal output
Bram Moolenaar <Bram@vim.org>
parents:
28843
diff
changeset
|
349 This works like calling `ch_logfile({filename}, 'ao')` very |
28435
0533e7466ef0
patch 8.2.4742: there is no way to start logging very early in startup
Bram Moolenaar <Bram@vim.org>
parents:
27903
diff
changeset
|
350 early during startup. |
29290 | 351 {only available with the |+channel| feature} |
28435
0533e7466ef0
patch 8.2.4742: there is no way to start logging very early in startup
Bram Moolenaar <Bram@vim.org>
parents:
27903
diff
changeset
|
352 |
7 | 353 *-D* |
354 -D Debugging. Go to debugging mode when executing the first | |
355 command from a script. |debug-mode| | |
356 {not available when compiled without the |+eval| feature} | |
357 | |
358 *-C* | |
359 -C Compatible mode. Sets the 'compatible' option. You can use | |
360 this to get 'compatible', even though a .vimrc file exists. | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
361 Keep in mind that the command ":set nocompatible" in some |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
362 plugin or startup script overrules this, so you may end up |
2072 | 363 with 'nocompatible' anyway. To find out, use: > |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
364 :verbose set compatible? |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
365 < Several plugins won't work with 'compatible' set. You may |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
366 want to set it after startup this way: > |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
367 vim "+set cp" filename |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
368 < Also see |compatible-default|. |
7 | 369 |
370 *-N* | |
371 -N Not compatible mode. Resets the 'compatible' option. You can | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
372 use this to get 'nocompatible', when there is no .vimrc file |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
373 or when using "-u NONE". |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
374 Also see |compatible-default|. |
7 | 375 |
376 *-y* *easy* | |
377 -y Easy mode. Implied for |evim| and |eview|. Starts with | |
378 'insertmode' set and behaves like a click-and-type editor. | |
379 This sources the script $VIMRUNTIME/evim.vim. Mappings are | |
380 set up to work like most click-and-type editors, see | |
381 |evim-keys|. The GUI is started when available. | |
382 | |
383 *-n* | |
384 -n No swap file will be used. Recovery after a crash will be | |
385 impossible. Handy if you want to view or edit a file on a | |
386 very slow medium (e.g., a floppy). | |
387 Can also be done with ":set updatecount=0". You can switch it | |
388 on again by setting the 'updatecount' option to some value, | |
389 e.g., ":set uc=100". | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
390 NOTE: Don't combine -n with -b, making -nb, because that has a |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
391 different meaning: |-nb|. |
7 | 392 'updatecount' is set to 0 AFTER executing commands from a |
393 vimrc file, but before the GUI initializations. Thus it | |
394 overrides a setting for 'updatecount' in a vimrc file, but not | |
395 in a gvimrc file. See |startup|. | |
396 When you want to reduce accesses to the disk (e.g., for a | |
397 laptop), don't use "-n", but set 'updatetime' and | |
398 'updatecount' to very big numbers, and type ":preserve" when | |
399 you want to save your work. This way you keep the possibility | |
400 for crash recovery. | |
401 | |
402 *-o* | |
403 -o[N] Open N windows, split horizontally. If [N] is not given, | |
404 one window is opened for every file given as argument. If | |
405 there is not enough room, only the first few files get a | |
406 window. If there are more windows than arguments, the last | |
407 few windows will be editing an empty file. | |
408 | |
409 *-O* | |
410 -O[N] Open N windows, split vertically. Otherwise it's like -o. | |
411 If both the -o and the -O option are given, the last one on | |
412 the command line determines how the windows will be split. | |
413 | |
674 | 414 *-p* |
415 -p[N] Open N tab pages. If [N] is not given, one tab page is opened | |
699 | 416 for every file given as argument. The maximum is set with |
417 'tabpagemax' pages (default 10). If there are more tab pages | |
418 than arguments, the last few tab pages will be editing an | |
805 | 419 empty file. Also see |tabpage|. |
674 | 420 |
7 | 421 *-T* |
422 -T {terminal} Set the terminal type to "terminal". This influences the | |
423 codes that Vim will send to your terminal. This is normally | |
424 not needed, because Vim will be able to find out what type | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
425 of terminal you are using. (See |terminal-info|.) |
7 | 426 |
8303
88207f4b861a
commit https://github.com/vim/vim/commit/dae8d21dd291df6a6679a00be64e18bca0156576
Christian Brabandt <cb@256bit.org>
parents:
8253
diff
changeset
|
427 *--not-a-term* |
8253
1b6a589a0efc
commit https://github.com/vim/vim/commit/49c39ff678e2ba9f7dc280b25368e12084a610cf
Christian Brabandt <cb@256bit.org>
parents:
8182
diff
changeset
|
428 --not-a-term Tells Vim that the user knows that the input and/or output is |
1b6a589a0efc
commit https://github.com/vim/vim/commit/49c39ff678e2ba9f7dc280b25368e12084a610cf
Christian Brabandt <cb@256bit.org>
parents:
8182
diff
changeset
|
429 not connected to a terminal. This will avoid the warning and |
12909 | 430 the two second delay that would happen. |
431 Also avoids the "Reading from stdin..." message. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
432 Also avoids the "N files to edit" message. |
8253
1b6a589a0efc
commit https://github.com/vim/vim/commit/49c39ff678e2ba9f7dc280b25368e12084a610cf
Christian Brabandt <cb@256bit.org>
parents:
8182
diff
changeset
|
433 |
29128
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
434 --gui-dialog-file {name} *--gui-dialog-file* |
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
435 When using the GUI, instead of showing a dialog, write the |
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
436 title and message of the dialog to file {name}. The file is |
29150 | 437 created or appended to. Only useful for testing, to avoid |
29128
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
438 that the test gets stuck on a dialog that can't be seen. |
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
439 Without the GUI the argument is ignored. |
d8a962d7b008
patch 8.2.5084: when the GUI shows a dialog tests get stuck
Bram Moolenaar <Bram@vim.org>
parents:
29087
diff
changeset
|
440 |
10404
65e0537a4560
commit https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
441 *--ttyfail* |
65e0537a4560
commit https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
442 --ttyfail When the stdin or stdout is not a terminal (tty) then exit |
65e0537a4560
commit https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
443 right away. |
65e0537a4560
commit https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
444 |
7 | 445 *-d* |
446 -d Start in diff mode, like |vimdiff|. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
447 {not available when compiled without the |+diff| feature} |
7 | 448 |
449 -d {device} Only on the Amiga and when not compiled with the |+diff| | |
450 feature. Works like "-dev". | |
451 *-dev* | |
452 -dev {device} Only on the Amiga: The {device} is opened to be used for | |
453 editing. | |
454 Normally you would use this to set the window position and | |
455 size: "-d con:x/y/width/height", e.g., | |
456 "-d con:30/10/600/150". But you can also use it to start | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
457 editing on another device, e.g., AUX:. |
7 | 458 *-f* |
3082 | 459 -f GUI: Do not disconnect from the program that started Vim. |
7 | 460 'f' stands for "foreground". If omitted, the GUI forks a new |
461 process and exits the current one. "-f" should be used when | |
462 gvim is started by a program that will wait for the edit | |
463 session to finish (e.g., mail or readnews). If you want gvim | |
819 | 464 never to fork, include 'f' in 'guioptions' in your |gvimrc|. |
7 | 465 Careful: You can use "-gf" to start the GUI in the foreground, |
466 but "-fg" is used to specify the foreground color. |gui-fork| | |
3082 | 467 |
468 Amiga: Do not restart Vim to open a new window. This | |
469 option should be used when Vim is started by a program that | |
470 will wait for the edit session to finish (e.g., mail or | |
471 readnews). See |amiga-window|. | |
4502
605c9ce57ec3
Updated runtime files, language files and translations.
Bram Moolenaar <bram@vim.org>
parents:
3445
diff
changeset
|
472 |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
4502
diff
changeset
|
473 MS-Windows: This option is not supported. However, when |
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
4502
diff
changeset
|
474 running Vim with an installed vim.bat or gvim.bat file it |
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
4502
diff
changeset
|
475 works. |
7 | 476 |
3082 | 477 |
7 | 478 *--nofork* |
479 --nofork GUI: Do not fork. Same as |-f|. | |
480 *-u* *E282* | |
481 -u {vimrc} The file {vimrc} is read for initializations. Most other | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
482 initializations are skipped; see |initialization|. |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
483 |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
484 This can be used to start Vim in a special mode, with special |
7 | 485 mappings and settings. A shell alias can be used to make |
486 this easy to use. For example: > | |
487 alias vimc vim -u ~/.c_vimrc !* | |
488 < Also consider using autocommands; see |autocommand|. | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
489 |
7 | 490 When {vimrc} is equal to "NONE" (all uppercase), all |
491 initializations from files and environment variables are | |
819 | 492 skipped, including reading the |gvimrc| file when the GUI |
7 | 493 starts. Loading plugins is also skipped. |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
494 |
7 | 495 When {vimrc} is equal to "NORC" (all uppercase), this has the |
496 same effect as "NONE", but loading plugins is not skipped. | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
497 |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
498 When {vimrc} is equal to "DEFAULTS" (all uppercase), this has |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
499 the same effect as "NONE", but the |defaults.vim| script is |
14519 | 500 loaded, which will also set 'nocompatible'. Also see |
501 |--clean|. | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
502 |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
503 Using the "-u" argument with another argument than DEFAULTS |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
504 has the side effect that the 'compatible' option will be on by |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
505 default. This can have unexpected effects. See |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
506 |'compatible'|. |
7 | 507 |
508 *-U* *E230* | |
819 | 509 -U {gvimrc} The file {gvimrc} is read for initializations when the GUI |
237 | 510 starts. Other GUI initializations are skipped. When {gvimrc} |
43 | 511 is equal to "NONE", no file is read for GUI initializations at |
512 all. |gui-init| | |
7 | 513 Exception: Reading the system-wide menu file is always done. |
514 | |
515 *-i* | |
516 -i {viminfo} The file "viminfo" is used instead of the default viminfo | |
517 file. If the name "NONE" is used (all uppercase), no viminfo | |
518 file is read or written, even if 'viminfo' is set or when | |
519 ":rv" or ":wv" are used. See also |viminfo-file|. | |
520 | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
521 *--clean* |
14372 | 522 --clean Similar to "-u DEFAULTS -U NONE -i NONE": |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
523 - initializations from files and environment variables is |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
524 skipped |
15033 | 525 - 'runtimepath' and 'packpath' are set to exclude home |
14372 | 526 directory entries (does not happen with -u DEFAULTS). |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
527 - the |defaults.vim| script is loaded, which implies |
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
528 'nocompatible': use Vim defaults |
13466
cf7cd0272011
patch 8.0.1607: --clean loads user settings from .gvimrc
Christian Brabandt <cb@256bit.org>
parents:
13437
diff
changeset
|
529 - no |gvimrc| script is loaded |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
530 - no viminfo file is read or written |
22441 | 531 Note that a following "-u" argument overrules the effect of |
532 "-u DEFAULTS". | |
14519 | 533 |
7 | 534 *-x* |
535 -x Use encryption to read/write files. Will prompt for a key, | |
536 which is then stored in the 'key' option. All writes will | |
537 then use this key to encrypt the text. The '-x' argument is | |
538 not needed when reading a file, because there is a check if | |
539 the file that is being read has been encrypted, and Vim asks | |
540 for a key automatically. |encryption| | |
541 | |
542 *-X* | |
543 -X Do not try connecting to the X server to get the current | |
544 window title and copy/paste using the X clipboard. This | |
545 avoids a long startup time when running Vim in a terminal | |
546 emulator and the connection to the X server is slow. | |
1972 | 547 See |--startuptime| to find out if affects you. |
7 | 548 Only makes a difference on Unix or VMS, when compiled with the |
549 |+X11| feature. Otherwise it's ignored. | |
550 To disable the connection only for specific terminals, see the | |
551 'clipboard' option. | |
552 When the X11 Session Management Protocol (XSMP) handler has | |
553 been built in, the -X option also disables that connection as | |
554 it, too, may have undesirable delays. | |
555 When the connection is desired later anyway (e.g., for | |
556 client-server messages), call the |serverlist()| function. | |
557 This does not enable the XSMP handler though. | |
558 | |
559 *-s* | |
560 -s {scriptin} The script file "scriptin" is read. The characters in the | |
561 file are interpreted as if you had typed them. The same can | |
562 be done with the command ":source! {scriptin}". If the end | |
563 of the file is reached before the editor exits, further | |
564 characters are read from the keyboard. Only works when not | |
565 started in Ex mode, see |-s-ex|. See also |complex-repeat|. | |
566 | |
164 | 567 *-w_nr* |
568 -w {number} | |
569 -w{number} Set the 'window' option to {number}. | |
570 | |
7 | 571 *-w* |
572 -w {scriptout} All the characters that you type are recorded in the file | |
573 "scriptout", until you exit Vim. This is useful if you want | |
574 to create a script file to be used with "vim -s" or | |
575 ":source!". When the "scriptout" file already exists, new | |
576 characters are appended. See also |complex-repeat|. | |
164 | 577 {scriptout} cannot start with a digit. |
27036 | 578 If you want to record what is typed in a human readable for |
579 you can use |ch_logfile()|, It adds "raw key input" lines. | |
28435
0533e7466ef0
patch 8.2.4742: there is no way to start logging very early in startup
Bram Moolenaar <Bram@vim.org>
parents:
27903
diff
changeset
|
580 Also see |--log|. |
7 | 581 |
582 *-W* | |
583 -W {scriptout} Like -w, but do not append, overwrite an existing file. | |
584 | |
585 --remote [+{cmd}] {file} ... | |
586 Open the {file} in another Vim that functions as a server. | |
587 Any non-file arguments must come before this. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
588 See |--remote|. |
7 | 589 |
590 --remote-silent [+{cmd}] {file} ... | |
591 Like --remote, but don't complain if there is no server. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
592 See |--remote-silent|. |
7 | 593 |
594 --remote-wait [+{cmd}] {file} ... | |
595 Like --remote, but wait for the server to finish editing the | |
596 file(s). | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
597 See |--remote-wait|. |
7 | 598 |
599 --remote-wait-silent [+{cmd}] {file} ... | |
600 Like --remote-wait, but don't complain if there is no server. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
601 See |--remote-wait-silent|. |
7 | 602 |
603 --servername {name} | |
604 Specify the name of the Vim server to send to or to become. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
605 See |--servername|. |
7 | 606 |
607 --remote-send {keys} | |
608 Send {keys} to a Vim server and exit. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
609 See |--remote-send|. |
7 | 610 |
611 --remote-expr {expr} | |
612 Evaluate {expr} in another Vim that functions as a server. | |
613 The result is printed on stdout. | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
614 See |--remote-expr|. |
7 | 615 |
616 --serverlist Output a list of Vim server names and exit. See | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
617 |--serverlist|. |
7 | 618 |
619 --socketid {id} *--socketid* | |
620 GTK+ GUI Vim only. Make gvim try to use GtkPlug mechanism, so | |
621 that it runs inside another window. See |gui-gtk-socketid| | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
622 for details. |
7 | 623 |
1376 | 624 --windowid {id} *--windowid* |
625 Win32 GUI Vim only. Make gvim try to use the window {id} as a | |
626 parent, so that it runs inside that window. See | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
627 |gui-w32-windowid| for details. |
1376 | 628 |
7 | 629 --echo-wid *--echo-wid* |
630 GTK+ GUI Vim only. Make gvim echo the Window ID on stdout, | |
631 which can be used to run gvim in a kpart widget. The format | |
632 of the output is: > | |
633 WID: 12345\n | |
634 | |
635 --role {role} *--role* | |
636 GTK+ 2 GUI only. Set the role of the main window to {role}. | |
637 The window role can be used by a window manager to uniquely | |
638 identify a window, in order to restore window placement and | |
639 such. The --role argument is passed automatically when | |
640 restoring the session on login. See |gui-gnome-session| | |
641 | |
642 -P {parent-title} *-P* *MDI* *E671* *E672* | |
643 Win32 only: Specify the title of the parent application. When | |
644 possible, Vim will run in an MDI window inside the | |
645 application. | |
646 {parent-title} must appear in the window title of the parent | |
647 application. Make sure that it is specific enough. | |
648 Note that the implementation is still primitive. It won't | |
649 work with all applications and the menu doesn't work. | |
650 | |
651 -nb *-nb* | |
652 -nb={fname} | |
653 -nb:{hostname}:{addr}:{password} | |
654 Attempt connecting to Netbeans and become an editor server for | |
655 it. The second form specifies a file to read connection info | |
656 from. The third form specifies the hostname, address and | |
657 password for connecting to Netbeans. |netbeans-run| | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
658 {only available when compiled with the |+netbeans_intg| |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
659 feature; if not then -nb will make Vim exit} |
7 | 660 |
661 If the executable is called "view", Vim will start in Readonly mode. This is | |
662 useful if you can make a hard or symbolic link from "view" to "vim". | |
663 Starting in Readonly mode can also be done with "vim -R". | |
664 | |
665 If the executable is called "ex", Vim will start in "Ex" mode. This means it | |
666 will accept only ":" commands. But when the "-v" argument is given, Vim will | |
667 start in Normal mode anyway. | |
668 | |
669 Additional arguments are available on unix like systems when compiled with | |
670 X11 GUI support. See |gui-resources|. | |
671 | |
672 ============================================================================== | |
673 2. Vim on the Amiga *starting-amiga* | |
674 | |
675 Starting Vim from the Workbench *workbench* | |
676 ------------------------------- | |
677 | |
678 Vim can be started from the Workbench by clicking on its icon twice. It will | |
679 then start with an empty buffer. | |
680 | |
681 Vim can be started to edit one or more files by using a "Project" icon. The | |
682 "Default Tool" of the icon must be the full pathname of the Vim executable. | |
683 The name of the ".info" file must be the same as the name of the text file. | |
684 By clicking on this icon twice, Vim will be started with the file name as | |
685 current file name, which will be read into the buffer (if it exists). You can | |
686 edit multiple files by pressing the shift key while clicking on icons, and | |
687 clicking twice on the last one. The "Default Tool" for all these icons must | |
688 be the same. | |
689 | |
690 It is not possible to give arguments to Vim, other than file names, from the | |
691 workbench. | |
692 | |
693 Vim window *amiga-window* | |
694 ---------- | |
695 | |
696 Vim will run in the CLI window where it was started. If Vim was started with | |
697 the "run" or "runback" command, or if Vim was started from the workbench, it | |
698 will open a window of its own. | |
699 | |
700 Technical detail: | |
701 To open the new window a little trick is used. As soon as Vim | |
702 recognizes that it does not run in a normal CLI window, it will | |
703 create a script file in "t:". This script file contains the same | |
704 command as the one Vim was started with, and an "endcli" command. | |
705 This script file is then executed with a "newcli" command (the "c:run" | |
706 and "c:newcli" commands are required for this to work). The script | |
707 file will hang around until reboot, or until you delete it. This | |
708 method is required to get the ":sh" and ":!" commands to work | |
709 correctly. But when Vim was started with the -f option (foreground | |
710 mode), this method is not used. The reason for this is that | |
711 when a program starts Vim with the -f option it will wait for Vim to | |
712 exit. With the script trick, the calling program does not know when | |
713 Vim exits. The -f option can be used when Vim is started by a mail | |
714 program which also waits for the edit session to finish. As a | |
715 consequence, the ":sh" and ":!" commands are not available when the | |
716 -f option is used. | |
717 | |
718 Vim will automatically recognize the window size and react to window | |
719 resizing. Under Amiga DOS 1.3, it is advised to use the fastfonts program, | |
720 "FF", to speed up display redrawing. | |
721 | |
722 ============================================================================== | |
723 3. Running eVim *evim-keys* | |
724 | |
725 EVim runs Vim as click-and-type editor. This is very unlike the original Vi | |
726 idea. But it helps for people that don't use Vim often enough to learn the | |
727 commands. Hopefully they will find out that learning to use Normal mode | |
728 commands will make their editing much more effective. | |
729 | |
730 In Evim these options are changed from their default value: | |
731 | |
732 :set nocompatible Use Vim improvements | |
733 :set insertmode Remain in Insert mode most of the time | |
734 :set hidden Keep invisible buffers loaded | |
735 :set backup Keep backup files (not for VMS) | |
736 :set backspace=2 Backspace over everything | |
737 :set autoindent auto-indent new lines | |
738 :set history=50 keep 50 lines of Ex commands | |
739 :set ruler show the cursor position | |
740 :set incsearch show matches halfway typing a pattern | |
741 :set mouse=a use the mouse in all modes | |
742 :set hlsearch highlight all matches for a search pattern | |
743 :set whichwrap+=<,>,[,] <Left> and <Right> wrap around line breaks | |
744 :set guioptions-=a non-Unix only: don't do auto-select | |
745 | |
746 Key mappings: | |
28843
cd68a630f0d0
Update runtime files and translations
Bram Moolenaar <Bram@vim.org>
parents:
28808
diff
changeset
|
747 <CTRL-Q> quit, using `:confirm` prompt if there are changes |
7 | 748 <Down> moves by screen lines rather than file lines |
749 <Up> idem | |
750 Q does "gq", formatting, instead of Ex mode | |
751 <BS> in Visual mode: deletes the selection | |
752 CTRL-X in Visual mode: Cut to clipboard | |
753 <S-Del> idem | |
754 CTRL-C in Visual mode: Copy to clipboard | |
755 <C-Insert> idem | |
756 CTRL-V Pastes from the clipboard (in any mode) | |
757 <S-Insert> idem | |
758 CTRL-Z undo | |
759 CTRL-Y redo | |
760 <M-Space> system menu | |
761 CTRL-A select all | |
762 <C-Tab> next window, CTRL-W w | |
763 <C-F4> close window, CTRL-W c | |
764 | |
765 Additionally: | |
766 - ":behave mswin" is used |:behave| | |
767 - syntax highlighting is enabled | |
768 - filetype detection is enabled, filetype plugins and indenting is enabled | |
769 - in a text file 'textwidth' is set to 78 | |
770 | |
771 One hint: If you want to go to Normal mode to be able to type a sequence of | |
772 commands, use CTRL-L. |i_CTRL-L| | |
773 | |
28808
0f0fed554cdc
Update runtime files, translations
Bram Moolenaar <Bram@vim.org>
parents:
28517
diff
changeset
|
774 There is no way to stop "easy mode", you need to exit Vim. |
0f0fed554cdc
Update runtime files, translations
Bram Moolenaar <Bram@vim.org>
parents:
28517
diff
changeset
|
775 |
7 | 776 ============================================================================== |
777 4. Initialization *initialization* *startup* | |
778 | |
779 This section is about the non-GUI version of Vim. See |gui-fork| for | |
780 additional initialization when starting the GUI. | |
781 | |
782 At startup, Vim checks environment variables and files and sets values | |
783 accordingly. Vim proceeds in this order: | |
784 | |
785 1. Set the 'shell' and 'term' option *SHELL* *COMSPEC* *TERM* | |
786 The environment variable SHELL, if it exists, is used to set the | |
18972 | 787 'shell' option. On Win32, the COMSPEC variable is used |
7 | 788 if SHELL is not set. |
789 The environment variable TERM, if it exists, is used to set the 'term' | |
667 | 790 option. However, 'term' will change later when starting the GUI (step |
791 8 below). | |
7 | 792 |
793 2. Process the arguments | |
794 The options and file names from the command that start Vim are | |
795 inspected. Buffers are created for all files (but not loaded yet). | |
294 | 796 The |-V| argument can be used to display or log what happens next, |
797 useful for debugging the initializations. | |
7 | 798 |
799 3. Execute Ex commands, from environment variables and/or files | |
800 An environment variable is read as one Ex command line, where multiple | |
801 commands must be separated with '|' or "<NL>". | |
802 *vimrc* *exrc* | |
803 A file that contains initialization commands is called a "vimrc" file. | |
804 Each line in a vimrc file is executed as an Ex command line. It is | |
805 sometimes also referred to as "exrc" file. They are the same type of | |
806 file, but "exrc" is what Vi always used, "vimrc" is a Vim specific | |
807 name. Also see |vimrc-intro|. | |
808 | |
4869 | 809 Places for your personal initializations: |
810 Unix $HOME/.vimrc or $HOME/.vim/vimrc | |
811 MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc | |
812 or $VIM/_vimrc | |
813 Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc | |
814 or $VIM/.vimrc | |
19526
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
19404
diff
changeset
|
815 Haiku $HOME/config/settings/vim/vimrc |
4869 | 816 |
817 The files are searched in the order specified above and only the first | |
818 one that is found is read. | |
819 | |
820 RECOMMENDATION: Put all your Vim configuration stuff in the | |
821 $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it | |
822 easy to copy it to another system. | |
7 | 823 |
824 If Vim was started with "-u filename", the file "filename" is used. | |
5239 | 825 All following initializations until 4. are skipped. $MYVIMRC is not |
826 set. | |
7 | 827 "vim -u NORC" can be used to skip these initializations without |
828 reading a file. "vim -u NONE" also skips loading plugins. |-u| | |
829 | |
830 If Vim was started in Ex mode with the "-s" argument, all following | |
831 initializations until 4. are skipped. Only the "-u" option is | |
832 interpreted. | |
833 *evim.vim* | |
834 a. If vim was started as |evim| or |eview| or with the |-y| argument, the | |
835 script $VIMRUNTIME/evim.vim will be loaded. | |
836 *system-vimrc* | |
18972 | 837 b. For Unix, MS-Windows, VMS, Macintosh and Amiga the system vimrc file |
838 is read for initializations. The path of this file is shown with the | |
839 ":version" command. Mostly it's "$VIM/vimrc". Note that this file is | |
840 ALWAYS read in 'compatible' mode, since the automatic resetting of | |
841 'compatible' is only done later. Add a ":set nocp" command if you | |
842 like. For the Macintosh the $VIMRUNTIME/macmap.vim is read. | |
7 | 843 |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
844 *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* *$MYVIMRC* |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
845 c. Five places are searched for initializations. The first that exists |
819 | 846 is used, the others are ignored. The $MYVIMRC environment variable is |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
847 set to the file that was first found, unless $MYVIMRC was already set |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
848 and when using VIMINIT. |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
849 I The environment variable VIMINIT (see also |compatible-default|) (*) |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
850 The value of $VIMINIT is used as an Ex command line. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
851 II The user vimrc file(s): |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
852 "$HOME/.vimrc" (for Unix) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
853 "$HOME/.vim/vimrc" (for Unix) (*) |
4869 | 854 "s:.vimrc" (for Amiga) (*) |
855 "home:.vimrc" (for Amiga) (*) | |
856 "home:vimfiles:vimrc" (for Amiga) (*) | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
857 "$VIM/.vimrc" (for Amiga) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
858 "$HOME/_vimrc" (for Win32) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
859 "$HOME/vimfiles/vimrc" (for Win32) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
860 "$VIM/_vimrc" (for Win32) (*) |
19526
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
19404
diff
changeset
|
861 "$HOME/config/settings/vim/vimrc" (for Haiku) (*) |
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
19404
diff
changeset
|
862 |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
863 Note: For Unix and Amiga, when ".vimrc" does not exist, |
7 | 864 "_vimrc" is also tried, in case an MS-DOS compatible file |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
865 system is used. For MS-Windows ".vimrc" is checked after |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
866 "_vimrc", in case long file names are used. |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
867 Note: For Win32, "$HOME" is checked first. If no "_vimrc" or |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
868 ".vimrc" is found there, "$VIM" is tried. See |$VIM| for when |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
869 $VIM is not set. |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
870 III The environment variable EXINIT. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
871 The value of $EXINIT is used as an Ex command line. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
872 IV The user exrc file(s). Same as for the user vimrc file, but with |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
873 "vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" is |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
874 used, depending on the system. And without the (*)! |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
875 V The default vimrc file, $VIMRUNTIME/defaults.vim. This sets up |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
876 options values and has "syntax on" and "filetype on" commands, |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
877 which is what most new users will want. See |defaults.vim|. |
7 | 878 |
10027
018fead968c1
commit https://github.com/vim/vim/commit/36f44c21da2e912c008683a0c4447fca2a071e9a
Christian Brabandt <cb@256bit.org>
parents:
10004
diff
changeset
|
879 d. If the 'exrc' option is on (which is NOT the default), the current |
247 | 880 directory is searched for three files. The first that exists is used, |
7 | 881 the others are ignored. |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
882 - The file ".vimrc" (for Unix, Amiga) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
883 "_vimrc" (for Win32) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
884 - The file "_vimrc" (for Unix, Amiga) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
885 ".vimrc" (for Win32) (*) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
886 - The file ".exrc" (for Unix, Amiga) |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
887 "_exrc" (for Win32) |
7 | 888 |
889 (*) Using this file or environment variable will cause 'compatible' to be | |
890 off by default. See |compatible-default|. | |
891 | |
12785 | 892 Note: When using the |mzscheme| interface, it is initialized after loading |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
11666
diff
changeset
|
893 the vimrc file. Changing 'mzschemedll' later has no effect. |
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
11666
diff
changeset
|
894 |
7 | 895 4. Load the plugin scripts. *load-plugins* |
896 This does the same as the command: > | |
540 | 897 :runtime! plugin/**/*.vim |
7 | 898 < The result is that all directories in the 'runtimepath' option will be |
899 searched for the "plugin" sub-directory and all files ending in ".vim" | |
540 | 900 will be sourced (in alphabetical order per directory), also in |
901 subdirectories. | |
9778
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
902 However, directories in 'runtimepath' ending in "after" are skipped |
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
903 here and only loaded after packages, see below. |
7 | 904 Loading plugins won't be done when: |
905 - The 'loadplugins' option was reset in a vimrc file. | |
906 - The |--noplugin| command line argument is used. | |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
907 - The |--clean| command line argument is used. |
7 | 908 - The "-u NONE" command line argument is used |-u|. |
909 - When Vim was compiled without the |+eval| feature. | |
632 | 910 Note that using "-c 'set noloadplugins'" doesn't work, because the |
911 commands from the command line have not been executed yet. You can | |
9778
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
912 use "--cmd 'set noloadplugins'" or "--cmd 'set loadplugins'" |--cmd|. |
7 | 913 |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8748
diff
changeset
|
914 Packages are loaded. These are plugins, as above, but found in the |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8748
diff
changeset
|
915 "start" directory of each entry in 'packpath'. Every plugin directory |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8748
diff
changeset
|
916 found is added in 'runtimepath' and then the plugins are sourced. See |
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8748
diff
changeset
|
917 |packages|. |
8182
95d59081580f
commit https://github.com/vim/vim/commit/f6fee0e2d4341c0c2f5339c1268e5877fafd07cf
Christian Brabandt <cb@256bit.org>
parents:
8148
diff
changeset
|
918 |
9778
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
919 The plugins scripts are loaded, as above, but now only the directories |
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
920 ending in "after" are used. Note that 'runtimepath' will have changed |
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
921 if packages have been found, but that should not add a directory |
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
922 ending in "after". |
4360b2b46125
commit https://github.com/vim/vim/commit/66459b7c98c67f8a9d39de8f08e8e8f1fca0e359
Christian Brabandt <cb@256bit.org>
parents:
9737
diff
changeset
|
923 |
7 | 924 5. Set 'shellpipe' and 'shellredir' |
925 The 'shellpipe' and 'shellredir' options are set according to the | |
926 value of the 'shell' option, unless they have been set before. | |
927 This means that Vim will figure out the values of 'shellpipe' and | |
928 'shellredir' for you, unless you have set them yourself. | |
929 | |
930 6. Set 'updatecount' to zero, if "-n" command argument used | |
931 | |
932 7. Set binary options | |
933 If the "-b" flag was given to Vim, the options for binary editing will | |
934 be set now. See |-b|. | |
935 | |
936 8. Perform GUI initializations | |
937 Only when starting "gvim", the GUI initializations will be done. See | |
938 |gui-init|. | |
939 | |
940 9. Read the viminfo file | |
941 If the 'viminfo' option is not empty, the viminfo file is read. See | |
942 |viminfo-file|. | |
943 | |
944 10. Read the quickfix file | |
945 If the "-q" flag was given to Vim, the quickfix file is read. If this | |
946 fails, Vim exits. | |
947 | |
948 11. Open all windows | |
949 When the |-o| flag was given, windows will be opened (but not | |
950 displayed yet). | |
674 | 951 When the |-p| flag was given, tab pages will be created (but not |
952 displayed yet). | |
7 | 953 When switching screens, it happens now. Redrawing starts. |
954 If the "-q" flag was given to Vim, the first error is jumped to. | |
18878
ef90e5bbb971
Minor runtime file updates.
Bram Moolenaar <Bram@vim.org>
parents:
18016
diff
changeset
|
955 Buffers for all windows will be loaded, without triggering |BufAdd| |
ef90e5bbb971
Minor runtime file updates.
Bram Moolenaar <Bram@vim.org>
parents:
18016
diff
changeset
|
956 autocommands. |
7 | 957 |
958 12. Execute startup commands | |
959 If a "-t" flag was given to Vim, the tag is jumped to. | |
960 The commands given with the |-c| and |+cmd| arguments are executed. | |
8748
b1a19a2f73f0
commit https://github.com/vim/vim/commit/4f3f668c8486444e53163c29d2fc79bf47eb3c82
Christian Brabandt <cb@256bit.org>
parents:
8440
diff
changeset
|
961 If the 'insertmode' option is set, Insert mode is entered. |
2581 | 962 The starting flag is reset, has("vim_starting") will now return zero. |
8748
b1a19a2f73f0
commit https://github.com/vim/vim/commit/4f3f668c8486444e53163c29d2fc79bf47eb3c82
Christian Brabandt <cb@256bit.org>
parents:
8440
diff
changeset
|
963 The |v:vim_did_enter| variable is set to 1. |
7 | 964 The |VimEnter| autocommands are executed. |
965 | |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
966 The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc and/or |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
967 gvimrc file. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
968 |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
969 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
970 Some hints on using initializations ~ |
7 | 971 |
972 Standard setup: | |
973 Create a vimrc file to set the default settings and mappings for all your edit | |
974 sessions. Put it in a place so that it will be found by 3b: | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
975 ~/.vimrc (Unix) |
7 | 976 s:.vimrc (Amiga) |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
977 $VIM\_vimrc (Win32) |
19526
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
19404
diff
changeset
|
978 ~/config/settings/vim/vimrc (Haiku) |
22f0dda71638
patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents:
19404
diff
changeset
|
979 |
7 | 980 Note that creating a vimrc file will cause the 'compatible' option to be off |
981 by default. See |compatible-default|. | |
982 | |
983 Local setup: | |
984 Put all commands that you need for editing a specific directory only into a | |
985 vimrc file and place it in that directory under the name ".vimrc" ("_vimrc" | |
18972 | 986 for Win32). NOTE: To make Vim look for these special files you have to turn |
987 on the option 'exrc'. See |trojan-horse| too. | |
7 | 988 |
989 System setup: | |
990 This only applies if you are managing a Unix system with several users and | |
991 want to set the defaults for all users. Create a vimrc file with commands | |
992 for default settings and mappings and put it in the place that is given with | |
993 the ":version" command. | |
994 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
995 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
996 Saving the current state of Vim to a file ~ |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
997 |
7 | 998 Whenever you have changed values of options or when you have created a |
999 mapping, then you may want to save them in a vimrc file for later use. See | |
1000 |save-settings| about saving the current state of settings to a file. | |
1001 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1002 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1003 Avoiding setup problems for Vi users ~ |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1004 |
7 | 1005 Vi uses the variable EXINIT and the file "~/.exrc". So if you do not want to |
1006 interfere with Vi, then use the variable VIMINIT and the file "vimrc" instead. | |
1007 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1008 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1009 Amiga environment variables ~ |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1010 |
7 | 1011 On the Amiga, two types of environment variables exist. The ones set with the |
1012 DOS 1.3 (or later) setenv command are recognized. See the AmigaDos 1.3 | |
1013 manual. The environment variables set with the old Manx Set command (before | |
1014 version 5.0) are not recognized. | |
1015 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1016 |
18972 | 1017 MS-Windows line separators ~ |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1018 |
23305 | 1019 On MS-Windows, Vim assumes that all the vimrc files have <CR><NL> pairs as |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1020 line separators. This will give problems if you have a file with only <NL>s |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1021 and have a line like ":map xx yy^M". The trailing ^M will be ignored. |
7 | 1022 |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1023 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1024 Vi compatible default value ~ |
7 | 1025 *compatible-default* |
1026 When Vim starts, the 'compatible' option is on. This will be used when Vim | |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1027 starts its initializations. But as soon as: |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1028 - a user vimrc file is found, or |
13341
acd7eaa13d2b
Updated runtime files.
Christian Brabandt <cb@256bit.org>
parents:
13231
diff
changeset
|
1029 - a vimrc file in the current directory is found, or |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1030 - the "VIMINIT" environment variable is set, or |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1031 - the "-N" command line argument is given, or |
11666
5cd9ba96561d
patch 8.0.0716: not easy to start Vim cleanly
Christian Brabandt <cb@256bit.org>
parents:
10617
diff
changeset
|
1032 - the "--clean" command line argument is given, or |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1033 - the |defaults.vim| script is loaded, or |
13231 | 1034 - a gvimrc file was found, |
1035 then the option will be set to 'nocompatible'. | |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1036 |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1037 Note that this does NOT happen when a system-wide vimrc file was found. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1038 |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1039 This has the side effect of setting or resetting other options (see |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1040 'compatible'). But only the options that have not been set or reset will be |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1041 changed. This has the same effect like the value of 'compatible' had this |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1042 value when starting Vim. |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1043 |
9737
35ce559b8553
commit https://github.com/vim/vim/commit/bc8801c9317eb721a2ee91322669f2dd5d136380
Christian Brabandt <cb@256bit.org>
parents:
9669
diff
changeset
|
1044 'compatible' is NOT reset, and |defaults.vim| is not loaded: |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1045 - when Vim was started with the |-u| command line argument, especially with |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1046 "-u NONE", or |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1047 - when started with the |-C| command line argument, or |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1048 - when the name of the executable ends in "ex". (This has been done to make |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1049 Vim behave like "ex", when it is started as "ex") |
7 | 1050 |
1051 But there is a side effect of setting or resetting 'compatible' at the moment | |
1052 a .vimrc file is found: Mappings are interpreted the moment they are | |
1053 encountered. This makes a difference when using things like "<CR>". If the | |
1054 mappings depend on a certain value of 'compatible', set or reset it before | |
1055 giving the mapping. | |
1056 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1057 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1058 Defaults without a .vimrc file ~ |
24733
08eced3add83
patch 8.2.2905: no error when defaults.vim cannot be loaded
Bram Moolenaar <Bram@vim.org>
parents:
24636
diff
changeset
|
1059 *defaults.vim* *E1187* |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1060 If Vim is started normally and no user vimrc file is found, the |
13125 | 1061 $VIMRUNTIME/defaults.vim script is loaded. This will set 'compatible' off, |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1062 switch on syntax highlighting and a few more things. See the script for |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1063 details. NOTE: this is done since Vim 8.0, not in Vim 7.4. (it was added in |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1064 patch 7.4.2111 to be exact). |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1065 |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1066 This should work well for new Vim users. If you create your own .vimrc, it is |
12756
3b26420fc639
Long overdue runtime update.
Christian Brabandt <cb@256bit.org>
parents:
11666
diff
changeset
|
1067 recommended to add these lines somewhere near the top: > |
10186
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1068 unlet! skip_defaults_vim |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1069 source $VIMRUNTIME/defaults.vim |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1070 Then Vim works like before you had a .vimrc. Copying $VIMRUNTIME/vimrc_example |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1071 is way to do this. Alternatively, you can copy defaults.vim to your .vimrc |
10186
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1072 and modify it (but then you won't get updates when it changes). |
9669
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1073 |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1074 If you don't like some of the defaults, you can still source defaults.vim and |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1075 revert individual settings. See the defaults.vim file for hints on how to |
284b4eb307fc
commit https://github.com/vim/vim/commit/8c08b5b569e2a9e9f63dea514591ecfa2d3bb392
Christian Brabandt <cb@256bit.org>
parents:
9464
diff
changeset
|
1076 revert each item. |
10186
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1077 *skip_defaults_vim* |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
10027
diff
changeset
|
1078 If you use a system-wide vimrc and don't want defaults.vim to change settings, |
10186
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1079 set the "skip_defaults_vim" variable. If this was set and you want to load |
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1080 defaults.vim from your .vimrc, first unlet skip_defaults_vim, as in the |
a5ef9968638c
commit https://github.com/vim/vim/commit/7e1479b86c590a66b63a274c079b7f18907d45a4
Christian Brabandt <cb@256bit.org>
parents:
10140
diff
changeset
|
1081 example above. |
10140
b11ceef7116e
commit https://github.com/vim/vim/commit/64d8e25bf6efe5f18b032563521c3ce278c316ab
Christian Brabandt <cb@256bit.org>
parents:
10027
diff
changeset
|
1082 |
7 | 1083 |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1084 Avoiding trojan horses ~ |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1085 *trojan-horse* |
7 | 1086 While reading the "vimrc" or the "exrc" file in the current directory, some |
1087 commands can be disabled for security reasons by setting the 'secure' option. | |
1088 This is always done when executing the command from a tags file. Otherwise it | |
1089 would be possible that you accidentally use a vimrc or tags file that somebody | |
1090 else created and contains nasty commands. The disabled commands are the ones | |
1091 that start a shell, the ones that write to a file, and ":autocmd". The ":map" | |
1092 commands are echoed, so you can see which keys are being mapped. | |
1093 If you want Vim to execute all commands in a local vimrc file, you | |
1094 can reset the 'secure' option in the EXINIT or VIMINIT environment variable or | |
1095 in the global "exrc" or "vimrc" file. This is not possible in "vimrc" or | |
1096 "exrc" in the current directory, for obvious reasons. | |
1097 On Unix systems, this only happens if you are not the owner of the | |
1098 vimrc file. Warning: If you unpack an archive that contains a vimrc or exrc | |
1099 file, it will be owned by you. You won't have the security protection. Check | |
1100 the vimrc file before you start Vim in that directory, or reset the 'exrc' | |
1101 option. Some Unix systems allow a user to do "chown" on a file. This makes | |
1102 it possible for another user to create a nasty vimrc and make you the owner. | |
1103 Be careful! | |
1104 When using tag search commands, executing the search command (the last | |
1105 part of the line in the tags file) is always done in secure mode. This works | |
1106 just like executing a command from a vimrc/exrc in the current directory. | |
1107 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1108 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1109 If Vim startup is slow ~ |
7 | 1110 *slow-start* |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
1111 If Vim takes a long time to start up, use the |--startuptime| argument to find |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
1112 out what happens. There are a few common causes: |
7 | 1113 - If the Unix version was compiled with the GUI and/or X11 (check the output |
1114 of ":version" for "+GUI" and "+X11"), it may need to load shared libraries | |
1115 and connect to the X11 server. Try compiling a version with GUI and X11 | |
1116 disabled. This also should make the executable smaller. | |
1117 Use the |-X| command line argument to avoid connecting to the X server when | |
1118 running in a terminal. | |
1119 - If you have "viminfo" enabled, the loading of the viminfo file may take a | |
1120 while. You can find out if this is the problem by disabling viminfo for a | |
1121 moment (use the Vim argument "-i NONE", |-i|). Try reducing the number of | |
1122 lines stored in a register with ":set viminfo='20,<50,s10". |viminfo-file|. | |
1123 | |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1124 |
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1125 Intro message ~ |
7 | 1126 *:intro* |
1127 When Vim starts without a file name, an introductory message is displayed (for | |
1128 those who don't know what Vim is). It is removed as soon as the display is | |
1129 redrawn in any way. To see the message again, use the ":intro" command (if | |
1130 there is not enough room, you will see only part of it). | |
1131 To avoid the intro message on startup, add the 'I' flag to 'shortmess'. | |
1132 | |
1133 *info-message* | |
1134 The |--help| and |--version| arguments cause Vim to print a message and then | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
1135 exit. Normally the message is sent to stdout, thus can be redirected to a |
7 | 1136 file with: > |
1137 | |
1138 vim --help >file | |
1139 | |
1140 From inside Vim: > | |
1141 | |
1142 :read !vim --help | |
1143 | |
1144 When using gvim, it detects that it might have been started from the desktop, | |
1145 without a terminal to show messages on. This is detected when both stdout and | |
1146 stderr are not a tty. This breaks the ":read" command, as used in the example | |
1147 above. To make it work again, set 'shellredir' to ">" instead of the default | |
1148 ">&": > | |
1149 | |
1150 :set shellredir=> | |
1151 :read !gvim --help | |
1152 | |
1153 This still won't work for systems where gvim does not use stdout at all | |
1154 though. | |
1155 | |
1156 ============================================================================== | |
1157 5. $VIM and $VIMRUNTIME | |
1158 *$VIM* | |
1159 The environment variable "$VIM" is used to locate various user files for Vim, | |
1160 such as the user startup script ".vimrc". This depends on the system, see | |
1161 |startup|. | |
1162 | |
1163 To avoid the need for every user to set the $VIM environment variable, Vim | |
1164 will try to get the value for $VIM in this order: | |
1165 1. The value defined by the $VIM environment variable. You can use this to | |
1166 make Vim look in a specific directory for its support files. Example: > | |
1167 setenv VIM /home/paul/vim | |
1168 2. The path from 'helpfile' is used, unless it contains some environment | |
1169 variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg | |
1170 problem). The file name ("help.txt" or any other) is removed. Then | |
1171 trailing directory names are removed, in this order: "doc", "runtime" and | |
19116 | 1172 "vim{version}" (e.g., "vim82"). |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1173 3. For Win32 Vim tries to use the directory name of the executable. If it |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1174 ends in "/src", this is removed. This is useful if you unpacked the .zip |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1175 file in some directory, and adjusted the search path to find the vim |
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1176 executable. Trailing directory names are removed, in this order: "runtime" |
19116 | 1177 and "vim{version}" (e.g., "vim82"). |
7 | 1178 4. For Unix the compile-time defined installation directory is used (see the |
1179 output of ":version"). | |
1180 | |
1181 Once Vim has done this once, it will set the $VIM environment variable. To | |
1182 change it later, use a ":let" command like this: > | |
1183 :let $VIM = "/home/paul/vim/" | |
1184 < | |
1185 *$VIMRUNTIME* | |
1186 The environment variable "$VIMRUNTIME" is used to locate various support | |
1187 files, such as the on-line documentation and files used for syntax | |
1188 highlighting. For example, the main help file is normally | |
1189 "$VIMRUNTIME/doc/help.txt". | |
1190 You don't normally set $VIMRUNTIME yourself, but let Vim figure it out. This | |
1191 is the order used to find the value of $VIMRUNTIME: | |
1192 1. If the environment variable $VIMRUNTIME is set, it is used. You can use | |
1193 this when the runtime files are in an unusual location. | |
1194 2. If "$VIM/vim{version}" exists, it is used. {version} is the version | |
19116 | 1195 number of Vim, without any '-' or '.'. For example: "$VIM/vim82". This is |
7 | 1196 the normal value for $VIMRUNTIME. |
1197 3. If "$VIM/runtime" exists, it is used. | |
1198 4. The value of $VIM is used. This is for backwards compatibility with older | |
1199 versions. | |
1200 5. When the 'helpfile' option is set and doesn't contain a '$', its value is | |
1201 used, with "doc/help.txt" removed from the end. | |
1202 | |
1203 For Unix, when there is a compiled-in default for $VIMRUNTIME (check the | |
1204 output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in | |
1205 default is used after step 5. This means that the compiled-in default | |
1206 overrules the value of $VIM. This is useful if $VIM is "/etc" and the runtime | |
19116 | 1207 files are in "/usr/share/vim/vim82". |
7 | 1208 |
1209 Once Vim has done this once, it will set the $VIMRUNTIME environment variable. | |
1210 To change it later, use a ":let" command like this: > | |
19116 | 1211 :let $VIMRUNTIME = "/home/piet/vim/vim82" |
7 | 1212 |
8 | 1213 In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that |
1214 greps in the help files) you might be able to use this: > | |
1215 | |
1216 VIMRUNTIME=`vim -e -T dumb --cmd 'exe "set t_cm=\<C-M>"|echo $VIMRUNTIME|quit' | tr -d '\015' ` | |
1217 | |
17571 | 1218 Don't set $VIMRUNTIME to an empty value, some things may stop working. |
1219 | |
7 | 1220 ============================================================================== |
1221 6. Suspending *suspend* | |
1222 | |
1223 *iconize* *iconise* *CTRL-Z* *v_CTRL-Z* | |
1224 CTRL-Z Suspend Vim, like ":stop". | |
1225 Works in Normal and in Visual mode. In Insert and | |
1226 Command-line mode, the CTRL-Z is inserted as a normal | |
1227 character. In Visual mode Vim goes back to Normal | |
1228 mode. | |
83 | 1229 Note: if CTRL-Z undoes a change see |mswin.vim|. |
7 | 1230 |
1231 | |
1232 :sus[pend][!] or *:sus* *:suspend* *:st* *:stop* | |
1233 :st[op][!] Suspend Vim. | |
1234 If the '!' is not given and 'autowrite' is set, every | |
1235 buffer with changes and a file name is written out. | |
1236 If the '!' is given or 'autowrite' is not set, changed | |
1237 buffers are not written, don't forget to bring Vim | |
1238 back to the foreground later! | |
1239 | |
19116 | 1240 In the GUI, suspending is implemented as iconising gvim. In MS-Windows, gvim |
1241 is minimized. | |
7 | 1242 |
1243 On many Unix systems, it is possible to suspend Vim with CTRL-Z. This is only | |
1244 possible in Normal and Visual mode (see next chapter, |vim-modes|). Vim will | |
1245 continue if you make it the foreground job again. On other systems, CTRL-Z | |
1246 will start a new shell. This is the same as the ":sh" command. Vim will | |
1247 continue if you exit from the shell. | |
1248 | |
1249 In X-windows the selection is disowned when Vim suspends. this means you | |
1250 can't paste it in another application (since Vim is going to sleep an attempt | |
1251 to get the selection would make the program hang). | |
1252 | |
1253 ============================================================================== | |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1254 7. Exiting *exiting* |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1255 |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1256 There are several ways to exit Vim: |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1257 - Close the last window with `:quit`. Only when there are no changes. |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1258 - Close the last window with `:quit!`. Also when there are changes. |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1259 - Close all windows with `:qall`. Only when there are no changes. |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1260 - Close all windows with `:qall!`. Also when there are changes. |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1261 - Use `:cquit`. Also when there are changes. |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1262 |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1263 When using `:cquit` or when there was an error message Vim exits with exit |
10617 | 1264 code 1. Errors can be avoided by using `:silent!` or with `:catch`. |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1265 |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1266 ============================================================================== |
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1267 8. Saving settings *save-settings* |
7 | 1268 |
1269 Mostly you will edit your vimrc files manually. This gives you the greatest | |
1270 flexibility. There are a few commands to generate a vimrc file automatically. | |
1271 You can use these files as they are, or copy/paste lines to include in another | |
1272 vimrc file. | |
1273 | |
1274 *:mk* *:mkexrc* | |
1275 :mk[exrc] [file] Write current key mappings and changed options to | |
1276 [file] (default ".exrc" in the current directory), | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1277 unless it already exists. |
7 | 1278 |
1279 :mk[exrc]! [file] Always write current key mappings and changed | |
1280 options to [file] (default ".exrc" in the current | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1281 directory). |
7 | 1282 |
16944 | 1283 *:mkv* *:mkvi* *:mkvimrc* |
7 | 1284 :mkv[imrc][!] [file] Like ":mkexrc", but the default is ".vimrc" in the |
1285 current directory. The ":version" command is also | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1286 written to the file. |
7 | 1287 |
1288 These commands will write ":map" and ":set" commands to a file, in such a way | |
1289 that when these commands are executed, the current key mappings and options | |
1290 will be set to the same values. The options 'columns', 'endofline', | |
1291 'fileformat', 'key', 'lines', 'modified', 'scroll', 'term', 'textmode', | |
1292 'ttyfast' and 'ttymouse' are not included, because these are terminal or file | |
1293 dependent. Note that the options 'binary', 'paste' and 'readonly' are | |
1294 included, this might not always be what you want. | |
1295 | |
1296 When special keys are used in mappings, The 'cpoptions' option will be | |
1297 temporarily set to its Vim default, to avoid the mappings to be | |
1298 misinterpreted. This makes the file incompatible with Vi, but makes sure it | |
1299 can be used with different terminals. | |
1300 | |
1301 Only global mappings are stored, not mappings local to a buffer. | |
1302 | |
1303 A common method is to use a default ".vimrc" file, make some modifications | |
1304 with ":map" and ":set" commands and write the modified file. First read the | |
1305 default ".vimrc" in with a command like ":source ~piet/.vimrc.Cprogs", change | |
1306 the settings and then save them in the current directory with ":mkvimrc!". If | |
1307 you want to make this file your default .vimrc, move it to your home directory | |
18972 | 1308 (on Unix), s: (Amiga) or $VIM directory (MS-Windows). You could also use |
7 | 1309 autocommands |autocommand| and/or modelines |modeline|. |
1310 | |
714 | 1311 *vimrc-option-example* |
7 | 1312 If you only want to add a single option setting to your vimrc, you can use |
1313 these steps: | |
1314 1. Edit your vimrc file with Vim. | |
1315 2. Play with the option until it's right. E.g., try out different values for | |
1316 'guifont'. | |
1317 3. Append a line to set the value of the option, using the expression register | |
1318 '=' to enter the value. E.g., for the 'guifont' option: > | |
1319 o:set guifont=<C-R>=&guifont<CR><Esc> | |
1320 < [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key] | |
714 | 1321 You need to escape special characters, esp. spaces. |
7 | 1322 |
1323 Note that when you create a .vimrc file, this can influence the 'compatible' | |
1324 option, which has several side effects. See |'compatible'|. | |
1325 ":mkvimrc", ":mkexrc" and ":mksession" write the command to set or reset the | |
1326 'compatible' option to the output file first, because of these side effects. | |
1327 | |
1328 ============================================================================== | |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1329 9. Views and Sessions *views-sessions* |
7 | 1330 |
1331 This is introduced in sections |21.4| and |21.5| of the user manual. | |
1332 | |
1333 *View* *view-file* | |
1334 A View is a collection of settings that apply to one window. You can save a | |
1335 View and when you restore it later, the text is displayed in the same way. | |
1336 The options and mappings in this window will also be restored, so that you can | |
1337 continue editing like when the View was saved. | |
1338 | |
1339 *Session* *session-file* | |
1340 A Session keeps the Views for all windows, plus the global settings. You can | |
1341 save a Session and when you restore it later the window layout looks the same. | |
1342 You can use a Session to quickly switch between different projects, | |
1343 automatically loading the files you were last working on in that project. | |
1344 | |
1345 Views and Sessions are a nice addition to viminfo-files, which are used to | |
1346 remember information for all Views and Sessions together |viminfo-file|. | |
1347 | |
1348 You can quickly start editing with a previously saved View or Session with the | |
1349 |-S| argument: > | |
1350 vim -S Session.vim | |
1351 < | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1352 All this is {not available when compiled without the |+mksession| feature}. |
7 | 1353 |
1354 *:mks* *:mksession* | |
1355 :mks[ession][!] [file] Write a Vim script that restores the current editing | |
1356 session. | |
1357 When [!] is included an existing file is overwritten. | |
1358 When [file] is omitted "Session.vim" is used. | |
1359 | |
1360 The output of ":mksession" is like ":mkvimrc", but additional commands are | |
1361 added to the file. Which ones depends on the 'sessionoptions' option. The | |
1362 resulting file, when executed with a ":source" command: | |
1363 1. Restores global mappings and options, if 'sessionoptions' contains | |
1364 "options". Script-local mappings will not be written. | |
1365 2. Restores global variables that start with an uppercase letter and contain | |
1366 at least one lowercase letter, if 'sessionoptions' contains "globals". | |
23931 | 1367 3. Closes all windows in the current tab page, except the current one; closes |
1368 all tab pages except the current one (this results in currently loaded | |
1369 buffers to be unloaded, some may become hidden if 'hidden' is set or | |
1370 otherwise specified); wipes out the current buffer, if it is empty | |
1371 and unnamed. | |
7 | 1372 4. Restores the current directory if 'sessionoptions' contains "curdir", or |
1373 sets the current directory to where the Session file is if 'sessionoptions' | |
1374 contains "sesdir". | |
1375 5. Restores GUI Vim window position, if 'sessionoptions' contains "winpos". | |
1376 6. Restores screen size, if 'sessionoptions' contains "resize". | |
1377 7. Reloads the buffer list, with the last cursor positions. If | |
1378 'sessionoptions' contains "buffers" then all buffers are restored, | |
1379 including hidden and unloaded buffers. Otherwise only buffers in windows | |
1380 are restored. | |
1381 8. Restores all windows with the same layout. If 'sessionoptions' contains | |
1125 | 1382 "help", help windows are restored. If 'sessionoptions' contains "blank", |
1383 windows editing a buffer without a name will be restored. | |
7 | 1384 If 'sessionoptions' contains "winsize" and no (help/blank) windows were |
1385 left out, the window sizes are restored (relative to the screen size). | |
1386 Otherwise, the windows are just given sensible sizes. | |
1387 9. Restores the Views for all the windows, as with |:mkview|. But | |
1388 'sessionoptions' is used instead of 'viewoptions'. | |
1389 10. If a file exists with the same name as the Session file, but ending in | |
1390 "x.vim" (for eXtra), executes that as well. You can use *x.vim files to | |
1391 specify additional settings and actions associated with a given Session, | |
1392 such as creating menu items in the GUI version. | |
1393 | |
1394 After restoring the Session, the full filename of your current Session is | |
1395 available in the internal variable "v:this_session" |this_session-variable|. | |
1396 An example mapping: > | |
27903 | 1397 :nmap <F2> :wa<Bar>exe "mksession! " .. v:this_session<CR>:so ~/sessions/ |
7 | 1398 This saves the current Session, and starts off the command to load another. |
1399 | |
841 | 1400 A session includes all tab pages, unless "tabpages" was removed from |
1401 'sessionoptions'. |tab-page| | |
674 | 1402 |
574 | 1403 The |SessionLoadPost| autocmd event is triggered after a session file is |
1404 loaded/sourced. | |
1405 *SessionLoad-variable* | |
1406 While the session file is loading the SessionLoad global variable is set to 1. | |
1407 Plugins can use this to postpone some work until the SessionLoadPost event is | |
1408 triggered. | |
1409 | |
7 | 1410 *:mkvie* *:mkview* |
1411 :mkvie[w][!] [file] Write a Vim script that restores the contents of the | |
1412 current window. | |
1413 When [!] is included an existing file is overwritten. | |
1414 When [file] is omitted or is a number from 1 to 9, a | |
843 | 1415 name is generated and 'viewdir' prepended. When the |
5814 | 1416 last path part of 'viewdir' does not exist, this |
1417 directory is created. E.g., when 'viewdir' is | |
1418 "$VIM/vimfiles/view" then "view" is created in | |
1419 "$VIM/vimfiles". | |
7 | 1420 An existing file is always overwritten then. Use |
1421 |:loadview| to load this view again. | |
1422 When [file] is the name of a file ('viewdir' is not | |
1423 used), a command to edit the file is added to the | |
1424 generated file. | |
1425 | |
1426 The output of ":mkview" contains these items: | |
1427 1. The argument list used in the window. When the global argument list is | |
1428 used it is reset to the global list. | |
1429 The index in the argument list is also restored. | |
1430 2. The file being edited in the window. If there is no file, the window is | |
1431 made empty. | |
1432 3. Restore mappings, abbreviations and options local to the window if | |
1433 'viewoptions' contains "options" or "localoptions". For the options it | |
1434 restores only values that are local to the current buffer and values local | |
1435 to the window. | |
1436 When storing the view as part of a session and "options" is in | |
1437 'sessionoptions', global values for local options will be stored too. | |
1438 4. Restore folds when using manual folding and 'viewoptions' contains | |
1439 "folds". Restore manually opened and closed folds. | |
1440 5. The scroll position and the cursor position in the file. Doesn't work very | |
1441 well when there are closed folds. | |
1442 6. The local current directory, if it is different from the global current | |
12826 | 1443 directory and 'viewoptions' contains "curdir". |
7 | 1444 |
1445 Note that Views and Sessions are not perfect: | |
1446 - They don't restore everything. For example, defined functions, autocommands | |
1447 and ":syntax on" are not included. Things like register contents and | |
1448 command line history are in viminfo, not in Sessions or Views. | |
9 | 1449 - Global option values are only set when they differ from the default value. |
7 | 1450 When the current value is not the default value, loading a Session will not |
1451 set it back to the default value. Local options will be set back to the | |
1452 default value though. | |
1453 - Existing mappings will be overwritten without warning. An existing mapping | |
1454 may cause an error for ambiguity. | |
1455 - When storing manual folds and when storing manually opened/closed folds, | |
1456 changes in the file between saving and loading the view will mess it up. | |
1457 - The Vim script is not very efficient. But still faster than typing the | |
1458 commands yourself! | |
1459 | |
1460 *:lo* *:loadview* | |
1461 :lo[adview] [nr] Load the view for the current file. When [nr] is | |
1462 omitted, the view stored with ":mkview" is loaded. | |
1463 When [nr] is specified, the view stored with ":mkview | |
1464 [nr]" is loaded. | |
1465 | |
1466 The combination of ":mkview" and ":loadview" can be used to store up to ten | |
1467 different views of a file. These are remembered in the directory specified | |
1468 with the 'viewdir' option. The views are stored using the file name. If a | |
1469 file is renamed or accessed through a (symbolic) link the view will not be | |
1470 found. | |
1471 | |
1472 You might want to clean up your 'viewdir' directory now and then. | |
1473 | |
1474 To automatically save and restore views for *.c files: > | |
1475 au BufWinLeave *.c mkview | |
1476 au BufWinEnter *.c silent loadview | |
1477 | |
1478 ============================================================================== | |
8148
f5da459c5698
commit https://github.com/vim/vim/commit/e0fa3742ead676a3074a10edadbc955e1a89153d
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
1479 10. The viminfo file *viminfo* *viminfo-file* *E136* |
7 | 1480 *E575* *E576* *E577* |
1481 If you exit Vim and later start it again, you would normally lose a lot of | |
1482 information. The viminfo file can be used to remember that information, which | |
1483 enables you to continue where you left off. | |
1484 | |
1485 This is introduced in section |21.3| of the user manual. | |
1486 | |
1487 The viminfo file is used to store: | |
1488 - The command line history. | |
1489 - The search string history. | |
1490 - The input-line history. | |
56 | 1491 - Contents of non-empty registers. |
7 | 1492 - Marks for several files. |
1493 - File marks, pointing to locations in files. | |
1494 - Last search/substitute pattern (for 'n' and '&'). | |
1495 - The buffer list. | |
1496 - Global variables. | |
1497 | |
1498 The viminfo file is not supported when the |+viminfo| feature has been | |
1499 disabled at compile time. | |
1500 | |
1501 You could also use a Session file. The difference is that the viminfo file | |
1502 does not depend on what you are working on. There normally is only one | |
1503 viminfo file. Session files are used to save the state of a specific editing | |
1504 Session. You could have several Session files, one for each project you are | |
1505 working on. Viminfo and Session files together can be used to effectively | |
1506 enter Vim and directly start working in your desired setup. |session-file| | |
1507 | |
1508 *viminfo-read* | |
1509 When Vim is started and the 'viminfo' option is non-empty, the contents of | |
1510 the viminfo file are read and the info can be used in the appropriate places. | |
1733 | 1511 The |v:oldfiles| variable is filled. The marks are not read in at startup |
1512 (but file marks are). See |initialization| for how to set the 'viminfo' | |
1513 option upon startup. | |
7 | 1514 |
1515 *viminfo-write* | |
1516 When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo | |
1517 file (it's actually merged with the existing one, if one exists). The | |
1518 'viminfo' option is a string containing information about what info should be | |
1519 stored, and contains limits on how much should be stored (see 'viminfo'). | |
1520 | |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1521 Merging happens in two ways. Most items that have been changed or set in the |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1522 current Vim session are stored, and what was not changed is filled from what |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1523 is currently in the viminfo file. For example: |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1524 - Vim session A reads the viminfo, which contains variable START. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1525 - Vim session B does the same |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1526 - Vim session A sets the variables AAA and BOTH and exits |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1527 - Vim session B sets the variables BBB and BOTH and exits |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1528 Now the viminfo will have: |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1529 START - it was in the viminfo and wasn't changed in session A or B |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1530 AAA - value from session A, session B kept it |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1531 BBB - value from session B |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1532 BOTH - value from session B, value from session A is lost |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1533 |
9464
be72f4201a1d
commit https://github.com/vim/vim/commit/063b9d15abea041a5bfff3ffc4e219e26fd1d4fa
Christian Brabandt <cb@256bit.org>
parents:
9319
diff
changeset
|
1534 *viminfo-timestamp* |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1535 For some items a timestamp is used to keep the last changed version. Here it |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1536 doesn't matter in which sequence Vim sessions exit, the newest item(s) are |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1537 always kept. This is used for: |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1538 - The command line history. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1539 - The search string history. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1540 - The input-line history. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1541 - Contents of non-empty registers. |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1542 - The jump list |
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1543 - File marks |
9319
1472ed67c36f
commit https://github.com/vim/vim/commit/a02a551e18209423584fcb923e93c6be18f3aa45
Christian Brabandt <cb@256bit.org>
parents:
9286
diff
changeset
|
1544 The timestamp feature was added before Vim 8.0. Older versions of Vim, |
1472ed67c36f
commit https://github.com/vim/vim/commit/a02a551e18209423584fcb923e93c6be18f3aa45
Christian Brabandt <cb@256bit.org>
parents:
9286
diff
changeset
|
1545 starting with 7.4.1131, will keep the items with timestamp, but not use them. |
1472ed67c36f
commit https://github.com/vim/vim/commit/a02a551e18209423584fcb923e93c6be18f3aa45
Christian Brabandt <cb@256bit.org>
parents:
9286
diff
changeset
|
1546 Thus when using both an older and a newer version of Vim the most recent data |
1472ed67c36f
commit https://github.com/vim/vim/commit/a02a551e18209423584fcb923e93c6be18f3aa45
Christian Brabandt <cb@256bit.org>
parents:
9286
diff
changeset
|
1547 will be kept. |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1548 |
7 | 1549 Notes for Unix: |
1550 - The file protection for the viminfo file will be set to prevent other users | |
1551 from being able to read it, because it may contain any text or commands that | |
1552 you have worked with. | |
1553 - If you want to share the viminfo file with other users (e.g. when you "su" | |
1554 to another user), you can make the file writable for the group or everybody. | |
12826 | 1555 Vim will preserve this when replacing the viminfo file. Be careful, don't |
7 | 1556 allow just anybody to read and write your viminfo file! |
1557 - Vim will not overwrite a viminfo file that is not writable by the current | |
1558 "real" user. This helps for when you did "su" to become root, but your | |
1559 $HOME is still set to a normal user's home directory. Otherwise Vim would | |
1560 create a viminfo file owned by root that nobody else can read. | |
1270 | 1561 - The viminfo file cannot be a symbolic link. This is to avoid security |
1562 issues. | |
7 | 1563 |
1564 Marks are stored for each file separately. When a file is read and 'viminfo' | |
1565 is non-empty, the marks for that file are read from the viminfo file. NOTE: | |
1566 The marks are only written when exiting Vim, which is fine because marks are | |
1567 remembered for all the files you have opened in the current editing session, | |
1568 unless ":bdel" is used. If you want to save the marks for a file that you are | |
1569 about to abandon with ":bdel", use ":wv". The '[' and ']' marks are not | |
1570 stored, but the '"' mark is. The '"' mark is very useful for jumping to the | |
1571 cursor position when the file was last exited. No marks are saved for files | |
1572 that start with any string given with the "r" flag in 'viminfo'. This can be | |
18972 | 1573 used to avoid saving marks for files on removable media (for MS-Windows you |
1574 would use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:"). | |
1733 | 1575 The |v:oldfiles| variable is filled with the file names that the viminfo file |
1576 has marks for. | |
7 | 1577 |
1578 *viminfo-file-marks* | |
1579 Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The | |
1580 numbered marks ('0 to '9) are a bit special. When the viminfo file is written | |
1581 (when exiting or with the ":wviminfo" command), '0 is set to the current cursor | |
1582 position and file. The old '0 is moved to '1, '1 to '2, etc. This | |
1583 resembles what happens with the "1 to "9 delete registers. If the current | |
1584 cursor position is already present in '0 to '9, it is moved to '0, to avoid | |
1585 having the same position twice. The result is that with "'0", you can jump | |
1586 back to the file and line where you exited Vim. To do that right away, try | |
1587 using this command: > | |
1588 | |
1589 vim -c "normal '0" | |
1590 | |
1623 | 1591 In a csh compatible shell you could make an alias for it: > |
7 | 1592 |
1593 alias lvim vim -c '"'normal "'"0'"' | |
1594 | |
1623 | 1595 For a bash-like shell: > |
1596 | |
1597 alias lvim='vim -c "normal '\''0"' | |
1598 | |
7 | 1599 Use the "r" flag in 'viminfo' to specify for which files no marks should be |
1600 remembered. | |
1601 | |
1602 | |
1603 VIMINFO FILE NAME *viminfo-file-name* | |
1604 | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1605 - The default name of the viminfo file is "$HOME/.viminfo" for Unix, |
19163 | 1606 "s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For Win32, when $HOME |
1607 is not set, "$VIM\_viminfo" is used. When $VIM is also not set, | |
18912
ccd16426a1f9
patch 8.2.0017: OS/2 and MS-DOS are still mentioned
Bram Moolenaar <Bram@vim.org>
parents:
18879
diff
changeset
|
1608 "c:\_viminfo" is used. |
7 | 1609 - The 'n' flag in the 'viminfo' option can be used to specify another viminfo |
1610 file name |'viminfo'|. | |
1611 - The "-i" Vim argument can be used to set another file name, |-i|. When the | |
1612 file name given is "NONE" (all uppercase), no viminfo file is ever read or | |
1613 written. Also not for the commands below! | |
14347 | 1614 - The 'viminfofile' option can be used like the "-i" argument. In fact, the |
24636 | 1615 value from the "-i" argument is stored in the 'viminfofile' option. |
7 | 1616 - For the commands below, another file name can be given, overriding the |
1617 default and the name given with 'viminfo' or "-i" (unless it's NONE). | |
1618 | |
1619 | |
1620 CHARACTER ENCODING *viminfo-encoding* | |
1621 | |
1622 The text in the viminfo file is encoded as specified with the 'encoding' | |
1623 option. Normally you will always work with the same 'encoding' value, and | |
1624 this works just fine. However, if you read the viminfo file with another | |
1625 value for 'encoding' than what it was written with, some of the text | |
1626 (non-ASCII characters) may be invalid. If this is unacceptable, add the 'c' | |
1627 flag to the 'viminfo' option: > | |
1628 :set viminfo+=c | |
1629 Vim will then attempt to convert the text in the viminfo file from the | |
1630 'encoding' value it was written with to the current 'encoding' value. This | |
1631 requires Vim to be compiled with the |+iconv| feature. Filenames are not | |
1632 converted. | |
1633 | |
1634 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
1635 MANUALLY READING AND WRITING *viminfo-read-write* |
7 | 1636 |
1637 Two commands can be used to read and write the viminfo file manually. This | |
1638 can be used to exchange registers between two running Vim programs: First | |
1639 type ":wv" in one and then ":rv" in the other. Note that if the register | |
1640 already contained something, then ":rv!" would be required. Also note | |
1641 however that this means everything will be overwritten with information from | |
1642 the first Vim, including the command line history, etc. | |
1643 | |
1644 The viminfo file itself can be edited by hand too, although we suggest you | |
1645 start with an existing one to get the format right. It is reasonably | |
1646 self-explanatory once you're in there. This can be useful in order to | |
1647 create a second file, say "~/.my_viminfo" which could contain certain | |
1648 settings that you always want when you first start Vim. For example, you | |
1649 can preload registers with particular data, or put certain commands in the | |
1650 command line history. A line in your .vimrc file like > | |
1651 :rviminfo! ~/.my_viminfo | |
1652 can be used to load this information. You could even have different viminfos | |
1653 for different types of files (e.g., C code) and load them based on the file | |
1654 name, using the ":autocmd" command (see |:autocmd|). | |
1655 | |
1656 *viminfo-errors* | |
1657 When Vim detects an error while reading a viminfo file, it will not overwrite | |
1658 that file. If there are more than 10 errors, Vim stops reading the viminfo | |
1659 file. This was done to avoid accidentally destroying a file when the file | |
1660 name of the viminfo file is wrong. This could happen when accidentally typing | |
1661 "vim -i file" when you wanted "vim -R file" (yes, somebody accidentally did | |
1662 that!). If you want to overwrite a viminfo file with an error in it, you will | |
1663 either have to fix the error, or delete the file (while Vim is running, so | |
1664 most of the information will be restored). | |
1665 | |
1666 *:rv* *:rviminfo* *E195* | |
23931 | 1667 :rv[iminfo][!] [file] Read from viminfo file [file] (default: see |
1668 |viminfo-file-name| above). | |
7 | 1669 If [!] is given, then any information that is |
1733 | 1670 already set (registers, marks, |v:oldfiles|, etc.) |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1671 will be overwritten |
7 | 1672 |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1673 *:wv* *:wviminfo* *E137* *E138* *E574* *E886* *E929* |
23931 | 1674 :wv[iminfo][!] [file] Write to viminfo file [file] (default: see |
1675 |viminfo-file-name| above). | |
1676 This command has no effect when 'viminfofile' has been | |
1677 set to "NONE". | |
7 | 1678 The information in the file is first read in to make |
1679 a merge between old and new info. When [!] is used, | |
1680 the old information is not read first, only the | |
1681 internal info is written. If 'viminfo' is empty, marks | |
1682 for up to 100 files will be written. | |
9286
64035abb986b
commit https://github.com/vim/vim/commit/c95a302a4c42ec8230473cd4a5e0064d0a143aa8
Christian Brabandt <cb@256bit.org>
parents:
9041
diff
changeset
|
1683 When you get error "E929: Too many viminfo temp files" |
7 | 1684 check that no old temp files were left behind (e.g. |
1685 ~/.viminf*) and that you can write in the directory of | |
1686 the .viminfo file. | |
1687 | |
1733 | 1688 *:ol* *:oldfiles* |
1689 :ol[dfiles] List the files that have marks stored in the viminfo | |
1690 file. This list is read on startup and only changes | |
9915
4da1a3879100
commit https://github.com/vim/vim/commit/e11d61a3b1cdedf3144de697a2b38af62c3a78d8
Christian Brabandt <cb@256bit.org>
parents:
9778
diff
changeset
|
1691 afterwards with `:rviminfo!`. Also see |v:oldfiles|. |
1733 | 1692 The number can be used with |c_#<|. |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1693 The output can be filtered with |:filter|, e.g.: > |
10004
8061455d9179
commit https://github.com/vim/vim/commit/818078ddfbb8cc2546f697c5675a251d095722ec
Christian Brabandt <cb@256bit.org>
parents:
9941
diff
changeset
|
1694 filter /\.vim/ oldfiles |
9941
e975914c17e9
commit https://github.com/vim/vim/commit/7b668e83d0635d082b7ec90d7d2aa30a9d7d8928
Christian Brabandt <cb@256bit.org>
parents:
9915
diff
changeset
|
1695 < The filtering happens on the file name. |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
15878
diff
changeset
|
1696 {only when compiled with the |+eval| feature} |
1733 | 1697 |
1698 :bro[wse] ol[dfiles][!] | |
1699 List file names as with |:oldfiles|, and then prompt | |
1700 for a number. When the number is valid that file from | |
1701 the list is edited. | |
1702 If you get the |press-enter| prompt you can press "q" | |
1703 and still get the prompt to enter a file number. | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1989
diff
changeset
|
1704 Use ! to abandon a modified buffer. |abandon| |
1733 | 1705 {not when compiled with tiny or small features} |
1706 | |
14421 | 1707 vim:tw=78:ts=8:noet:ft=help:norl: |