Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 1 | *starting.txt* For Vim version 9.1. Last change: 2025 Jun 28 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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| |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 15 | 7. Exiting |exiting| |
| 16 | 8. Saving settings |save-settings| |
| 17 | 9. Views and Sessions |views-sessions| |
| 18 | 10. The viminfo file |viminfo-file| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 5f148ec | 2016-03-07 22:59:26 +0100 | [diff] [blame] | 48 | For behavior of quotes on MS-Windows, see |win32-quotes|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 - |
Bram Moolenaar | ebdf3c9 | 2020-02-15 21:41:42 +0100 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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: |
Christian Brabandt | 5935601 | 2024-04-20 17:12:59 +0200 | [diff] [blame] | 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* |
| 101 | gex vim -eg Start the GUI in Ex mode. *gex* |
| 102 | gview vim -Rg Start the GUI in read-only mode. *gview* |
| 103 | rvim vim -Z Like "vim", but in restricted mode (see |-Z|) *rvim* |
| 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* |
h-east | 53753f6 | 2024-05-05 18:42:31 +0200 | [diff] [blame] | 107 | evim vim -y Easy Vim: set 'insertmode' (see |-y|) *evim* |
| 108 | eview vim -yR Like "evim" in read-only mode *eview* |
| 109 | vimdiff vim -d Start in diff mode |diff-mode| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 110 | gvimdiff vim -gd Start in diff mode |diff-mode| |
| 111 | |
| 112 | Additional characters may follow, they are ignored. For example, you can have |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 113 | "gvim-8" to start the GUI. You must have an executable by that name then, of |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 114 | course. |
| 115 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 116 | On Unix, you would normally have one executable called "vim", and links from |
| 117 | the different startup-names to that executable. If your system does not |
| 118 | support links and you do not want to have several copies of the executable, |
| 119 | you could use an alias instead. For example, in a C shell descendant: > |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 | |
Bram Moolenaar | 85eee13 | 2018-05-06 17:57:30 +0200 | [diff] [blame] | 131 | --help *-h* *--help* *-?* |
| 132 | -? |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 133 | -h Give usage (help) message and exit. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 134 | See |info-message| about capturing the text. |
| 135 | |
| 136 | *--version* |
| 137 | --version Print version information and exit. Same output as for |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 138 | |:version| command. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 139 | See |info-message| about capturing the text. |
| 140 | |
| 141 | *--noplugin* |
| 142 | --noplugin Skip loading plugins. Resets the 'loadplugins' option. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 143 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 144 | Note that the |-u| argument may also disable loading plugins: |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 145 | argument load: vimrc files plugins defaults.vim ~ |
| 146 | (nothing) yes yes yes |
| 147 | -u NONE no no no |
| 148 | -u DEFAULTS no no yes |
| 149 | -u NORC no yes no |
| 150 | --noplugin yes no yes |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 151 | |
Bram Moolenaar | ef94eec | 2009-11-11 13:22:11 +0000 | [diff] [blame] | 152 | --startuptime {fname} *--startuptime* |
Bram Moolenaar | 3f26967 | 2009-11-03 11:11:11 +0000 | [diff] [blame] | 153 | During startup write timing messages to the file {fname}. |
| 154 | This can be used to find out where time is spent while loading |
Bram Moolenaar | ef94eec | 2009-11-11 13:22:11 +0000 | [diff] [blame] | 155 | your .vimrc, plugins and opening the first file. |
Bram Moolenaar | 3f26967 | 2009-11-03 11:11:11 +0000 | [diff] [blame] | 156 | When {fname} already exists new messages are appended. |
Bram Moolenaar | 30e9b3c | 2019-09-07 16:24:12 +0200 | [diff] [blame] | 157 | {only available when compiled with the |+startuptime| |
| 158 | feature} |
Bram Moolenaar | 3f26967 | 2009-11-03 11:11:11 +0000 | [diff] [blame] | 159 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 946e27a | 2014-06-25 18:50:27 +0200 | [diff] [blame] | 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". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 194 | |
| 195 | --cmd {command} *--cmd* |
| 196 | {command} will be executed before processing any vimrc file. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 197 | Otherwise, it acts like -c {command}. You can use up to 10 of |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 198 | these commands, independently from "-c" commands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 "-". |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 207 | |
| 208 | Do not use this for running a script to do some work and exit |
| 209 | Vim, you won't see error messages. Use |-u| instead. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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* |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 221 | -L Same as -r. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 369b6f5 | 2017-01-17 12:22:32 +0100 | [diff] [blame] | 235 | See |-M| for disallowing modifications. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 248 | |
Bram Moolenaar | 8c62a08 | 2019-02-08 14:34:10 +0100 | [diff] [blame] | 249 | *-Z* *restricted-mode* *E145* *E981* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 250 | -Z Restricted mode. All commands that make use of an external |
| 251 | shell are disabled. This includes suspending with CTRL-Z, |
Christian Brabandt | 6b89dd6 | 2023-10-26 22:14:17 +0200 | [diff] [blame] | 252 | ":sh", filtering, the |system()| function, backtick expansion |
Bram Moolenaar | 8c62a08 | 2019-02-08 14:34:10 +0100 | [diff] [blame] | 253 | and libcall(). |
Christian Brabandt | 6b89dd6 | 2023-10-26 22:14:17 +0200 | [diff] [blame] | 254 | Also disallowed are |delete()|, |rename()|, |mkdir()|, |
| 255 | |job_start()|, |setenv()| etc. |
Bram Moolenaar | 8c62a08 | 2019-02-08 14:34:10 +0100 | [diff] [blame] | 256 | Interfaces, such as Python, Ruby and Lua, are also disabled, |
| 257 | since they could be used to execute shell commands. Perl uses |
| 258 | the Safe module. |
matveyt | adbb1bf | 2022-02-01 17:26:12 +0000 | [diff] [blame] | 259 | For Unix restricted mode is used when the last part of $SHELL |
| 260 | is "nologin" or "false". |
Bram Moolenaar | 8c62a08 | 2019-02-08 14:34:10 +0100 | [diff] [blame] | 261 | Note that the user may still find a loophole to execute a |
| 262 | shell command, it has only been made difficult. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 263 | |
| 264 | *-g* |
Bram Moolenaar | 61d35bd | 2012-03-28 20:51:51 +0200 | [diff] [blame] | 265 | -g Start Vim in GUI mode. See |gui|. For the opposite see |-v|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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* |
Bram Moolenaar | 6f4754b | 2022-01-23 12:07:04 +0000 | [diff] [blame] | 273 | -e Start Vim in Ex mode, see |Ex-mode|. Only makes a difference |
| 274 | when the executable is not called "ex". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 275 | |
| 276 | *-E* |
| 277 | -E Start Vim in improved Ex mode |gQ|. Only makes a difference |
| 278 | when the executable is not called "exim". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 279 | |
| 280 | *-s-ex* |
| 281 | -s Silent or batch mode. Only when Vim was started as "ex" or |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 282 | when preceded with the "-e" argument. Otherwise, see |-s|, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 26a60b4 | 2005-02-22 08:49:11 +0000 | [diff] [blame] | 287 | The output of these commands is displayed (to stdout): |
| 288 | :print |
| 289 | :list |
| 290 | :number |
| 291 | :set to display option values. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 292 | When 'verbose' is non-zero, messages are printed (for |
Bram Moolenaar | 26a60b4 | 2005-02-22 08:49:11 +0000 | [diff] [blame] | 293 | debugging, to stderr). |
| 294 | 'term' and $TERM are not used. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 295 | If Vim appears to be stuck, try typing "qa!<Enter>". You |
| 296 | don't get a prompt, thus you can't see Vim is waiting for you |
| 297 | to type something. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 298 | Initializations are skipped (except the ones given with the |
| 299 | "-u" argument). |
| 300 | Example: > |
| 301 | vim -e -s < thefilter thefile |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 302 | < For the opposite, to see errors from the script, execute the |
| 303 | file with the |-u| flag: > |
| 304 | vim -u thefilter thefile |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 305 | < |
| 306 | *-b* |
| 307 | -b Binary mode. File I/O will only recognize <NL> to separate |
Bram Moolenaar | 13fcaaf | 2005-04-15 21:13:42 +0000 | [diff] [blame] | 308 | lines. The 'expandtab' option will be reset. The 'textwidth' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 312 | |edit-binary|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 313 | |
| 314 | *-l* |
| 315 | -l Lisp mode. Sets the 'lisp' and 'showmatch' options on. |
| 316 | |
| 317 | *-A* |
Bram Moolenaar | 30e9b3c | 2019-09-07 16:24:12 +0200 | [diff] [blame] | 318 | -A Arabic mode. Sets the 'arabic' option on. {only when |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 319 | compiled with the |+arabic| features (which include |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 320 | |+rightleft|), otherwise, Vim gives an error message |
Bram Moolenaar | 30e9b3c | 2019-09-07 16:24:12 +0200 | [diff] [blame] | 321 | and exits} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 322 | |
| 323 | *-F* |
Bram Moolenaar | 14184a3 | 2019-02-16 15:10:30 +0100 | [diff] [blame] | 324 | -F This was used for Farsi mode, which has been removed. |
| 325 | See |farsi.txt|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 326 | |
| 327 | *-H* |
| 328 | -H Hebrew mode. Sets the 'hkmap' and 'rightleft' options on. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 329 | {only when compiled with the |+rightleft| feature, otherwise, |
Bram Moolenaar | 30e9b3c | 2019-09-07 16:24:12 +0200 | [diff] [blame] | 330 | Vim gives an error message and exits} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 336 | out what is happening upon startup and exit. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 337 | Example: > |
| 338 | vim -V8 foobar |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 339 | |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 344 | Example: > |
| 345 | vim -V20vimlog foobar |
| 346 | < |
Bram Moolenaar | c9a9a0a | 2022-04-12 15:09:23 +0100 | [diff] [blame] | 347 | --log {filename} *--log* |
| 348 | Start logging and write entries to {filename}. |
Bram Moolenaar | 1d97db3 | 2022-06-04 22:15:54 +0100 | [diff] [blame] | 349 | This works like calling `ch_logfile({filename}, 'ao')` very |
Bram Moolenaar | c9a9a0a | 2022-04-12 15:09:23 +0100 | [diff] [blame] | 350 | early during startup. |
Christian Brabandt | c290009 | 2023-10-17 18:10:13 +0200 | [diff] [blame] | 351 | {only available with the |+eval| and |+channel| feature} |
Bram Moolenaar | c9a9a0a | 2022-04-12 15:09:23 +0100 | [diff] [blame] | 352 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 361 | Keep in mind that the command ":set nocompatible" in some |
| 362 | plugin or startup script overrules this, so you may end up |
Bram Moolenaar | 6dfc28b | 2010-02-11 14:19:15 +0100 | [diff] [blame] | 363 | with 'nocompatible' anyway. To find out, use: > |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 364 | :verbose set compatible? |
| 365 | < Several plugins won't work with 'compatible' set. You may |
| 366 | want to set it after startup this way: > |
| 367 | vim "+set cp" filename |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 368 | < Also see |compatible-default|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 369 | |
| 370 | *-N* |
| 371 | -N Not compatible mode. Resets the 'compatible' option. You can |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 372 | use this to get 'nocompatible', when there is no .vimrc file |
| 373 | or when using "-u NONE". |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 374 | Also see |compatible-default|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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". |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 390 | NOTE: Don't combine -n with -b, making -nb, because that has a |
| 391 | different meaning: |-nb|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 408 | |
| 409 | *-O* |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 410 | -O[N] Open N windows, split vertically. Otherwise, it's like -o. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 413 | |
Bram Moolenaar | 7e8fd63 | 2006-02-18 22:14:51 +0000 | [diff] [blame] | 414 | *-p* |
| 415 | -p[N] Open N tab pages. If [N] is not given, one tab page is opened |
Bram Moolenaar | fd2ac76 | 2006-03-01 22:09:21 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | fa1d140 | 2006-03-25 21:59:56 +0000 | [diff] [blame] | 419 | empty file. Also see |tabpage|. |
Bram Moolenaar | 7e8fd63 | 2006-02-18 22:14:51 +0000 | [diff] [blame] | 420 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 425 | of terminal you are using. (See |terminal-info|.) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 426 | |
Bram Moolenaar | dae8d21 | 2016-02-27 22:40:16 +0100 | [diff] [blame] | 427 | *--not-a-term* |
Bram Moolenaar | 49c39ff | 2016-02-25 21:21:52 +0100 | [diff] [blame] | 428 | --not-a-term Tells Vim that the user knows that the input and/or output is |
| 429 | not connected to a terminal. This will avoid the warning and |
Bram Moolenaar | a2a8016 | 2017-11-21 23:09:50 +0100 | [diff] [blame] | 430 | the two second delay that would happen. |
Christian Brabandt | ce6fe84 | 2024-06-04 21:58:32 +0200 | [diff] [blame] | 431 | Also avoids the "Reading from stdin..." as well as the |
| 432 | "N files to edit" message. |
Bram Moolenaar | 49c39ff | 2016-02-25 21:21:52 +0100 | [diff] [blame] | 433 | |
Bram Moolenaar | 2d12c25 | 2022-06-13 21:42:45 +0100 | [diff] [blame] | 434 | --gui-dialog-file {name} *--gui-dialog-file* |
| 435 | When using the GUI, instead of showing a dialog, write the |
| 436 | title and message of the dialog to file {name}. The file is |
Bram Moolenaar | 8c1b8cb | 2022-06-14 17:41:28 +0100 | [diff] [blame] | 437 | created or appended to. Only useful for testing, to avoid |
Bram Moolenaar | 2d12c25 | 2022-06-13 21:42:45 +0100 | [diff] [blame] | 438 | that the test gets stuck on a dialog that can't be seen. |
| 439 | Without the GUI the argument is ignored. |
| 440 | |
Bram Moolenaar | 2cab0e1 | 2016-11-24 15:09:07 +0100 | [diff] [blame] | 441 | *--ttyfail* |
| 442 | --ttyfail When the stdin or stdout is not a terminal (tty) then exit |
| 443 | right away. |
| 444 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 445 | *-d* |
| 446 | -d Start in diff mode, like |vimdiff|. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 447 | {not available when compiled without the |+diff| feature} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 457 | editing on another device, e.g., AUX:. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 458 | *-f* |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 459 | -f GUI: Do not disconnect from the program that started Vim. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 464 | never to fork, include 'f' in 'guioptions' in your |gvimrc|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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| |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 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|. |
Bram Moolenaar | e6ae622 | 2013-05-21 21:01:10 +0200 | [diff] [blame] | 472 | |
Bram Moolenaar | 543b7ef | 2013-06-01 14:50:56 +0200 | [diff] [blame] | 473 | MS-Windows: This option is not supported. However, when |
| 474 | running Vim with an installed vim.bat or gvim.bat file it |
| 475 | works. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 476 | |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 477 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 482 | initializations are skipped; see |initialization|. |
| 483 | |
| 484 | This can be used to start Vim in a special mode, with special |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 485 | mappings and settings. A shell alias can be used to make |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 486 | this easy to use. For example, in a C shell descendant: > |
| 487 | alias vimc 'vim -u ~/.c_vimrc \!*' |
| 488 | < And in a Bash shell: > |
| 489 | alias vimc='vim -u ~/.c_vimrc' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 490 | < Also consider using autocommands; see |autocommand|. |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 491 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 492 | When {vimrc} is equal to "NONE" (all uppercase), all |
| 493 | initializations from files and environment variables are |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 494 | skipped, including reading the |gvimrc| file when the GUI |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 495 | starts. Loading plugins is also skipped. |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 496 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 497 | When {vimrc} is equal to "NORC" (all uppercase), this has the |
| 498 | same effect as "NONE", but loading plugins is not skipped. |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 499 | |
| 500 | When {vimrc} is equal to "DEFAULTS" (all uppercase), this has |
| 501 | the same effect as "NONE", but the |defaults.vim| script is |
Bram Moolenaar | d473c8c | 2018-08-11 18:00:22 +0200 | [diff] [blame] | 502 | loaded, which will also set 'nocompatible'. Also see |
| 503 | |--clean|. |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 504 | |
| 505 | Using the "-u" argument with another argument than DEFAULTS |
| 506 | has the side effect that the 'compatible' option will be on by |
| 507 | default. This can have unexpected effects. See |
| 508 | |'compatible'|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 509 | |
| 510 | *-U* *E230* |
Bram Moolenaar | 910f66f | 2006-04-05 20:41:53 +0000 | [diff] [blame] | 511 | -U {gvimrc} The file {gvimrc} is read for initializations when the GUI |
Bram Moolenaar | 13fcaaf | 2005-04-15 21:13:42 +0000 | [diff] [blame] | 512 | starts. Other GUI initializations are skipped. When {gvimrc} |
Bram Moolenaar | 8fc061c | 2004-12-29 21:03:02 +0000 | [diff] [blame] | 513 | is equal to "NONE", no file is read for GUI initializations at |
| 514 | all. |gui-init| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 515 | Exception: Reading the system-wide menu file is always done. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 516 | |
| 517 | *-i* |
| 518 | -i {viminfo} The file "viminfo" is used instead of the default viminfo |
| 519 | file. If the name "NONE" is used (all uppercase), no viminfo |
| 520 | file is read or written, even if 'viminfo' is set or when |
| 521 | ":rv" or ":wv" are used. See also |viminfo-file|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 522 | |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 523 | *--clean* |
Bram Moolenaar | a9604e6 | 2018-07-21 05:56:22 +0200 | [diff] [blame] | 524 | --clean Similar to "-u DEFAULTS -U NONE -i NONE": |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 525 | - initializations from files and environment variables is |
| 526 | skipped |
Bram Moolenaar | f0d58ef | 2018-11-16 16:13:44 +0100 | [diff] [blame] | 527 | - 'runtimepath' and 'packpath' are set to exclude home |
Bram Moolenaar | a9604e6 | 2018-07-21 05:56:22 +0200 | [diff] [blame] | 528 | directory entries (does not happen with -u DEFAULTS). |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 529 | - the |defaults.vim| script is loaded, which implies |
| 530 | 'nocompatible': use Vim defaults |
Bram Moolenaar | 62dd452 | 2018-03-14 21:20:02 +0100 | [diff] [blame] | 531 | - no |gvimrc| script is loaded |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 532 | - no viminfo file is read or written |
Bram Moolenaar | d58a3bf | 2020-09-28 21:48:16 +0200 | [diff] [blame] | 533 | Note that a following "-u" argument overrules the effect of |
| 534 | "-u DEFAULTS". |
Bram Moolenaar | d473c8c | 2018-08-11 18:00:22 +0200 | [diff] [blame] | 535 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 536 | *-x* |
| 537 | -x Use encryption to read/write files. Will prompt for a key, |
| 538 | which is then stored in the 'key' option. All writes will |
| 539 | then use this key to encrypt the text. The '-x' argument is |
| 540 | not needed when reading a file, because there is a check if |
| 541 | the file that is being read has been encrypted, and Vim asks |
| 542 | for a key automatically. |encryption| |
Christian Brabandt | 1514120 | 2024-08-03 15:40:19 +0200 | [diff] [blame] | 543 | {only available when compiled with the |+cryptv| feature} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 544 | |
| 545 | *-X* |
| 546 | -X Do not try connecting to the X server to get the current |
| 547 | window title and copy/paste using the X clipboard. This |
| 548 | avoids a long startup time when running Vim in a terminal |
| 549 | emulator and the connection to the X server is slow. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 550 | See |--startuptime| to find out if this affects you. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 551 | Only makes a difference on Unix or VMS, when compiled with the |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 552 | |+X11| feature. Otherwise, it's ignored. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 553 | To disable the connection only for specific terminals, see the |
| 554 | 'clipboard' option. |
| 555 | When the X11 Session Management Protocol (XSMP) handler has |
| 556 | been built in, the -X option also disables that connection as |
| 557 | it, too, may have undesirable delays. |
| 558 | When the connection is desired later anyway (e.g., for |
| 559 | client-server messages), call the |serverlist()| function. |
| 560 | This does not enable the XSMP handler though. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 561 | |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 562 | *-Y* |
Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 563 | -Y Do not try connecting to the Wayland compositor. Is only |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 564 | relevant for Unix when compiled with the |+wayland| feature, |
Hirohito Higashi | 73b9650 | 2025-06-28 18:18:21 +0200 | [diff] [blame] | 565 | otherwise it's ignored. Note that this will make any feature |
Foxe Chen | b90c239 | 2025-06-27 21:10:35 +0200 | [diff] [blame] | 566 | that uses Wayland unavailable, such as the clipboard. |
| 567 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 568 | *-s* |
| 569 | -s {scriptin} The script file "scriptin" is read. The characters in the |
| 570 | file are interpreted as if you had typed them. The same can |
| 571 | be done with the command ":source! {scriptin}". If the end |
| 572 | of the file is reached before the editor exits, further |
| 573 | characters are read from the keyboard. Only works when not |
| 574 | started in Ex mode, see |-s-ex|. See also |complex-repeat|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 575 | |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 576 | *-w_nr* |
| 577 | -w {number} |
| 578 | -w{number} Set the 'window' option to {number}. |
| 579 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 580 | *-w* |
| 581 | -w {scriptout} All the characters that you type are recorded in the file |
| 582 | "scriptout", until you exit Vim. This is useful if you want |
| 583 | to create a script file to be used with "vim -s" or |
| 584 | ":source!". When the "scriptout" file already exists, new |
| 585 | characters are appended. See also |complex-repeat|. |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 586 | {scriptout} cannot start with a digit. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 587 | If you want to record what is typed in a human readable form, |
| 588 | you can use |ch_logfile()|. It adds "raw key input" lines. |
Bram Moolenaar | c9a9a0a | 2022-04-12 15:09:23 +0100 | [diff] [blame] | 589 | Also see |--log|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 590 | |
| 591 | *-W* |
| 592 | -W {scriptout} Like -w, but do not append, overwrite an existing file. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 593 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 594 | --remote [+{cmd}] {file} ... |
| 595 | Open the {file} in another Vim that functions as a server. |
| 596 | Any non-file arguments must come before this. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 597 | See |--remote|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 598 | |
| 599 | --remote-silent [+{cmd}] {file} ... |
| 600 | Like --remote, but don't complain if there is no server. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 601 | See |--remote-silent|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 602 | |
| 603 | --remote-wait [+{cmd}] {file} ... |
| 604 | Like --remote, but wait for the server to finish editing the |
| 605 | file(s). |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 606 | See |--remote-wait|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 607 | |
| 608 | --remote-wait-silent [+{cmd}] {file} ... |
| 609 | Like --remote-wait, but don't complain if there is no server. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 610 | See |--remote-wait-silent|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 611 | |
| 612 | --servername {name} |
| 613 | Specify the name of the Vim server to send to or to become. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 614 | See |--servername|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 615 | |
| 616 | --remote-send {keys} |
| 617 | Send {keys} to a Vim server and exit. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 618 | See |--remote-send|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 619 | |
| 620 | --remote-expr {expr} |
| 621 | Evaluate {expr} in another Vim that functions as a server. |
| 622 | The result is printed on stdout. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 623 | See |--remote-expr|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 624 | |
| 625 | --serverlist Output a list of Vim server names and exit. See |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 626 | |--serverlist|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 627 | |
| 628 | --socketid {id} *--socketid* |
| 629 | GTK+ GUI Vim only. Make gvim try to use GtkPlug mechanism, so |
| 630 | that it runs inside another window. See |gui-gtk-socketid| |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 631 | for details. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 632 | |
Bram Moolenaar | 78e1762 | 2007-08-30 10:26:19 +0000 | [diff] [blame] | 633 | --windowid {id} *--windowid* |
| 634 | Win32 GUI Vim only. Make gvim try to use the window {id} as a |
| 635 | parent, so that it runs inside that window. See |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 636 | |gui-w32-windowid| for details. |
Bram Moolenaar | 78e1762 | 2007-08-30 10:26:19 +0000 | [diff] [blame] | 637 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 638 | --echo-wid *--echo-wid* |
| 639 | GTK+ GUI Vim only. Make gvim echo the Window ID on stdout, |
| 640 | which can be used to run gvim in a kpart widget. The format |
| 641 | of the output is: > |
| 642 | WID: 12345\n |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 643 | |
| 644 | --role {role} *--role* |
| 645 | GTK+ 2 GUI only. Set the role of the main window to {role}. |
| 646 | The window role can be used by a window manager to uniquely |
| 647 | identify a window, in order to restore window placement and |
| 648 | such. The --role argument is passed automatically when |
| 649 | restoring the session on login. See |gui-gnome-session| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 650 | |
| 651 | -P {parent-title} *-P* *MDI* *E671* *E672* |
| 652 | Win32 only: Specify the title of the parent application. When |
| 653 | possible, Vim will run in an MDI window inside the |
| 654 | application. |
| 655 | {parent-title} must appear in the window title of the parent |
| 656 | application. Make sure that it is specific enough. |
| 657 | Note that the implementation is still primitive. It won't |
| 658 | work with all applications and the menu doesn't work. |
| 659 | |
| 660 | -nb *-nb* |
| 661 | -nb={fname} |
| 662 | -nb:{hostname}:{addr}:{password} |
| 663 | Attempt connecting to Netbeans and become an editor server for |
| 664 | it. The second form specifies a file to read connection info |
| 665 | from. The third form specifies the hostname, address and |
| 666 | password for connecting to Netbeans. |netbeans-run| |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 667 | {only available when compiled with the |+netbeans_intg| |
| 668 | feature; if not then -nb will make Vim exit} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 669 | |
| 670 | If the executable is called "view", Vim will start in Readonly mode. This is |
| 671 | useful if you can make a hard or symbolic link from "view" to "vim". |
| 672 | Starting in Readonly mode can also be done with "vim -R". |
| 673 | |
| 674 | If the executable is called "ex", Vim will start in "Ex" mode. This means it |
| 675 | will accept only ":" commands. But when the "-v" argument is given, Vim will |
| 676 | start in Normal mode anyway. |
| 677 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 678 | Additional arguments are available on Unix like systems when compiled with |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 679 | X11 GUI support. See |gui-resources|. |
| 680 | |
| 681 | ============================================================================== |
| 682 | 2. Vim on the Amiga *starting-amiga* |
| 683 | |
| 684 | Starting Vim from the Workbench *workbench* |
| 685 | ------------------------------- |
| 686 | |
| 687 | Vim can be started from the Workbench by clicking on its icon twice. It will |
| 688 | then start with an empty buffer. |
| 689 | |
| 690 | Vim can be started to edit one or more files by using a "Project" icon. The |
| 691 | "Default Tool" of the icon must be the full pathname of the Vim executable. |
| 692 | The name of the ".info" file must be the same as the name of the text file. |
| 693 | By clicking on this icon twice, Vim will be started with the file name as |
| 694 | current file name, which will be read into the buffer (if it exists). You can |
| 695 | edit multiple files by pressing the shift key while clicking on icons, and |
| 696 | clicking twice on the last one. The "Default Tool" for all these icons must |
| 697 | be the same. |
| 698 | |
| 699 | It is not possible to give arguments to Vim, other than file names, from the |
| 700 | workbench. |
| 701 | |
| 702 | Vim window *amiga-window* |
| 703 | ---------- |
| 704 | |
| 705 | Vim will run in the CLI window where it was started. If Vim was started with |
| 706 | the "run" or "runback" command, or if Vim was started from the workbench, it |
| 707 | will open a window of its own. |
| 708 | |
| 709 | Technical detail: |
| 710 | To open the new window a little trick is used. As soon as Vim |
| 711 | recognizes that it does not run in a normal CLI window, it will |
| 712 | create a script file in "t:". This script file contains the same |
| 713 | command as the one Vim was started with, and an "endcli" command. |
| 714 | This script file is then executed with a "newcli" command (the "c:run" |
| 715 | and "c:newcli" commands are required for this to work). The script |
| 716 | file will hang around until reboot, or until you delete it. This |
| 717 | method is required to get the ":sh" and ":!" commands to work |
| 718 | correctly. But when Vim was started with the -f option (foreground |
| 719 | mode), this method is not used. The reason for this is that |
| 720 | when a program starts Vim with the -f option it will wait for Vim to |
| 721 | exit. With the script trick, the calling program does not know when |
| 722 | Vim exits. The -f option can be used when Vim is started by a mail |
| 723 | program which also waits for the edit session to finish. As a |
| 724 | consequence, the ":sh" and ":!" commands are not available when the |
| 725 | -f option is used. |
| 726 | |
| 727 | Vim will automatically recognize the window size and react to window |
| 728 | resizing. Under Amiga DOS 1.3, it is advised to use the fastfonts program, |
| 729 | "FF", to speed up display redrawing. |
| 730 | |
| 731 | ============================================================================== |
| 732 | 3. Running eVim *evim-keys* |
| 733 | |
| 734 | EVim runs Vim as click-and-type editor. This is very unlike the original Vi |
| 735 | idea. But it helps for people that don't use Vim often enough to learn the |
| 736 | commands. Hopefully they will find out that learning to use Normal mode |
| 737 | commands will make their editing much more effective. |
| 738 | |
| 739 | In Evim these options are changed from their default value: |
| 740 | |
| 741 | :set nocompatible Use Vim improvements |
| 742 | :set insertmode Remain in Insert mode most of the time |
| 743 | :set hidden Keep invisible buffers loaded |
| 744 | :set backup Keep backup files (not for VMS) |
| 745 | :set backspace=2 Backspace over everything |
| 746 | :set autoindent auto-indent new lines |
| 747 | :set history=50 keep 50 lines of Ex commands |
| 748 | :set ruler show the cursor position |
| 749 | :set incsearch show matches halfway typing a pattern |
| 750 | :set mouse=a use the mouse in all modes |
| 751 | :set hlsearch highlight all matches for a search pattern |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 752 | :set whichwrap+=<,>,[,] <Left> and <Right> wrap around line breaks |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 753 | :set guioptions-=a non-Unix only: don't do auto-select |
| 754 | |
| 755 | Key mappings: |
Bram Moolenaar | 3f32a5f | 2022-05-12 20:34:15 +0100 | [diff] [blame] | 756 | <CTRL-Q> quit, using `:confirm` prompt if there are changes |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 757 | <Down> moves by screen lines rather than file lines |
| 758 | <Up> idem |
| 759 | Q does "gq", formatting, instead of Ex mode |
| 760 | <BS> in Visual mode: deletes the selection |
| 761 | CTRL-X in Visual mode: Cut to clipboard |
| 762 | <S-Del> idem |
| 763 | CTRL-C in Visual mode: Copy to clipboard |
| 764 | <C-Insert> idem |
| 765 | CTRL-V Pastes from the clipboard (in any mode) |
| 766 | <S-Insert> idem |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 767 | CTRL-Z undo |
| 768 | CTRL-Y redo |
| 769 | <M-Space> system menu |
| 770 | CTRL-A select all |
| 771 | <C-Tab> next window, CTRL-W w |
| 772 | <C-F4> close window, CTRL-W c |
| 773 | |
| 774 | Additionally: |
| 775 | - ":behave mswin" is used |:behave| |
| 776 | - syntax highlighting is enabled |
| 777 | - filetype detection is enabled, filetype plugins and indenting is enabled |
| 778 | - in a text file 'textwidth' is set to 78 |
| 779 | |
| 780 | One hint: If you want to go to Normal mode to be able to type a sequence of |
| 781 | commands, use CTRL-L. |i_CTRL-L| |
| 782 | |
Bram Moolenaar | 921bde8 | 2022-05-09 19:50:35 +0100 | [diff] [blame] | 783 | There is no way to stop "easy mode", you need to exit Vim. |
| 784 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 785 | ============================================================================== |
| 786 | 4. Initialization *initialization* *startup* |
| 787 | |
| 788 | This section is about the non-GUI version of Vim. See |gui-fork| for |
| 789 | additional initialization when starting the GUI. |
| 790 | |
| 791 | At startup, Vim checks environment variables and files and sets values |
| 792 | accordingly. Vim proceeds in this order: |
| 793 | |
| 794 | 1. Set the 'shell' and 'term' option *SHELL* *COMSPEC* *TERM* |
| 795 | The environment variable SHELL, if it exists, is used to set the |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 796 | 'shell' option. On Win32, the COMSPEC variable is used |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 797 | if SHELL is not set. |
| 798 | The environment variable TERM, if it exists, is used to set the 'term' |
Bram Moolenaar | 1d2ba7f | 2006-02-14 22:29:30 +0000 | [diff] [blame] | 799 | option. However, 'term' will change later when starting the GUI (step |
| 800 | 8 below). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 801 | |
| 802 | 2. Process the arguments |
| 803 | The options and file names from the command that start Vim are |
Bram Moolenaar | 10e8ff9 | 2023-06-10 21:40:39 +0100 | [diff] [blame] | 804 | inspected. |
Bram Moolenaar | 54ee775 | 2005-05-31 22:22:17 +0000 | [diff] [blame] | 805 | The |-V| argument can be used to display or log what happens next, |
| 806 | useful for debugging the initializations. |
Bram Moolenaar | 10e8ff9 | 2023-06-10 21:40:39 +0100 | [diff] [blame] | 807 | The |--cmd| arguments are executed. |
| 808 | Buffers are created for all files (but not loaded yet). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 809 | |
| 810 | 3. Execute Ex commands, from environment variables and/or files |
| 811 | An environment variable is read as one Ex command line, where multiple |
| 812 | commands must be separated with '|' or "<NL>". |
| 813 | *vimrc* *exrc* |
| 814 | A file that contains initialization commands is called a "vimrc" file. |
| 815 | Each line in a vimrc file is executed as an Ex command line. It is |
| 816 | sometimes also referred to as "exrc" file. They are the same type of |
| 817 | file, but "exrc" is what Vi always used, "vimrc" is a Vim specific |
| 818 | name. Also see |vimrc-intro|. |
| 819 | |
Bram Moolenaar | ec7944a | 2013-06-12 21:29:15 +0200 | [diff] [blame] | 820 | Places for your personal initializations: |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 821 | Unix $HOME/.vimrc, $HOME/.vim/vimrc |
h-east | 53753f6 | 2024-05-05 18:42:31 +0200 | [diff] [blame] | 822 | or $XDG_CONFIG_HOME/vim/vimrc |
Bram Moolenaar | ec7944a | 2013-06-12 21:29:15 +0200 | [diff] [blame] | 823 | MS-Windows $HOME/_vimrc, $HOME/vimfiles/vimrc |
| 824 | or $VIM/_vimrc |
| 825 | Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc |
| 826 | or $VIM/.vimrc |
Bram Moolenaar | b3f7406 | 2020-02-26 16:16:53 +0100 | [diff] [blame] | 827 | Haiku $HOME/config/settings/vim/vimrc |
Bram Moolenaar | ec7944a | 2013-06-12 21:29:15 +0200 | [diff] [blame] | 828 | |
| 829 | The files are searched in the order specified above and only the first |
| 830 | one that is found is read. |
| 831 | |
| 832 | RECOMMENDATION: Put all your Vim configuration stuff in the |
| 833 | $HOME/.vim/ directory ($HOME/vimfiles/ for MS-Windows). That makes it |
| 834 | easy to copy it to another system. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 835 | |
| 836 | If Vim was started with "-u filename", the file "filename" is used. |
Christian Brabandt | 3e2affc | 2025-02-28 17:34:46 +0100 | [diff] [blame] | 837 | All following initializations until 4. are skipped. `$MYVIMRC` and |
| 838 | `$MYVIMDIR` are not set (but `$MYVIMDIR` will be set, if 'rtp' is |
| 839 | updated). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 840 | "vim -u NORC" can be used to skip these initializations without |
| 841 | reading a file. "vim -u NONE" also skips loading plugins. |-u| |
| 842 | |
| 843 | If Vim was started in Ex mode with the "-s" argument, all following |
| 844 | initializations until 4. are skipped. Only the "-u" option is |
| 845 | interpreted. |
| 846 | *evim.vim* |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 847 | a. If Vim was started as |evim| or |eview| or with the |-y| argument, the |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 848 | script $VIMRUNTIME/evim.vim will be loaded. |
| 849 | *system-vimrc* |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 850 | b. For Unix, MS-Windows, VMS, Macintosh and Amiga the system vimrc file |
| 851 | is read for initializations. The path of this file is shown with the |
| 852 | ":version" command. Mostly it's "$VIM/vimrc". Note that this file is |
| 853 | ALWAYS read in 'compatible' mode, since the automatic resetting of |
| 854 | 'compatible' is only done later. Add a ":set nocp" command if you |
| 855 | like. For the Macintosh the $VIMRUNTIME/macmap.vim is read. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 856 | |
h-east | 738ebfe | 2024-10-05 16:56:47 +0200 | [diff] [blame] | 857 | *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc* |
| 858 | *$MYVIMRC* *$MYVIMDIR* |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 859 | c. Five places are searched for initializations. The first that exists |
Christian Brabandt | 3e2affc | 2025-02-28 17:34:46 +0100 | [diff] [blame] | 860 | is used, the others are ignored. The `$MYVIMRC` environment variable is |
| 861 | set to the file that was first found, unless `$MYVIMRC` was already set |
| 862 | when using VIMINIT. The `$MYVIMDIR` environment variable is |
Christian Brabandt | 4e7249a | 2024-09-05 17:46:19 +0200 | [diff] [blame] | 863 | set to the personal 'rtp' directory, however it is not verified |
| 864 | that the directory actually exists. |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 865 | I The environment variable VIMINIT (see also |compatible-default|) (*) |
| 866 | The value of $VIMINIT is used as an Ex command line. |
| 867 | II The user vimrc file(s): |
Christian Brabandt | 9502921 | 2024-07-04 17:31:06 +0200 | [diff] [blame] | 868 | "$HOME/.vimrc" (for Unix) (*) |
| 869 | "$HOME/.vim/vimrc" (for Unix) (*) |
| 870 | "$XDG_CONFIG_HOME/vim/vimrc" (for Unix) (*) |
| 871 | "s:.vimrc" (for Amiga) (*) |
| 872 | "home:.vimrc" (for Amiga) (*) |
| 873 | "home:vimfiles:vimrc" (for Amiga) (*) |
| 874 | "$VIM/.vimrc" (for Amiga) (*) |
| 875 | "$HOME/_vimrc" (for Win32) (*) |
| 876 | "$HOME/vimfiles/vimrc" (for Win32) (*) |
| 877 | "$VIM/_vimrc" (for Win32) (*) |
Bram Moolenaar | b3f7406 | 2020-02-26 16:16:53 +0100 | [diff] [blame] | 878 | "$HOME/config/settings/vim/vimrc" (for Haiku) (*) |
| 879 | |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 880 | Note: For Unix and Amiga, when ".vimrc" does not exist, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 881 | "_vimrc" is also tried, in case an MS-DOS compatible file |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 882 | system is used. For MS-Windows ".vimrc" is checked after |
| 883 | "_vimrc", in case long file names are used. |
| 884 | Note: For Win32, "$HOME" is checked first. If no "_vimrc" or |
| 885 | ".vimrc" is found there, "$VIM" is tried. See |$VIM| for when |
| 886 | $VIM is not set. |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 887 | III The environment variable EXINIT. |
| 888 | The value of $EXINIT is used as an Ex command line. |
| 889 | IV The user exrc file(s). Same as for the user vimrc file, but with |
| 890 | "vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" is |
| 891 | used, depending on the system. And without the (*)! |
| 892 | V The default vimrc file, $VIMRUNTIME/defaults.vim. This sets up |
| 893 | options values and has "syntax on" and "filetype on" commands, |
| 894 | which is what most new users will want. See |defaults.vim|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 895 | |
Bram Moolenaar | 36f44c2 | 2016-08-28 18:17:20 +0200 | [diff] [blame] | 896 | d. If the 'exrc' option is on (which is NOT the default), the current |
Bram Moolenaar | 5c5474b | 2005-04-19 21:40:26 +0000 | [diff] [blame] | 897 | directory is searched for three files. The first that exists is used, |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 898 | the others are ignored. |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 899 | - The file ".vimrc" (for Unix, Amiga) (*) |
| 900 | "_vimrc" (for Win32) (*) |
| 901 | - The file "_vimrc" (for Unix, Amiga) (*) |
| 902 | ".vimrc" (for Win32) (*) |
| 903 | - The file ".exrc" (for Unix, Amiga) |
| 904 | "_exrc" (for Win32) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 905 | |
| 906 | (*) Using this file or environment variable will cause 'compatible' to be |
| 907 | off by default. See |compatible-default|. |
| 908 | |
Bram Moolenaar | b0d45e7 | 2017-11-05 18:19:24 +0100 | [diff] [blame] | 909 | Note: When using the |mzscheme| interface, it is initialized after loading |
Bram Moolenaar | 01164a6 | 2017-11-02 22:58:42 +0100 | [diff] [blame] | 910 | the vimrc file. Changing 'mzschemedll' later has no effect. |
| 911 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 912 | 4. Load the plugin scripts. *load-plugins* |
| 913 | This does the same as the command: > |
Bram Moolenaar | 1c7715d | 2005-10-03 22:02:18 +0000 | [diff] [blame] | 914 | :runtime! plugin/**/*.vim |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 915 | < The result is that all directories in the 'runtimepath' option will be |
| 916 | searched for the "plugin" sub-directory and all files ending in ".vim" |
Bram Moolenaar | 1c7715d | 2005-10-03 22:02:18 +0000 | [diff] [blame] | 917 | will be sourced (in alphabetical order per directory), also in |
| 918 | subdirectories. |
Bram Moolenaar | 66459b7 | 2016-08-06 19:01:55 +0200 | [diff] [blame] | 919 | However, directories in 'runtimepath' ending in "after" are skipped |
| 920 | here and only loaded after packages, see below. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 921 | Loading plugins won't be done when: |
| 922 | - The 'loadplugins' option was reset in a vimrc file. |
| 923 | - The |--noplugin| command line argument is used. |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 924 | - The |--clean| command line argument is used. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 925 | - The "-u NONE" command line argument is used |-u|. |
| 926 | - When Vim was compiled without the |+eval| feature. |
Bram Moolenaar | 8ada17c | 2006-01-19 22:16:24 +0000 | [diff] [blame] | 927 | Note that using "-c 'set noloadplugins'" doesn't work, because the |
| 928 | commands from the command line have not been executed yet. You can |
Bram Moolenaar | 66459b7 | 2016-08-06 19:01:55 +0200 | [diff] [blame] | 929 | use "--cmd 'set noloadplugins'" or "--cmd 'set loadplugins'" |--cmd|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 930 | |
Bram Moolenaar | 03413f4 | 2016-04-12 21:07:15 +0200 | [diff] [blame] | 931 | Packages are loaded. These are plugins, as above, but found in the |
| 932 | "start" directory of each entry in 'packpath'. Every plugin directory |
| 933 | found is added in 'runtimepath' and then the plugins are sourced. See |
| 934 | |packages|. |
Bram Moolenaar | f6fee0e | 2016-02-21 23:02:49 +0100 | [diff] [blame] | 935 | |
Bram Moolenaar | 66459b7 | 2016-08-06 19:01:55 +0200 | [diff] [blame] | 936 | The plugins scripts are loaded, as above, but now only the directories |
| 937 | ending in "after" are used. Note that 'runtimepath' will have changed |
| 938 | if packages have been found, but that should not add a directory |
| 939 | ending in "after". |
| 940 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 941 | 5. Set 'shellpipe' and 'shellredir' |
| 942 | The 'shellpipe' and 'shellredir' options are set according to the |
| 943 | value of the 'shell' option, unless they have been set before. |
| 944 | This means that Vim will figure out the values of 'shellpipe' and |
| 945 | 'shellredir' for you, unless you have set them yourself. |
| 946 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 947 | 6. Set 'updatecount' to zero, if "-n" command argument used. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 948 | |
| 949 | 7. Set binary options |
| 950 | If the "-b" flag was given to Vim, the options for binary editing will |
| 951 | be set now. See |-b|. |
| 952 | |
| 953 | 8. Perform GUI initializations |
| 954 | Only when starting "gvim", the GUI initializations will be done. See |
| 955 | |gui-init|. |
| 956 | |
| 957 | 9. Read the viminfo file |
| 958 | If the 'viminfo' option is not empty, the viminfo file is read. See |
| 959 | |viminfo-file|. |
| 960 | |
| 961 | 10. Read the quickfix file |
| 962 | If the "-q" flag was given to Vim, the quickfix file is read. If this |
| 963 | fails, Vim exits. |
| 964 | |
| 965 | 11. Open all windows |
| 966 | When the |-o| flag was given, windows will be opened (but not |
| 967 | displayed yet). |
Bram Moolenaar | 7e8fd63 | 2006-02-18 22:14:51 +0000 | [diff] [blame] | 968 | When the |-p| flag was given, tab pages will be created (but not |
| 969 | displayed yet). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 970 | When switching screens, it happens now. Redrawing starts. |
| 971 | If the "-q" flag was given to Vim, the first error is jumped to. |
Bram Moolenaar | 469bdbd | 2019-12-11 23:05:48 +0100 | [diff] [blame] | 972 | Buffers for all windows will be loaded, without triggering |BufAdd| |
| 973 | autocommands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 974 | |
| 975 | 12. Execute startup commands |
| 976 | If a "-t" flag was given to Vim, the tag is jumped to. |
| 977 | The commands given with the |-c| and |+cmd| arguments are executed. |
| 978 | If the 'insertmode' option is set, Insert mode is entered. |
Bram Moolenaar | 4f3f668 | 2016-03-26 23:01:59 +0100 | [diff] [blame] | 979 | The starting flag is reset, has("vim_starting") will now return zero. |
| 980 | The |v:vim_did_enter| variable is set to 1. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 981 | The |VimEnter| autocommands are executed. |
| 982 | |
Christian Brabandt | 3e2affc | 2025-02-28 17:34:46 +0100 | [diff] [blame] | 983 | The `$MYVIMRC` or `$MYGVIMRC` environment variable will be set to the first found |
| 984 | vimrc and/or gvimrc file while `$MYVIMDIR` is set to the users personal runtime |
| 985 | directory 'rtp' (typically the first entry in 'runtimepath'). If 'rtp' |
| 986 | changes, `$MYVIMDIR` will be updated. |
h-east | af0fed5 | 2024-12-19 20:51:36 +0100 | [diff] [blame] | 987 | Note: These environment variables resolve symbolic links, but 'rtp' does not. |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 988 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 989 | |
| 990 | Some hints on using initializations ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 991 | |
| 992 | Standard setup: |
| 993 | Create a vimrc file to set the default settings and mappings for all your edit |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 994 | sessions. Put it in a place so that it will be found by 3b.: |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 995 | ~/.vimrc (Unix) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 996 | s:.vimrc (Amiga) |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 997 | $VIM\_vimrc (Win32) |
Bram Moolenaar | b3f7406 | 2020-02-26 16:16:53 +0100 | [diff] [blame] | 998 | ~/config/settings/vim/vimrc (Haiku) |
| 999 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1000 | Note that creating a vimrc file will cause the 'compatible' option to be off |
| 1001 | by default. See |compatible-default|. |
| 1002 | |
| 1003 | Local setup: |
| 1004 | Put all commands that you need for editing a specific directory only into a |
| 1005 | vimrc file and place it in that directory under the name ".vimrc" ("_vimrc" |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 1006 | for Win32). NOTE: To make Vim look for these special files you have to turn |
| 1007 | on the option 'exrc'. See |trojan-horse| too. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1008 | |
| 1009 | System setup: |
| 1010 | This only applies if you are managing a Unix system with several users and |
| 1011 | want to set the defaults for all users. Create a vimrc file with commands |
| 1012 | for default settings and mappings and put it in the place that is given with |
| 1013 | the ":version" command. |
| 1014 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1015 | |
| 1016 | Saving the current state of Vim to a file ~ |
| 1017 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1018 | Whenever you have changed values of options or when you have created a |
| 1019 | mapping, then you may want to save them in a vimrc file for later use. See |
| 1020 | |save-settings| about saving the current state of settings to a file. |
| 1021 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1022 | |
| 1023 | Avoiding setup problems for Vi users ~ |
| 1024 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1025 | Vi uses the variable EXINIT and the file "~/.exrc". So if you do not want to |
| 1026 | interfere with Vi, then use the variable VIMINIT and the file "vimrc" instead. |
| 1027 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1028 | |
| 1029 | Amiga environment variables ~ |
| 1030 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1031 | On the Amiga, two types of environment variables exist. The ones set with the |
| 1032 | DOS 1.3 (or later) setenv command are recognized. See the AmigaDos 1.3 |
| 1033 | manual. The environment variables set with the old Manx Set command (before |
| 1034 | version 5.0) are not recognized. |
| 1035 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1036 | |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 1037 | MS-Windows line separators ~ |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1038 | |
Bram Moolenaar | 4072ba5 | 2020-12-23 13:56:35 +0100 | [diff] [blame] | 1039 | On MS-Windows, Vim assumes that all the vimrc files have <CR><NL> pairs as |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 1040 | line separators. This will give problems if you have a file with only <NL>s |
| 1041 | and have a line like ":map xx yy^M". The trailing ^M will be ignored. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1042 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1043 | |
| 1044 | Vi compatible default value ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1045 | *compatible-default* |
| 1046 | When Vim starts, the 'compatible' option is on. This will be used when Vim |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1047 | starts its initializations. But as soon as: |
| 1048 | - a user vimrc file is found, or |
Bram Moolenaar | 22f1d0e | 2018-02-27 14:53:30 +0100 | [diff] [blame] | 1049 | - a vimrc file in the current directory is found, or |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1050 | - the "VIMINIT" environment variable is set, or |
| 1051 | - the "-N" command line argument is given, or |
Bram Moolenaar | c4da113 | 2017-07-15 19:39:43 +0200 | [diff] [blame] | 1052 | - the "--clean" command line argument is given, or |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1053 | - the |defaults.vim| script is loaded, or |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 1054 | - a gvimrc file was found, |
| 1055 | then the option will be set to 'nocompatible'. |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1056 | |
| 1057 | Note that this does NOT happen when a system-wide vimrc file was found. |
| 1058 | |
| 1059 | This has the side effect of setting or resetting other options (see |
| 1060 | 'compatible'). But only the options that have not been set or reset will be |
| 1061 | changed. This has the same effect like the value of 'compatible' had this |
| 1062 | value when starting Vim. |
| 1063 | |
Bram Moolenaar | bc8801c | 2016-08-02 21:04:33 +0200 | [diff] [blame] | 1064 | 'compatible' is NOT reset, and |defaults.vim| is not loaded: |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1065 | - when Vim was started with the |-u| command line argument, especially with |
| 1066 | "-u NONE", or |
| 1067 | - when started with the |-C| command line argument, or |
| 1068 | - when the name of the executable ends in "ex". (This has been done to make |
| 1069 | Vim behave like "ex", when it is started as "ex") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1070 | |
| 1071 | But there is a side effect of setting or resetting 'compatible' at the moment |
| 1072 | a .vimrc file is found: Mappings are interpreted the moment they are |
| 1073 | encountered. This makes a difference when using things like "<CR>". If the |
| 1074 | mappings depend on a certain value of 'compatible', set or reset it before |
| 1075 | giving the mapping. |
| 1076 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1077 | |
| 1078 | Defaults without a .vimrc file ~ |
Christian Brabandt | 1d3a14e | 2021-05-29 19:53:50 +0200 | [diff] [blame] | 1079 | *defaults.vim* *E1187* |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1080 | If Vim is started normally and no user vimrc file is found, the |
Bram Moolenaar | 40962ec | 2018-01-28 22:47:25 +0100 | [diff] [blame] | 1081 | $VIMRUNTIME/defaults.vim script is loaded. This will set 'compatible' off, |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1082 | switch on syntax highlighting and a few more things. See the script for |
| 1083 | details. NOTE: this is done since Vim 8.0, not in Vim 7.4. (it was added in |
| 1084 | patch 7.4.2111 to be exact). |
| 1085 | |
| 1086 | This should work well for new Vim users. If you create your own .vimrc, it is |
Bram Moolenaar | 01164a6 | 2017-11-02 22:58:42 +0100 | [diff] [blame] | 1087 | recommended to add these lines somewhere near the top: > |
Bram Moolenaar | 7e1479b | 2016-09-11 15:07:27 +0200 | [diff] [blame] | 1088 | unlet! skip_defaults_vim |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1089 | source $VIMRUNTIME/defaults.vim |
Max Coplan | fdd1819 | 2024-09-15 19:40:52 +0200 | [diff] [blame] | 1090 | Then Vim works like before you had a .vimrc. |
| 1091 | Copying $VIMRUNTIME/vimrc_example.vim to your .vimrc is another way to do |
| 1092 | this. Alternatively, you can copy defaults.vim to your .vimrc and modify it |
| 1093 | (but then you won't get updates when it changes). |
Bram Moolenaar | 8c08b5b | 2016-07-28 22:24:15 +0200 | [diff] [blame] | 1094 | |
| 1095 | If you don't like some of the defaults, you can still source defaults.vim and |
| 1096 | revert individual settings. See the defaults.vim file for hints on how to |
| 1097 | revert each item. |
Bram Moolenaar | 7e1479b | 2016-09-11 15:07:27 +0200 | [diff] [blame] | 1098 | *skip_defaults_vim* |
Bram Moolenaar | 64d8e25 | 2016-09-06 22:12:34 +0200 | [diff] [blame] | 1099 | If you use a system-wide vimrc and don't want defaults.vim to change settings, |
Bram Moolenaar | 7e1479b | 2016-09-11 15:07:27 +0200 | [diff] [blame] | 1100 | set the "skip_defaults_vim" variable. If this was set and you want to load |
| 1101 | defaults.vim from your .vimrc, first unlet skip_defaults_vim, as in the |
| 1102 | example above. |
Bram Moolenaar | 64d8e25 | 2016-09-06 22:12:34 +0200 | [diff] [blame] | 1103 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1104 | |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1105 | *xdg-base-dir* *$XDG_CONFIG_HOME* |
| 1106 | XDG Base Directory Specification ~ |
| 1107 | |
| 1108 | The XDG Base Directory Specification aims to define a standard location for |
| 1109 | configuration files used by applications. This is mainly done to prevent |
Diego Viola | a13290f | 2024-04-19 15:51:44 +0200 | [diff] [blame] | 1110 | the legacy behavior of dumping everything into the user's home directory. |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1111 | The specification can be found online at |
| 1112 | https://specifications.freedesktop.org/basedir-spec/latest/ |
| 1113 | |
| 1114 | The location of this standard configuration directory is configurable by the |
Diego Viola | 1586736 | 2024-04-21 14:39:49 +0200 | [diff] [blame] | 1115 | user, using an environment variable but should also give fallback in case those |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1116 | variables weren't set. |
| 1117 | |
Diego Viola | 014b775 | 2024-04-15 18:51:29 +0200 | [diff] [blame] | 1118 | This is not an exhaustive list of those directories: |
Diego Viola | a13290f | 2024-04-19 15:51:44 +0200 | [diff] [blame] | 1119 | Environment var Default location Description ~ |
Diego Viola | 014b775 | 2024-04-15 18:51:29 +0200 | [diff] [blame] | 1120 | `$XDG_CACHE_HOME` $HOME/.cache Ephemeral data files |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1121 | `$XDG_CONFIG_HOME` $HOME/.config Configuration files |
| 1122 | `$XDG_DATA_HOME` $HOME/.local/share Persistent data files |
| 1123 | `$XDG_STATE_HOME` $HOME/.local/state State data files |
| 1124 | |
Diego Viola | a13290f | 2024-04-19 15:51:44 +0200 | [diff] [blame] | 1125 | Vim will only use the `$XDG_CONFIG_HOME` directory, the others are not |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1126 | (yet) used for its various configuration and state files. |
| 1127 | |
| 1128 | *xdg-vimrc* |
| 1129 | Vim, on Unix systems, will look at `$XDG_CONFIG_HOME/vim/vimrc` for its |
| 1130 | configuration (see |vimrc|) but it will source it only if no other |
| 1131 | initialization file is found in `$HOME` or `$HOME/.vim` (thus making this |
| 1132 | feature backward compatible). However, if you want to migrate to use |
| 1133 | `$XDG_CONFIG_HOME/vim/` directory, you will have to move away your `~/.vimrc` |
| 1134 | and `~/.vim/vimrc` file. |
| 1135 | |
| 1136 | *xdg-runtime* |
Christian Brabandt | c3e6e39 | 2024-05-04 09:48:15 +0200 | [diff] [blame] | 1137 | When the |xdg-vimrc| is used the 'runtimepath' and 'packpath' options will be |
| 1138 | modified accordingly to respect the |xdg-base-dir|: > |
Luca Saccarola | c9df1fb | 2024-04-14 22:53:22 +0200 | [diff] [blame] | 1139 | |
| 1140 | "$XDG_CONFIG_HOME/vim,$VIMRUNTIME,/after,$XDG_CONFIG_HOME/vim/after" |
| 1141 | < |
| 1142 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1143 | Avoiding trojan horses ~ |
| 1144 | *trojan-horse* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1145 | While reading the "vimrc" or the "exrc" file in the current directory, some |
| 1146 | commands can be disabled for security reasons by setting the 'secure' option. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1147 | This is always done when executing the command from a tags file. Otherwise, |
| 1148 | it would be possible that you accidentally use a vimrc or tags file that |
| 1149 | somebody else created and contains nasty commands. The disabled commands are |
| 1150 | the ones that start a shell, the ones that write to a file, and ":autocmd". |
| 1151 | The ":map" commands are echoed, so you can see which keys are being mapped. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1152 | If you want Vim to execute all commands in a local vimrc file, you |
| 1153 | can reset the 'secure' option in the EXINIT or VIMINIT environment variable or |
| 1154 | in the global "exrc" or "vimrc" file. This is not possible in "vimrc" or |
| 1155 | "exrc" in the current directory, for obvious reasons. |
| 1156 | On Unix systems, this only happens if you are not the owner of the |
| 1157 | vimrc file. Warning: If you unpack an archive that contains a vimrc or exrc |
| 1158 | file, it will be owned by you. You won't have the security protection. Check |
| 1159 | the vimrc file before you start Vim in that directory, or reset the 'exrc' |
| 1160 | option. Some Unix systems allow a user to do "chown" on a file. This makes |
| 1161 | it possible for another user to create a nasty vimrc and make you the owner. |
| 1162 | Be careful! |
| 1163 | When using tag search commands, executing the search command (the last |
| 1164 | part of the line in the tags file) is always done in secure mode. This works |
| 1165 | just like executing a command from a vimrc/exrc in the current directory. |
| 1166 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1167 | |
| 1168 | If Vim startup is slow ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1169 | *slow-start* |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 1170 | If Vim takes a long time to start up, use the |--startuptime| argument to find |
| 1171 | out what happens. There are a few common causes: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1172 | - If the Unix version was compiled with the GUI and/or X11 (check the output |
| 1173 | of ":version" for "+GUI" and "+X11"), it may need to load shared libraries |
| 1174 | and connect to the X11 server. Try compiling a version with GUI and X11 |
| 1175 | disabled. This also should make the executable smaller. |
| 1176 | Use the |-X| command line argument to avoid connecting to the X server when |
| 1177 | running in a terminal. |
| 1178 | - If you have "viminfo" enabled, the loading of the viminfo file may take a |
| 1179 | while. You can find out if this is the problem by disabling viminfo for a |
| 1180 | moment (use the Vim argument "-i NONE", |-i|). Try reducing the number of |
| 1181 | lines stored in a register with ":set viminfo='20,<50,s10". |viminfo-file|. |
| 1182 | |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1183 | |
| 1184 | Intro message ~ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1185 | *:intro* |
| 1186 | When Vim starts without a file name, an introductory message is displayed (for |
| 1187 | those who don't know what Vim is). It is removed as soon as the display is |
| 1188 | redrawn in any way. To see the message again, use the ":intro" command (if |
| 1189 | there is not enough room, you will see only part of it). |
| 1190 | To avoid the intro message on startup, add the 'I' flag to 'shortmess'. |
| 1191 | |
| 1192 | *info-message* |
| 1193 | The |--help| and |--version| arguments cause Vim to print a message and then |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 1194 | exit. Normally the message is sent to stdout, thus can be redirected to a |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1195 | file with: > |
| 1196 | |
| 1197 | vim --help >file |
| 1198 | |
| 1199 | From inside Vim: > |
| 1200 | |
| 1201 | :read !vim --help |
| 1202 | |
| 1203 | When using gvim, it detects that it might have been started from the desktop, |
| 1204 | without a terminal to show messages on. This is detected when both stdout and |
| 1205 | stderr are not a tty. This breaks the ":read" command, as used in the example |
| 1206 | above. To make it work again, set 'shellredir' to ">" instead of the default |
| 1207 | ">&": > |
| 1208 | |
| 1209 | :set shellredir=> |
| 1210 | :read !gvim --help |
| 1211 | |
| 1212 | This still won't work for systems where gvim does not use stdout at all |
| 1213 | though. |
| 1214 | |
| 1215 | ============================================================================== |
| 1216 | 5. $VIM and $VIMRUNTIME |
| 1217 | *$VIM* |
| 1218 | The environment variable "$VIM" is used to locate various user files for Vim, |
| 1219 | such as the user startup script ".vimrc". This depends on the system, see |
| 1220 | |startup|. |
| 1221 | |
| 1222 | To avoid the need for every user to set the $VIM environment variable, Vim |
| 1223 | will try to get the value for $VIM in this order: |
| 1224 | 1. The value defined by the $VIM environment variable. You can use this to |
| 1225 | make Vim look in a specific directory for its support files. Example: > |
| 1226 | setenv VIM /home/paul/vim |
| 1227 | 2. The path from 'helpfile' is used, unless it contains some environment |
| 1228 | variable too (the default is "$VIMRUNTIME/doc/help.txt": chicken-egg |
| 1229 | problem). The file name ("help.txt" or any other) is removed. Then |
| 1230 | trailing directory names are removed, in this order: "doc", "runtime" and |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1231 | "vim{version}" (e.g., "vim82"). |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 1232 | 3. For Win32 Vim tries to use the directory name of the executable. If it |
| 1233 | ends in "/src", this is removed. This is useful if you unpacked the .zip |
| 1234 | file in some directory, and adjusted the search path to find the vim |
| 1235 | executable. Trailing directory names are removed, in this order: "runtime" |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1236 | and "vim{version}" (e.g., "vim82"). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1237 | 4. For Unix the compile-time defined installation directory is used (see the |
| 1238 | output of ":version"). |
| 1239 | |
| 1240 | Once Vim has done this once, it will set the $VIM environment variable. To |
| 1241 | change it later, use a ":let" command like this: > |
| 1242 | :let $VIM = "/home/paul/vim/" |
| 1243 | < |
| 1244 | *$VIMRUNTIME* |
| 1245 | The environment variable "$VIMRUNTIME" is used to locate various support |
| 1246 | files, such as the on-line documentation and files used for syntax |
| 1247 | highlighting. For example, the main help file is normally |
| 1248 | "$VIMRUNTIME/doc/help.txt". |
| 1249 | You don't normally set $VIMRUNTIME yourself, but let Vim figure it out. This |
| 1250 | is the order used to find the value of $VIMRUNTIME: |
| 1251 | 1. If the environment variable $VIMRUNTIME is set, it is used. You can use |
| 1252 | this when the runtime files are in an unusual location. |
| 1253 | 2. If "$VIM/vim{version}" exists, it is used. {version} is the version |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1254 | number of Vim, without any '-' or '.'. For example: "$VIM/vim82". This is |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1255 | the normal value for $VIMRUNTIME. |
| 1256 | 3. If "$VIM/runtime" exists, it is used. |
| 1257 | 4. The value of $VIM is used. This is for backwards compatibility with older |
| 1258 | versions. |
| 1259 | 5. When the 'helpfile' option is set and doesn't contain a '$', its value is |
| 1260 | used, with "doc/help.txt" removed from the end. |
| 1261 | |
| 1262 | For Unix, when there is a compiled-in default for $VIMRUNTIME (check the |
| 1263 | output of ":version"), steps 2, 3 and 4 are skipped, and the compiled-in |
| 1264 | default is used after step 5. This means that the compiled-in default |
| 1265 | overrules the value of $VIM. This is useful if $VIM is "/etc" and the runtime |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1266 | files are in "/usr/share/vim/vim82". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1267 | |
| 1268 | Once Vim has done this once, it will set the $VIMRUNTIME environment variable. |
| 1269 | To change it later, use a ":let" command like this: > |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1270 | :let $VIMRUNTIME = "/home/piet/vim/vim82" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1271 | |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 1272 | In case you need the value of $VIMRUNTIME in a shell (e.g., for a script that |
| 1273 | greps in the help files) you might be able to use this: > |
| 1274 | |
Shane Harper | b3c2322 | 2024-07-08 20:59:33 +0200 | [diff] [blame] | 1275 | VIMRUNTIME=$(vim -es '+put=$VIMRUNTIME|print|quit!') |
Bram Moolenaar | ed20346 | 2004-06-16 11:19:22 +0000 | [diff] [blame] | 1276 | |
Bram Moolenaar | 5477506 | 2019-07-31 21:07:14 +0200 | [diff] [blame] | 1277 | Don't set $VIMRUNTIME to an empty value, some things may stop working. |
| 1278 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1279 | ============================================================================== |
| 1280 | 6. Suspending *suspend* |
| 1281 | |
| 1282 | *iconize* *iconise* *CTRL-Z* *v_CTRL-Z* |
| 1283 | CTRL-Z Suspend Vim, like ":stop". |
| 1284 | Works in Normal and in Visual mode. In Insert and |
| 1285 | Command-line mode, the CTRL-Z is inserted as a normal |
| 1286 | character. In Visual mode Vim goes back to Normal |
| 1287 | mode. |
Bram Moolenaar | 0d66022 | 2005-01-07 21:51:51 +0000 | [diff] [blame] | 1288 | Note: if CTRL-Z undoes a change see |mswin.vim|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1289 | |
| 1290 | |
| 1291 | :sus[pend][!] or *:sus* *:suspend* *:st* *:stop* |
| 1292 | :st[op][!] Suspend Vim. |
| 1293 | If the '!' is not given and 'autowrite' is set, every |
| 1294 | buffer with changes and a file name is written out. |
| 1295 | If the '!' is given or 'autowrite' is not set, changed |
| 1296 | buffers are not written, don't forget to bring Vim |
| 1297 | back to the foreground later! |
| 1298 | |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 1299 | In the GUI, suspending is implemented as iconising gvim. In MS-Windows, gvim |
| 1300 | is minimized. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1301 | |
| 1302 | On many Unix systems, it is possible to suspend Vim with CTRL-Z. This is only |
| 1303 | possible in Normal and Visual mode (see next chapter, |vim-modes|). Vim will |
| 1304 | continue if you make it the foreground job again. On other systems, CTRL-Z |
| 1305 | will start a new shell. This is the same as the ":sh" command. Vim will |
| 1306 | continue if you exit from the shell. |
| 1307 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1308 | In the X Window System environment, the selection is disowned when Vim |
| 1309 | suspends. This means you can't paste it in another application (since Vim is |
| 1310 | going to sleep, an attempt to get the selection would make the program hang). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1311 | |
| 1312 | ============================================================================== |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 1313 | 7. Exiting *exiting* |
| 1314 | |
| 1315 | There are several ways to exit Vim: |
| 1316 | - Close the last window with `:quit`. Only when there are no changes. |
| 1317 | - Close the last window with `:quit!`. Also when there are changes. |
| 1318 | - Close all windows with `:qall`. Only when there are no changes. |
| 1319 | - Close all windows with `:qall!`. Also when there are changes. |
| 1320 | - Use `:cquit`. Also when there are changes. |
| 1321 | |
| 1322 | When using `:cquit` or when there was an error message Vim exits with exit |
Bram Moolenaar | 369b6f5 | 2017-01-17 12:22:32 +0100 | [diff] [blame] | 1323 | code 1. Errors can be avoided by using `:silent!` or with `:catch`. |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 1324 | |
| 1325 | ============================================================================== |
| 1326 | 8. Saving settings *save-settings* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1327 | |
| 1328 | Mostly you will edit your vimrc files manually. This gives you the greatest |
| 1329 | flexibility. There are a few commands to generate a vimrc file automatically. |
| 1330 | You can use these files as they are, or copy/paste lines to include in another |
| 1331 | vimrc file. |
| 1332 | |
| 1333 | *:mk* *:mkexrc* |
| 1334 | :mk[exrc] [file] Write current key mappings and changed options to |
| 1335 | [file] (default ".exrc" in the current directory), |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1336 | unless it already exists. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1337 | |
| 1338 | :mk[exrc]! [file] Always write current key mappings and changed |
| 1339 | options to [file] (default ".exrc" in the current |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1340 | directory). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1341 | |
Bram Moolenaar | 61da1bf | 2019-06-06 12:14:49 +0200 | [diff] [blame] | 1342 | *:mkv* *:mkvi* *:mkvimrc* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1343 | :mkv[imrc][!] [file] Like ":mkexrc", but the default is ".vimrc" in the |
| 1344 | current directory. The ":version" command is also |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1345 | written to the file. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1346 | |
| 1347 | These commands will write ":map" and ":set" commands to a file, in such a way |
| 1348 | that when these commands are executed, the current key mappings and options |
| 1349 | will be set to the same values. The options 'columns', 'endofline', |
| 1350 | 'fileformat', 'key', 'lines', 'modified', 'scroll', 'term', 'textmode', |
| 1351 | 'ttyfast' and 'ttymouse' are not included, because these are terminal or file |
| 1352 | dependent. Note that the options 'binary', 'paste' and 'readonly' are |
| 1353 | included, this might not always be what you want. |
| 1354 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1355 | When special keys are used in mappings, the 'cpoptions' option will be |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1356 | temporarily set to its Vim default, to avoid the mappings to be |
| 1357 | misinterpreted. This makes the file incompatible with Vi, but makes sure it |
| 1358 | can be used with different terminals. |
| 1359 | |
| 1360 | Only global mappings are stored, not mappings local to a buffer. |
| 1361 | |
| 1362 | A common method is to use a default ".vimrc" file, make some modifications |
| 1363 | with ":map" and ":set" commands and write the modified file. First read the |
| 1364 | default ".vimrc" in with a command like ":source ~piet/.vimrc.Cprogs", change |
| 1365 | the settings and then save them in the current directory with ":mkvimrc!". If |
| 1366 | you want to make this file your default .vimrc, move it to your home directory |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 1367 | (on Unix), s: (Amiga) or $VIM directory (MS-Windows). You could also use |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1368 | autocommands |autocommand| and/or modelines |modeline|. |
| 1369 | |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 1370 | *vimrc-option-example* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1371 | If you only want to add a single option setting to your vimrc, you can use |
| 1372 | these steps: |
| 1373 | 1. Edit your vimrc file with Vim. |
| 1374 | 2. Play with the option until it's right. E.g., try out different values for |
| 1375 | 'guifont'. |
| 1376 | 3. Append a line to set the value of the option, using the expression register |
| 1377 | '=' to enter the value. E.g., for the 'guifont' option: > |
| 1378 | o:set guifont=<C-R>=&guifont<CR><Esc> |
| 1379 | < [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key] |
Bram Moolenaar | 362e1a3 | 2006-03-06 23:29:24 +0000 | [diff] [blame] | 1380 | You need to escape special characters, esp. spaces. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1381 | |
| 1382 | Note that when you create a .vimrc file, this can influence the 'compatible' |
| 1383 | option, which has several side effects. See |'compatible'|. |
| 1384 | ":mkvimrc", ":mkexrc" and ":mksession" write the command to set or reset the |
| 1385 | 'compatible' option to the output file first, because of these side effects. |
| 1386 | |
| 1387 | ============================================================================== |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 1388 | 9. Views and Sessions *views-sessions* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1389 | |
| 1390 | This is introduced in sections |21.4| and |21.5| of the user manual. |
| 1391 | |
| 1392 | *View* *view-file* |
| 1393 | A View is a collection of settings that apply to one window. You can save a |
| 1394 | View and when you restore it later, the text is displayed in the same way. |
| 1395 | The options and mappings in this window will also be restored, so that you can |
| 1396 | continue editing like when the View was saved. |
| 1397 | |
| 1398 | *Session* *session-file* |
| 1399 | A Session keeps the Views for all windows, plus the global settings. You can |
| 1400 | save a Session and when you restore it later the window layout looks the same. |
| 1401 | You can use a Session to quickly switch between different projects, |
| 1402 | automatically loading the files you were last working on in that project. |
| 1403 | |
| 1404 | Views and Sessions are a nice addition to viminfo-files, which are used to |
| 1405 | remember information for all Views and Sessions together |viminfo-file|. |
| 1406 | |
| 1407 | You can quickly start editing with a previously saved View or Session with the |
| 1408 | |-S| argument: > |
| 1409 | vim -S Session.vim |
| 1410 | < |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1411 | All this is {not available when compiled without the |+mksession| feature}. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1412 | |
| 1413 | *:mks* *:mksession* |
| 1414 | :mks[ession][!] [file] Write a Vim script that restores the current editing |
| 1415 | session. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1416 | When [!] is included, an existing file is overwritten. |
| 1417 | When [file] is omitted, "Session.vim" is used. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1418 | |
| 1419 | The output of ":mksession" is like ":mkvimrc", but additional commands are |
| 1420 | added to the file. Which ones depends on the 'sessionoptions' option. The |
| 1421 | resulting file, when executed with a ":source" command: |
| 1422 | 1. Restores global mappings and options, if 'sessionoptions' contains |
| 1423 | "options". Script-local mappings will not be written. |
| 1424 | 2. Restores global variables that start with an uppercase letter and contain |
| 1425 | at least one lowercase letter, if 'sessionoptions' contains "globals". |
Bram Moolenaar | 942db23 | 2021-02-13 18:14:48 +0100 | [diff] [blame] | 1426 | 3. Closes all windows in the current tab page, except the current one; closes |
| 1427 | all tab pages except the current one (this results in currently loaded |
| 1428 | buffers to be unloaded, some may become hidden if 'hidden' is set or |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1429 | otherwise specified); wipes out the current buffer, if it is empty and |
| 1430 | unnamed. |
| 1431 | 4. Restores the current directory, if 'sessionoptions' contains "curdir", or |
| 1432 | sets the current directory to where the Session file is, if |
| 1433 | 'sessionoptions' contains "sesdir". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1434 | 5. Restores GUI Vim window position, if 'sessionoptions' contains "winpos". |
| 1435 | 6. Restores screen size, if 'sessionoptions' contains "resize". |
| 1436 | 7. Reloads the buffer list, with the last cursor positions. If |
| 1437 | 'sessionoptions' contains "buffers" then all buffers are restored, |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1438 | including hidden and unloaded buffers. Otherwise, only buffers in windows |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1439 | are restored. |
| 1440 | 8. Restores all windows with the same layout. If 'sessionoptions' contains |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 1441 | "help", help windows are restored. If 'sessionoptions' contains "blank", |
| 1442 | windows editing a buffer without a name will be restored. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1443 | If 'sessionoptions' contains "winsize" and no (help/blank) windows were |
| 1444 | left out, the window sizes are restored (relative to the screen size). |
| 1445 | Otherwise, the windows are just given sensible sizes. |
| 1446 | 9. Restores the Views for all the windows, as with |:mkview|. But |
| 1447 | 'sessionoptions' is used instead of 'viewoptions'. |
| 1448 | 10. If a file exists with the same name as the Session file, but ending in |
| 1449 | "x.vim" (for eXtra), executes that as well. You can use *x.vim files to |
| 1450 | specify additional settings and actions associated with a given Session, |
| 1451 | such as creating menu items in the GUI version. |
| 1452 | |
| 1453 | After restoring the Session, the full filename of your current Session is |
| 1454 | available in the internal variable "v:this_session" |this_session-variable|. |
| 1455 | An example mapping: > |
Bram Moolenaar | c51cf03 | 2022-02-26 12:25:45 +0000 | [diff] [blame] | 1456 | :nmap <F2> :wa<Bar>exe "mksession! " .. v:this_session<CR>:so ~/sessions/ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1457 | This saves the current Session, and starts off the command to load another. |
| 1458 | |
Bram Moolenaar | 4a85b41 | 2006-04-23 22:40:29 +0000 | [diff] [blame] | 1459 | A session includes all tab pages, unless "tabpages" was removed from |
| 1460 | 'sessionoptions'. |tab-page| |
Bram Moolenaar | 7e8fd63 | 2006-02-18 22:14:51 +0000 | [diff] [blame] | 1461 | |
Bram Moolenaar | 9372a11 | 2005-12-06 19:59:18 +0000 | [diff] [blame] | 1462 | The |SessionLoadPost| autocmd event is triggered after a session file is |
| 1463 | loaded/sourced. |
| 1464 | *SessionLoad-variable* |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1465 | While the session file is loading, the SessionLoad global variable is set to |
| 1466 | 1. Plugins can use this to postpone some work until the SessionLoadPost event |
| 1467 | is triggered. |
Bram Moolenaar | 9372a11 | 2005-12-06 19:59:18 +0000 | [diff] [blame] | 1468 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1469 | *:mkvie* *:mkview* |
| 1470 | :mkvie[w][!] [file] Write a Vim script that restores the contents of the |
| 1471 | current window. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1472 | When [!] is included, an existing file is overwritten. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1473 | When [file] is omitted or is a number from 1 to 9, a |
Bram Moolenaar | 551dbcc | 2006-04-25 22:13:59 +0000 | [diff] [blame] | 1474 | name is generated and 'viewdir' prepended. When the |
Bram Moolenaar | 7e38ea2 | 2014-04-05 22:55:53 +0200 | [diff] [blame] | 1475 | last path part of 'viewdir' does not exist, this |
| 1476 | directory is created. E.g., when 'viewdir' is |
| 1477 | "$VIM/vimfiles/view" then "view" is created in |
| 1478 | "$VIM/vimfiles". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1479 | An existing file is always overwritten then. Use |
| 1480 | |:loadview| to load this view again. |
| 1481 | When [file] is the name of a file ('viewdir' is not |
| 1482 | used), a command to edit the file is added to the |
| 1483 | generated file. |
| 1484 | |
| 1485 | The output of ":mkview" contains these items: |
| 1486 | 1. The argument list used in the window. When the global argument list is |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1487 | used, it is reset to the global list. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1488 | The index in the argument list is also restored. |
| 1489 | 2. The file being edited in the window. If there is no file, the window is |
| 1490 | made empty. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1491 | 3. Restore mappings, abbreviations and options local to the window, if |
| 1492 | 'viewoptions' contains "options" or "localoptions". Only option values |
| 1493 | that are local to the current buffer and the current window are restored. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1494 | When storing the view as part of a session and "options" is in |
| 1495 | 'sessionoptions', global values for local options will be stored too. |
| 1496 | 4. Restore folds when using manual folding and 'viewoptions' contains |
| 1497 | "folds". Restore manually opened and closed folds. |
| 1498 | 5. The scroll position and the cursor position in the file. Doesn't work very |
| 1499 | well when there are closed folds. |
| 1500 | 6. The local current directory, if it is different from the global current |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 1501 | directory and 'viewoptions' contains "curdir". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1502 | |
| 1503 | Note that Views and Sessions are not perfect: |
| 1504 | - They don't restore everything. For example, defined functions, autocommands |
| 1505 | and ":syntax on" are not included. Things like register contents and |
| 1506 | command line history are in viminfo, not in Sessions or Views. |
Bram Moolenaar | 69a7cb4 | 2004-06-20 12:51:53 +0000 | [diff] [blame] | 1507 | - Global option values are only set when they differ from the default value. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1508 | When the current value is not the default value, loading a Session will not |
| 1509 | set it back to the default value. Local options will be set back to the |
| 1510 | default value though. |
| 1511 | - Existing mappings will be overwritten without warning. An existing mapping |
| 1512 | may cause an error for ambiguity. |
| 1513 | - When storing manual folds and when storing manually opened/closed folds, |
| 1514 | changes in the file between saving and loading the view will mess it up. |
| 1515 | - The Vim script is not very efficient. But still faster than typing the |
| 1516 | commands yourself! |
| 1517 | |
| 1518 | *:lo* *:loadview* |
| 1519 | :lo[adview] [nr] Load the view for the current file. When [nr] is |
| 1520 | omitted, the view stored with ":mkview" is loaded. |
| 1521 | When [nr] is specified, the view stored with ":mkview |
| 1522 | [nr]" is loaded. |
| 1523 | |
| 1524 | The combination of ":mkview" and ":loadview" can be used to store up to ten |
| 1525 | different views of a file. These are remembered in the directory specified |
| 1526 | with the 'viewdir' option. The views are stored using the file name. If a |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1527 | file is renamed or accessed through a (symbolic) link, the view will not be |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1528 | found. |
| 1529 | |
| 1530 | You might want to clean up your 'viewdir' directory now and then. |
| 1531 | |
| 1532 | To automatically save and restore views for *.c files: > |
| 1533 | au BufWinLeave *.c mkview |
| 1534 | au BufWinEnter *.c silent loadview |
| 1535 | |
| 1536 | ============================================================================== |
Bram Moolenaar | e0fa374 | 2016-02-20 15:47:01 +0100 | [diff] [blame] | 1537 | 10. The viminfo file *viminfo* *viminfo-file* *E136* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1538 | *E575* *E576* *E577* |
| 1539 | If you exit Vim and later start it again, you would normally lose a lot of |
| 1540 | information. The viminfo file can be used to remember that information, which |
| 1541 | enables you to continue where you left off. |
| 1542 | |
| 1543 | This is introduced in section |21.3| of the user manual. |
| 1544 | |
| 1545 | The viminfo file is used to store: |
| 1546 | - The command line history. |
| 1547 | - The search string history. |
| 1548 | - The input-line history. |
Bram Moolenaar | 49cd957 | 2005-01-03 21:06:01 +0000 | [diff] [blame] | 1549 | - Contents of non-empty registers. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1550 | - Marks for several files. |
| 1551 | - File marks, pointing to locations in files. |
| 1552 | - Last search/substitute pattern (for 'n' and '&'). |
| 1553 | - The buffer list. |
| 1554 | - Global variables. |
| 1555 | |
| 1556 | The viminfo file is not supported when the |+viminfo| feature has been |
| 1557 | disabled at compile time. |
| 1558 | |
| 1559 | You could also use a Session file. The difference is that the viminfo file |
| 1560 | does not depend on what you are working on. There normally is only one |
| 1561 | viminfo file. Session files are used to save the state of a specific editing |
| 1562 | Session. You could have several Session files, one for each project you are |
| 1563 | working on. Viminfo and Session files together can be used to effectively |
| 1564 | enter Vim and directly start working in your desired setup. |session-file| |
| 1565 | |
| 1566 | *viminfo-read* |
| 1567 | When Vim is started and the 'viminfo' option is non-empty, the contents of |
| 1568 | the viminfo file are read and the info can be used in the appropriate places. |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1569 | The |v:oldfiles| variable is filled. The marks are not read in at startup |
| 1570 | (but file marks are). See |initialization| for how to set the 'viminfo' |
| 1571 | option upon startup. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1572 | |
| 1573 | *viminfo-write* |
| 1574 | When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo |
| 1575 | file (it's actually merged with the existing one, if one exists). The |
| 1576 | 'viminfo' option is a string containing information about what info should be |
| 1577 | stored, and contains limits on how much should be stored (see 'viminfo'). |
| 1578 | |
Bram Moolenaar | c95a302 | 2016-06-12 23:01:46 +0200 | [diff] [blame] | 1579 | Merging happens in two ways. Most items that have been changed or set in the |
| 1580 | current Vim session are stored, and what was not changed is filled from what |
| 1581 | is currently in the viminfo file. For example: |
| 1582 | - Vim session A reads the viminfo, which contains variable START. |
| 1583 | - Vim session B does the same |
| 1584 | - Vim session A sets the variables AAA and BOTH and exits |
| 1585 | - Vim session B sets the variables BBB and BOTH and exits |
| 1586 | Now the viminfo will have: |
| 1587 | START - it was in the viminfo and wasn't changed in session A or B |
| 1588 | AAA - value from session A, session B kept it |
| 1589 | BBB - value from session B |
| 1590 | BOTH - value from session B, value from session A is lost |
| 1591 | |
Bram Moolenaar | 063b9d1 | 2016-07-09 20:21:48 +0200 | [diff] [blame] | 1592 | *viminfo-timestamp* |
Bram Moolenaar | c95a302 | 2016-06-12 23:01:46 +0200 | [diff] [blame] | 1593 | For some items a timestamp is used to keep the last changed version. Here it |
| 1594 | doesn't matter in which sequence Vim sessions exit, the newest item(s) are |
| 1595 | always kept. This is used for: |
| 1596 | - The command line history. |
| 1597 | - The search string history. |
| 1598 | - The input-line history. |
| 1599 | - Contents of non-empty registers. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1600 | - The jump list. |
| 1601 | - File marks. |
| 1602 | |
Bram Moolenaar | a02a551 | 2016-06-17 12:48:11 +0200 | [diff] [blame] | 1603 | The timestamp feature was added before Vim 8.0. Older versions of Vim, |
| 1604 | starting with 7.4.1131, will keep the items with timestamp, but not use them. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1605 | Thus, when using both an older and a newer version of Vim, the most recent |
| 1606 | data will be kept. |
Bram Moolenaar | c95a302 | 2016-06-12 23:01:46 +0200 | [diff] [blame] | 1607 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1608 | Notes for Unix: |
| 1609 | - The file protection for the viminfo file will be set to prevent other users |
| 1610 | from being able to read it, because it may contain any text or commands that |
| 1611 | you have worked with. |
| 1612 | - If you want to share the viminfo file with other users (e.g. when you "su" |
| 1613 | to another user), you can make the file writable for the group or everybody. |
Bram Moolenaar | 7f2e9d7 | 2017-11-11 20:58:53 +0100 | [diff] [blame] | 1614 | Vim will preserve this when replacing the viminfo file. Be careful, don't |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1615 | allow just anybody to read and write your viminfo file! |
| 1616 | - Vim will not overwrite a viminfo file that is not writable by the current |
| 1617 | "real" user. This helps for when you did "su" to become root, but your |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1618 | $HOME is still set to a normal user's home directory. Otherwise, Vim would |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1619 | create a viminfo file owned by root that nobody else can read. |
Bram Moolenaar | 69c2f17 | 2007-05-12 14:57:31 +0000 | [diff] [blame] | 1620 | - The viminfo file cannot be a symbolic link. This is to avoid security |
| 1621 | issues. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1622 | |
| 1623 | Marks are stored for each file separately. When a file is read and 'viminfo' |
| 1624 | is non-empty, the marks for that file are read from the viminfo file. NOTE: |
| 1625 | The marks are only written when exiting Vim, which is fine because marks are |
| 1626 | remembered for all the files you have opened in the current editing session, |
| 1627 | unless ":bdel" is used. If you want to save the marks for a file that you are |
| 1628 | about to abandon with ":bdel", use ":wv". The '[' and ']' marks are not |
| 1629 | stored, but the '"' mark is. The '"' mark is very useful for jumping to the |
| 1630 | cursor position when the file was last exited. No marks are saved for files |
| 1631 | that start with any string given with the "r" flag in 'viminfo'. This can be |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 1632 | used to avoid saving marks for files on removable media (for MS-Windows you |
| 1633 | would use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:"). |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1634 | The |v:oldfiles| variable is filled with the file names that the viminfo file |
| 1635 | has marks for. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1636 | |
| 1637 | *viminfo-file-marks* |
| 1638 | Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The |
| 1639 | numbered marks ('0 to '9) are a bit special. When the viminfo file is written |
| 1640 | (when exiting or with the ":wviminfo" command), '0 is set to the current cursor |
| 1641 | position and file. The old '0 is moved to '1, '1 to '2, etc. This |
| 1642 | resembles what happens with the "1 to "9 delete registers. If the current |
| 1643 | cursor position is already present in '0 to '9, it is moved to '0, to avoid |
| 1644 | having the same position twice. The result is that with "'0", you can jump |
| 1645 | back to the file and line where you exited Vim. To do that right away, try |
| 1646 | using this command: > |
| 1647 | |
| 1648 | vim -c "normal '0" |
| 1649 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1650 | In a C shell descendant, you could make an alias for it: > |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1651 | |
| 1652 | alias lvim vim -c '"'normal "'"0'"' |
| 1653 | |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1654 | For a Bash-like shell: > |
Bram Moolenaar | 864207d | 2008-06-24 22:14:38 +0000 | [diff] [blame] | 1655 | |
| 1656 | alias lvim='vim -c "normal '\''0"' |
| 1657 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1658 | Use the "r" flag in 'viminfo' to specify for which files no marks should be |
| 1659 | remembered. |
| 1660 | |
| 1661 | |
| 1662 | VIMINFO FILE NAME *viminfo-file-name* |
| 1663 | |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 1664 | - The default name of the viminfo file is "$HOME/.viminfo" for Unix, |
Bram Moolenaar | ade0d39 | 2020-01-21 22:33:58 +0100 | [diff] [blame] | 1665 | "s:.viminfo" for Amiga, "$HOME\_viminfo" for Win32. For Win32, when $HOME |
| 1666 | is not set, "$VIM\_viminfo" is used. When $VIM is also not set, |
Bram Moolenaar | 6f345a1 | 2019-12-17 21:27:18 +0100 | [diff] [blame] | 1667 | "c:\_viminfo" is used. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1668 | - The 'n' flag in the 'viminfo' option can be used to specify another viminfo |
| 1669 | file name |'viminfo'|. |
| 1670 | - The "-i" Vim argument can be used to set another file name, |-i|. When the |
| 1671 | file name given is "NONE" (all uppercase), no viminfo file is ever read or |
| 1672 | written. Also not for the commands below! |
Bram Moolenaar | b477af2 | 2018-07-15 20:20:18 +0200 | [diff] [blame] | 1673 | - The 'viminfofile' option can be used like the "-i" argument. In fact, the |
Bram Moolenaar | 3ec3217 | 2021-05-16 12:39:47 +0200 | [diff] [blame] | 1674 | value from the "-i" argument is stored in the 'viminfofile' option. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1675 | - For the commands below, another file name can be given, overriding the |
| 1676 | default and the name given with 'viminfo' or "-i" (unless it's NONE). |
| 1677 | |
| 1678 | |
| 1679 | CHARACTER ENCODING *viminfo-encoding* |
| 1680 | |
| 1681 | The text in the viminfo file is encoded as specified with the 'encoding' |
| 1682 | option. Normally you will always work with the same 'encoding' value, and |
| 1683 | this works just fine. However, if you read the viminfo file with another |
| 1684 | value for 'encoding' than what it was written with, some of the text |
| 1685 | (non-ASCII characters) may be invalid. If this is unacceptable, add the 'c' |
| 1686 | flag to the 'viminfo' option: > |
| 1687 | :set viminfo+=c |
| 1688 | Vim will then attempt to convert the text in the viminfo file from the |
| 1689 | 'encoding' value it was written with to the current 'encoding' value. This |
| 1690 | requires Vim to be compiled with the |+iconv| feature. Filenames are not |
| 1691 | converted. |
| 1692 | |
| 1693 | |
Bram Moolenaar | 8f3f58f | 2010-01-06 20:52:26 +0100 | [diff] [blame] | 1694 | MANUALLY READING AND WRITING *viminfo-read-write* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1695 | |
| 1696 | Two commands can be used to read and write the viminfo file manually. This |
| 1697 | can be used to exchange registers between two running Vim programs: First |
| 1698 | type ":wv" in one and then ":rv" in the other. Note that if the register |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1699 | already contained something, then ":rv!" would be required. Also note, |
| 1700 | however, that this means everything will be overwritten with information from |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1701 | the first Vim, including the command line history, etc. |
| 1702 | |
| 1703 | The viminfo file itself can be edited by hand too, although we suggest you |
| 1704 | start with an existing one to get the format right. It is reasonably |
| 1705 | self-explanatory once you're in there. This can be useful in order to |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1706 | create a second file, say "~/.my_viminfo", which could contain certain |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1707 | settings that you always want when you first start Vim. For example, you |
| 1708 | can preload registers with particular data, or put certain commands in the |
| 1709 | command line history. A line in your .vimrc file like > |
| 1710 | :rviminfo! ~/.my_viminfo |
| 1711 | can be used to load this information. You could even have different viminfos |
| 1712 | for different types of files (e.g., C code) and load them based on the file |
| 1713 | name, using the ":autocmd" command (see |:autocmd|). |
| 1714 | |
| 1715 | *viminfo-errors* |
| 1716 | When Vim detects an error while reading a viminfo file, it will not overwrite |
| 1717 | that file. If there are more than 10 errors, Vim stops reading the viminfo |
| 1718 | file. This was done to avoid accidentally destroying a file when the file |
| 1719 | name of the viminfo file is wrong. This could happen when accidentally typing |
| 1720 | "vim -i file" when you wanted "vim -R file" (yes, somebody accidentally did |
| 1721 | that!). If you want to overwrite a viminfo file with an error in it, you will |
| 1722 | either have to fix the error, or delete the file (while Vim is running, so |
| 1723 | most of the information will be restored). |
| 1724 | |
| 1725 | *:rv* *:rviminfo* *E195* |
Bram Moolenaar | 942db23 | 2021-02-13 18:14:48 +0100 | [diff] [blame] | 1726 | :rv[iminfo][!] [file] Read from viminfo file [file] (default: see |
| 1727 | |viminfo-file-name| above). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1728 | If [!] is given, then any information that is |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1729 | already set (registers, marks, |v:oldfiles|, etc.) |
Christian Brabandt | 5f75714 | 2024-05-18 19:11:10 +0200 | [diff] [blame] | 1730 | will be overwritten. "E195" may be given, when |
| 1731 | 'viminfofile' has been set to "NONE". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1732 | |
Bram Moolenaar | c95a302 | 2016-06-12 23:01:46 +0200 | [diff] [blame] | 1733 | *:wv* *:wviminfo* *E137* *E138* *E574* *E886* *E929* |
Bram Moolenaar | 942db23 | 2021-02-13 18:14:48 +0100 | [diff] [blame] | 1734 | :wv[iminfo][!] [file] Write to viminfo file [file] (default: see |
| 1735 | |viminfo-file-name| above). |
| 1736 | This command has no effect when 'viminfofile' has been |
| 1737 | set to "NONE". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1738 | The information in the file is first read in to make |
| 1739 | a merge between old and new info. When [!] is used, |
| 1740 | the old information is not read first, only the |
| 1741 | internal info is written. If 'viminfo' is empty, marks |
| 1742 | for up to 100 files will be written. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1743 | When you get error "E929: Too many viminfo temp |
| 1744 | files", check that no old temp files were left behind |
| 1745 | (e.g. ~/.viminf*) and that you can write in the |
| 1746 | directory of the .viminfo file. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1747 | |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1748 | *:ol* *:oldfiles* |
| 1749 | :ol[dfiles] List the files that have marks stored in the viminfo |
| 1750 | file. This list is read on startup and only changes |
Bram Moolenaar | e11d61a | 2016-08-20 18:36:54 +0200 | [diff] [blame] | 1751 | afterwards with `:rviminfo!`. Also see |v:oldfiles|. |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1752 | The number can be used with |c_#<|. |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1753 | The output can be filtered with |:filter|, e.g.: > |
Bram Moolenaar | 818078d | 2016-08-27 21:58:42 +0200 | [diff] [blame] | 1754 | filter /\.vim/ oldfiles |
Bram Moolenaar | 7b668e8 | 2016-08-23 23:51:21 +0200 | [diff] [blame] | 1755 | < The filtering happens on the file name. |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1756 | {only when compiled with the |+eval| feature} |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1757 | |
| 1758 | :bro[wse] ol[dfiles][!] |
| 1759 | List file names as with |:oldfiles|, and then prompt |
| 1760 | for a number. When the number is valid that file from |
| 1761 | the list is edited. |
| 1762 | If you get the |press-enter| prompt you can press "q" |
| 1763 | and still get the prompt to enter a file number. |
Aliaksei Budavei | 78c1898 | 2024-03-18 19:24:52 +0100 | [diff] [blame] | 1764 | Use [!] to abandon a modified buffer. |abandon| |
RestorerZ | ac9c6d5 | 2023-10-05 22:25:12 +0200 | [diff] [blame] | 1765 | {not when compiled with tiny features} |
Bram Moolenaar | d812df6 | 2008-11-09 12:46:09 +0000 | [diff] [blame] | 1766 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 1767 | vim:tw=78:ts=8:noet:ft=help:norl: |