Cthulhux | 93e0d2e | 2024-05-15 20:53:52 +0200 | [diff] [blame] | 1 | *vi_diff.txt* For Vim version 9.1. Last change: 2024 May 15 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
| 5 | |
| 6 | |
| 7 | Differences between Vim and Vi *vi-differences* |
| 8 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 9 | This file lists the differences between Vim and Vi/Ex and gives an overview of |
| 10 | what is in Vim that is not in Vi. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 11 | |
| 12 | Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing |
| 13 | is ":open". There are probably a lot of small differences (either because Vim |
| 14 | is missing something or because Posix is beside the mark). |
| 15 | |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 16 | 1. Simulated command |simulated-command| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 17 | 2. Missing options |missing-options| |
| 18 | 3. Limits |limits| |
| 19 | 4. The most interesting additions |vim-additions| |
| 20 | 5. Other vim features |other-features| |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 21 | 6. Supported Vi features |vi-features| |
| 22 | 7. Command-line arguments |cmdline-arguments| |
| 23 | 8. POSIX compliance |posix-compliance| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 24 | |
| 25 | ============================================================================== |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 26 | 1. Simulated command *simulated-command* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 27 | |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 28 | This command is in Vi, but Vim only simulates it: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 29 | |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 30 | *:o* *:op* *:open* |
| 31 | :[range]o[pen] Works like |:visual|: end Ex mode. |
| 32 | {Vi: start editing in open mode} |
| 33 | |
| 34 | :[range]o[pen] /pattern/ As above, additionally move the cursor to the |
| 35 | column where "pattern" matches in the cursor |
| 36 | line. |
| 37 | |
| 38 | Vim does not support open mode, since it's not really useful. For those |
| 39 | situations where ":open" would start open mode Vim will leave Ex mode, which |
| 40 | allows executing the same commands, but updates the whole screen instead of |
| 41 | only one line. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 42 | |
| 43 | ============================================================================== |
| 44 | 2. Missing options *missing-options* |
| 45 | |
| 46 | These options are in the Unix Vi, but not in Vim. If you try to set one of |
| 47 | them you won't get an error message, but the value is not used and cannot be |
| 48 | printed. |
| 49 | |
| 50 | autoprint (ap) boolean (default on) *'autoprint'* *'ap'* |
| 51 | beautify (bf) boolean (default off) *'beautify'* *'bf'* |
Cthulhux | 93e0d2e | 2024-05-15 20:53:52 +0200 | [diff] [blame] | 52 | flash (fl) boolean (default on) *'flash'* *'fl'* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 53 | graphic (gr) boolean (default off) *'graphic'* *'gr'* |
| 54 | hardtabs (ht) number (default 8) *'hardtabs'* *'ht'* |
| 55 | number of spaces that a <Tab> moves on the display |
| 56 | mesg boolean (default on) *'mesg'* |
| 57 | novice boolean (default off) *'novice'* |
| 58 | open boolean (default on) *'open'* |
| 59 | optimize (op) boolean (default off) *'optimize'* *'op'* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 60 | redraw boolean (default off) *'redraw'* |
| 61 | slowopen (slow) boolean (default off) *'slowopen'* *'slow'* |
| 62 | sourceany boolean (default off) *'sourceany'* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 63 | w300 number (default 23) *'w300'* |
| 64 | w1200 number (default 23) *'w1200'* |
| 65 | w9600 number (default 23) *'w9600'* |
| 66 | |
Bram Moolenaar | 2e693a8 | 2019-10-16 22:35:02 +0200 | [diff] [blame] | 67 | Vi did not allow for changing the termcap entries, you would have to exit Vi, |
| 68 | edit the termcap entry and try again. Vim has the |terminal-options|. |
| 69 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 70 | ============================================================================== |
| 71 | 3. Limits *limits* |
| 72 | |
| 73 | Vim has only a few limits for the files that can be edited {Vi: can not handle |
| 74 | <Nul> characters and characters above 128, has limited line length, many other |
| 75 | limits}. |
Bram Moolenaar | 98a29d0 | 2021-01-18 19:55:44 +0100 | [diff] [blame] | 76 | |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 77 | Maximum line length 2147483647 characters. Longer lines are split. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 78 | Maximum number of lines 2147483647 lines. |
| 79 | Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is |
| 80 | 32 bits. Much more for 64 bit longs. Also limited |
| 81 | by available disk space for the |swap-file|. |
| 82 | *E75* |
| 83 | Length of a file path Unix and Win32: 1024 characters, otherwise 256 |
| 84 | characters (or as much as the system supports). |
| 85 | Length of an expanded string option |
| 86 | Unix and Win32: 1024 characters, otherwise 256 |
| 87 | characters |
| 88 | Maximum display width Unix and Win32: 1024 characters, otherwise 255 |
| 89 | characters |
| 90 | Maximum lhs of a mapping 50 characters. |
Bram Moolenaar | 4770d09 | 2006-01-12 23:22:24 +0000 | [diff] [blame] | 91 | Number of different highlighting types: over 30000 |
Bram Moolenaar | 5302d9e | 2011-09-14 17:55:08 +0200 | [diff] [blame] | 92 | Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 |
| 93 | bit systems) |
Bram Moolenaar | 4a74803 | 2010-09-30 21:47:56 +0200 | [diff] [blame] | 94 | Maximum length of a line in a tags file: 512 bytes. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 95 | |
| 96 | Information for undo and text in registers is kept in memory, thus when making |
| 97 | (big) changes the amount of (virtual) memory available limits the number of |
| 98 | undo levels and the text that can be kept in registers. Other things are also |
| 99 | kept in memory: Command-line history, error messages for Quickfix mode, etc. |
| 100 | |
| 101 | Memory usage limits |
| 102 | ------------------- |
| 103 | |
| 104 | The option 'maxmem' ('mm') is used to set the maximum memory used for one |
| 105 | buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for |
| 106 | all buffers (in kilobytes). The defaults depend on the system used. For the |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 107 | Amiga, 'maxmemtot' is set depending on the amount of memory available. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 108 | These are not hard limits, but tell Vim when to move text into a swap file. |
| 109 | If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a |
| 110 | very large value. The swap file will then only be used for recovery. If you |
| 111 | don't want a swap file at all, set 'updatecount' to 0, or use the "-n" |
| 112 | argument when starting Vim. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 113 | |
| 114 | ============================================================================== |
| 115 | 4. The most interesting additions *vim-additions* |
| 116 | |
| 117 | Vi compatibility. |'compatible'| |
| 118 | Although Vim is 99% Vi compatible, some things in Vi can be |
| 119 | considered to be a bug, or at least need improvement. But still, Vim |
| 120 | starts in a mode which behaves like the "real" Vi as much as possible. |
| 121 | To make Vim behave a little bit better, try resetting the 'compatible' |
| 122 | option: |
| 123 | :set nocompatible |
| 124 | Or start Vim with the "-N" argument: |
| 125 | vim -N |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 126 | Vim starts with 'nocompatible' automatically if you have a .vimrc |
| 127 | file. See |startup|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 128 | The 'cpoptions' option can be used to set Vi compatibility on/off for |
| 129 | a number of specific items. |
| 130 | |
| 131 | Support for different systems. |
| 132 | Vim can be used on: |
| 133 | - All Unix systems (it works on all systems it was tested on, although |
| 134 | the GUI and Perl interface may not work everywhere). |
| 135 | - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). |
Bram Moolenaar | 8024f93 | 2020-01-14 19:29:13 +0100 | [diff] [blame] | 136 | - MS-Windows |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 137 | - VMS |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 138 | - Macintosh |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 139 | - IBM OS/390 |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 140 | Note that on some systems features need to be disabled to reduce |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 141 | resource usage. For some outdated systems you need to use an older |
| 142 | Vim version. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 143 | |
Bram Moolenaar | dc1f164 | 2016-08-16 18:33:43 +0200 | [diff] [blame] | 144 | Multi level persistent undo. |undo| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 145 | 'u' goes backward in time, 'CTRL-R' goes forward again. Set option |
| 146 | 'undolevels' to the number of changes to be remembered (default 1000). |
Bram Moolenaar | 7cba6c0 | 2013-09-05 22:13:31 +0200 | [diff] [blame] | 147 | Set 'undolevels' to 0 for a Vi-compatible one level undo. Set it to |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 148 | -1 for no undo at all. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 149 | When all changes in a buffer have been undone, the buffer is not |
| 150 | considered changed anymore. You can exit it with :q, without <!>. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 151 | When undoing a few changes and then making a new change Vim will |
| 152 | create a branch in the undo tree. This means you can go back to any |
Bram Moolenaar | 143c38c | 2007-05-10 16:41:10 +0000 | [diff] [blame] | 153 | state of the text, there is no risk of a change causing text to be |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 154 | lost forever. |undo-tree| |
Bram Moolenaar | dc1f164 | 2016-08-16 18:33:43 +0200 | [diff] [blame] | 155 | The undo information is stored in a file when the 'undofile' option is |
| 156 | set. This means you can exit Vim, start Vim on a previously edited |
| 157 | file and undo changes that were made before exiting Vim. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 158 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 159 | Graphical User Interface (GUI). |gui| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 160 | Included support for GUI: menu's, mouse, scrollbars, etc. You can |
| 161 | define your own menus. Better support for CTRL/SHIFT/ALT keys in |
| 162 | combination with special keys and mouse. Supported for various |
Bram Moolenaar | cbaff5e | 2022-04-08 17:45:08 +0100 | [diff] [blame] | 163 | platforms, such as X11 with Motif, GTK, Win32 (Windows XP and later), |
| 164 | Amiga and Macintosh. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 165 | |
| 166 | Multiple windows and buffers. |windows.txt| |
| 167 | Vim can split the screen into several windows, each editing a |
| 168 | different buffer or the same buffer at a different location. Buffers |
| 169 | can still be loaded (and changed) but not displayed in a window. This |
| 170 | is called a hidden buffer. Many commands and options have been added |
| 171 | for this facility. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 172 | Vim can also use multiple tab pages, each with one or more windows. A |
| 173 | line with tab labels can be used to quickly switch between these pages. |
| 174 | |tab-page| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 175 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 176 | Terminal window. |:terminal| |
| 177 | Vim can create a window in which a terminal emulator runs. This can |
| 178 | be used to execute an arbitrary command, a shell or a debugger. |
| 179 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 180 | Syntax highlighting. |:syntax| |
| 181 | Vim can highlight keywords, patterns and other things. This is |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 182 | defined by a number of |:syntax| commands, and can be made to |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 183 | highlight most languages and file types. A number of files are |
| 184 | included for highlighting the most common languages, like C, C++, |
| 185 | Java, Pascal, Makefiles, shell scripts, etc. The colors used for |
| 186 | highlighting can be defined for ordinary terminals, color terminals |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 187 | and the GUI with the |:highlight| command. A convenient way to do |
| 188 | this is using a |:colorscheme| command. |
| 189 | The highlighted text can be exported as HTML. |convert-to-HTML| |
| 190 | Other items that can be highlighted are matches with the search string |
| 191 | |'hlsearch'|, matching parens |matchparen| and the cursor line and |
| 192 | column |'cursorline'| |'cursorcolumn'|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 193 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 194 | Text properties |textprop.txt| |
| 195 | Vim supports highlighting text by a plugin. Property types can be |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 196 | specified with |prop_type_add()| and properties can be placed with |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 197 | |prop_add()|. |
| 198 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 199 | Spell checking. |spell| |
| 200 | When the 'spell' option is set Vim will highlight spelling mistakes. |
Bram Moolenaar | 9b45125 | 2012-08-15 17:43:31 +0200 | [diff] [blame] | 201 | About 50 languages are currently supported, selected with the |
Bram Moolenaar | f233048 | 2008-06-24 20:19:36 +0000 | [diff] [blame] | 202 | 'spelllang' option. In source code only comments and strings are |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 203 | checked for spelling. |
| 204 | |
| 205 | Folding. |folding| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 206 | A range of lines can be shown as one "folded" line. This allows |
| 207 | overviewing a file and moving blocks of text around quickly. |
| 208 | Folds can be created manually, from the syntax of the file, by indent, |
| 209 | etc. |
| 210 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 211 | Diff mode. |diff| |
| 212 | Vim can show two versions of a file with the differences highlighted. |
| 213 | Parts of the text that are equal are folded away. Commands can be |
| 214 | used to move text from one version to the other. |
| 215 | |
| 216 | Plugins. |add-plugin| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 217 | The functionality can be extended by dropping a plugin file in the |
| 218 | right directory. That's an easy way to start using Vim scripts |
| 219 | written by others. Plugins can be for all kind of files, or |
| 220 | specifically for a filetype. |
Bram Moolenaar | dc1f164 | 2016-08-16 18:33:43 +0200 | [diff] [blame] | 221 | Packages make this even easier. |packages| |
| 222 | |
| 223 | Asynchronous communication and timers. |channel| |job| |timer| |
| 224 | Vim can exchange messages with other processes in the background. |
| 225 | This makes it possible to have servers do work and send back the |
| 226 | results to Vim. |channel| |
| 227 | Vim can start a job, communicate with it and stop it. |job| |
| 228 | Timers can fire once or repeatedly and invoke a function to do any |
| 229 | work. |timer| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 230 | |
| 231 | Repeat a series of commands. |q| |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 232 | "q{c}" starts recording typed characters into named register {c}. |
| 233 | A subsequent "q" stops recording. The register can then be executed |
| 234 | with the "@{c}" command. This is very useful to repeat a complex |
| 235 | action. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 236 | |
| 237 | Flexible insert mode. |ins-special-special| |
| 238 | The arrow keys can be used in insert mode to move around in the file. |
| 239 | This breaks the insert in two parts as far as undo and redo is |
| 240 | concerned. |
| 241 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 242 | CTRL-O can be used to execute a single Normal mode command. This is |
| 243 | almost the same as hitting <Esc>, typing the command and doing |a|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 244 | |
| 245 | Visual mode. |Visual-mode| |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 246 | Visual mode can be used to first highlight a piece of text and then |
| 247 | give a command to do something with it. This is an (easy to use) |
| 248 | alternative to first giving the operator and then moving to the end of |
| 249 | the text to be operated upon. |
| 250 | |v| and |V| are used to start Visual mode. |v| works on characters |
| 251 | and |V| on lines. Move the cursor to extend the Visual area. It is |
| 252 | shown highlighted on the screen. By typing "o" the other end of the |
| 253 | Visual area can be moved. The Visual area can be affected by an |
| 254 | operator: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 255 | d delete |
| 256 | c change |
| 257 | y yank |
| 258 | > or < insert or delete indent |
| 259 | ! filter through external program |
| 260 | = filter through indent |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 261 | : start |:| command for the Visual lines. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 262 | gq format text to 'textwidth' columns |
| 263 | J join lines |
| 264 | ~ swap case |
| 265 | u make lowercase |
| 266 | U make uppercase |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 267 | {Vi has no Visual mode, the name "visual" is used for Normal mode, to |
| 268 | distinguish it from Ex mode} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 269 | |
| 270 | Block operators. |visual-block| |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 271 | With Visual mode a rectangular block of text can be selected. Start |
| 272 | Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") |
| 273 | or its case can be changed ("~", "u" and "U"). A deleted or yanked |
| 274 | block can be put into the text with the "p" and "P" commands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 275 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 276 | Help system. |:help| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 277 | Help is displayed in a window. The usual commands can be used to |
| 278 | move around, search for a string, etc. Tags can be used to jump |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 279 | around in the help files, just like hypertext links. The |:help| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 280 | command takes an argument to quickly jump to the info on a subject. |
| 281 | <F1> is the quick access to the help system. The name of the help |
| 282 | index file can be set with the 'helpfile' option. |
| 283 | |
| 284 | Command-line editing and history. |cmdline-editing| |
| 285 | You can insert or delete at any place in the command-line using the |
| 286 | cursor keys. The right/left cursor keys can be used to move |
| 287 | forward/backward one character. The shifted right/left cursor keys |
| 288 | can be used to move forward/backward one word. CTRL-B/CTRL-E can be |
| 289 | used to go to the begin/end of the command-line. |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 290 | {Vi: can only alter the last character in the line} |
| 291 | {Vi: when hitting <Esc> the command-line is executed. This is |
| 292 | unexpected for most people; therefore it was changed in Vim. But when |
| 293 | the <Esc> is part of a mapping, the command-line is executed. If you |
| 294 | want the Vi behaviour also when typing <Esc>, use ":cmap ^V<Esc> |
| 295 | ^V^M"} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 296 | |cmdline-history| |
| 297 | The command-lines are remembered. The up/down cursor keys can be used |
| 298 | to recall previous command-lines. The 'history' option can be set to |
| 299 | the number of lines that will be remembered. There is a separate |
| 300 | history for commands and for search patterns. |
| 301 | |
| 302 | Command-line completion. |cmdline-completion| |
| 303 | While entering a command-line (on the bottom line of the screen) |
| 304 | <Tab> can be typed to complete |
| 305 | what example ~ |
| 306 | - command :e<Tab> |
| 307 | - tag :ta scr<Tab> |
| 308 | - option :set sc<Tab> |
| 309 | - option value :set hf=<Tab> |
| 310 | - file name :e ve<Tab> |
| 311 | - etc. |
| 312 | |
| 313 | If there are multiple matches, CTRL-N (next) and CTRL-P (previous) |
| 314 | will walk through the matches. <Tab> works like CTRL-N, but wraps |
| 315 | around to the first match. |
| 316 | |
| 317 | The 'wildchar' option can be set to the character for command-line |
| 318 | completion, <Tab> is the default. CTRL-D can be typed after an |
| 319 | (incomplete) wildcard; all matches will be listed. CTRL-A will insert |
| 320 | all matches. CTRL-L will insert the longest common part of the |
| 321 | matches. |
| 322 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 323 | Insert-mode completion. |ins-completion| |
| 324 | In Insert mode the CTRL-N and CTRL-P keys can be used to complete a |
| 325 | word that appears elsewhere. |i_CTRL-N| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 326 | With CTRL-X another mode is entered, through which completion can be |
| 327 | done for: |
| 328 | |i_CTRL-X_CTRL-F| file names |
| 329 | |i_CTRL-X_CTRL-K| words from 'dictionary' files |
| 330 | |i_CTRL-X_CTRL-T| words from 'thesaurus' files |
| 331 | |i_CTRL-X_CTRL-I| words from included files |
| 332 | |i_CTRL-X_CTRL-L| whole lines |
| 333 | |i_CTRL-X_CTRL-]| words from the tags file |
| 334 | |i_CTRL-X_CTRL-D| definitions or macros |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 335 | |i_CTRL-X_CTRL-O| Omni completion: clever completion |
| 336 | specifically for a file type |
| 337 | etc. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 338 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 339 | Long line support. |'wrap'| |'linebreak'| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 340 | If the 'wrap' option is off, long lines will not wrap and only part |
| 341 | of them will be shown. When the cursor is moved to a part that is not |
| 342 | shown, the screen will scroll horizontally. The minimum number of |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 343 | columns to scroll can be set with the 'sidescroll' option. The |zh| |
| 344 | and |zl| commands can be used to scroll sideways. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 345 | Alternatively, long lines are broken in between words when the |
| 346 | 'linebreak' option is set. This allows editing a single-line |
| 347 | paragraph conveniently (e.g. when the text is later read into a DTP |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 348 | program). Move the cursor up/down with the |gk| and |gj| commands. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 349 | |
| 350 | Text formatting. |formatting| |
| 351 | The 'textwidth' option can be used to automatically limit the line |
| 352 | length. This supplements the 'wrapmargin' option of Vi, which was not |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 353 | very useful. The |gq| operator can be used to format a piece of text |
| 354 | (for example, |gqap| formats the current paragraph). Commands for |
| 355 | text alignment: |:center|, |:left| and |:right|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 356 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 357 | Extended search patterns. |pattern| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 358 | There are many extra items to match various text items. Examples: |
| 359 | A "\n" can be used in a search pattern to match a line break. |
| 360 | "x\{2,4}" matches "x" 2 to 4 times. |
| 361 | "\s" matches a white space character. |
| 362 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 363 | Directory, remote and archive browsing. |netrw| |
| 364 | Vim can browse the file system. Simply edit a directory. Move around |
| 365 | in the list with the usual commands and press <Enter> to go to the |
| 366 | directory or file under the cursor. |
| 367 | This also works for remote files over ftp, http, ssh, etc. |
| 368 | Zip and tar archives can also be browsed. |tar| |zip| |
| 369 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 370 | Edit-compile-edit speedup. |quickfix| |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 371 | The |:make| command can be used to run the compilation and jump to the |
| 372 | first error. A file with compiler error messages is interpreted. Vim |
| 373 | jumps to the first error. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 374 | |
| 375 | Each line in the error file is scanned for the name of a file, line |
| 376 | number and error message. The 'errorformat' option can be set to a |
| 377 | list of scanf-like strings to handle output from many compilers. |
| 378 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 379 | The |:cn| command can be used to jump to the next error. |
| 380 | |:cl| lists all the error messages. Other commands are available. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 381 | The 'makeef' option has the name of the file with error messages. |
| 382 | The 'makeprg' option contains the name of the program to be executed |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 383 | with the |:make| command. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 384 | The 'shellpipe' option contains the string to be used to put the |
| 385 | output of the compiler into the errorfile. |
| 386 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 387 | Finding matches in files. |:vimgrep| |
| 388 | Vim can search for a pattern in multiple files. This uses the |
| 389 | advanced Vim regexp pattern, works on all systems and also works to |
| 390 | search in compressed files. |
| 391 | |
| 392 | Improved indenting for programs. |'cindent'| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 393 | When the 'cindent' option is on the indent of each line is |
| 394 | automatically adjusted. C syntax is mostly recognized. The indent |
| 395 | for various styles can be set with 'cinoptions'. The keys to trigger |
| 396 | indenting can be set with 'cinkeys'. |
| 397 | |
| 398 | Comments can be automatically formatted. The 'comments' option can be |
| 399 | set to the characters that start and end a comment. This works best |
| 400 | for C code, but also works for e-mail (">" at start of the line) and |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 401 | other types of text. The |=| operator can be used to re-indent |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 402 | lines. |
| 403 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 404 | For many other languages an indent plugin is present to support |
| 405 | automatic indenting. |30.3| |
| 406 | |
| 407 | Searching for words in included files. |include-search| |
| 408 | The |[i| command can be used to search for a match of the word under |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 409 | the cursor in the current and included files. The 'include' option |
Bram Moolenaar | c236c16 | 2008-07-13 17:41:49 +0000 | [diff] [blame] | 410 | can be set to a pattern that describes a command to include a file |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 411 | (the default is for C programs). |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 412 | The |[I| command lists all matches, the |[_CTRL-I| command jumps to |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 413 | a match. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 414 | The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 415 | lines where the pattern given with the 'define' option matches. |
| 416 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 417 | Automatic commands. |autocommand| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 418 | Commands can be automatically executed when reading a file, writing a |
| 419 | file, jumping to another buffer, etc., depending on the file name. |
| 420 | This is useful to set options and mappings for C programs, |
| 421 | documentation, plain text, e-mail, etc. This also makes it possible |
| 422 | to edit compressed files. |
| 423 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 424 | Scripts and Expressions. |expression| |
| 425 | Commands have been added to form up a powerful script language. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 426 | |:if| Conditional execution, which can be used for example |
| 427 | to set options depending on the value of $TERM. |
| 428 | |:while| Repeat a number of commands. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 429 | |:for| Loop over a list. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 430 | |:echo| Print the result of an expression. |
| 431 | |:let| Assign a value to an internal variable, option, etc. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 432 | Variable types are Number, String, List and Dictionary. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 433 | |:execute| Execute a command formed by an expression. |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 434 | |:try| Catch exceptions. |
| 435 | etc., etc. See |eval|. |
| 436 | Debugging and profiling are supported. |debug-scripts| |profile| |
| 437 | If this is not enough, an interface is provided to |Python|, |Ruby|, |
Bram Moolenaar | 0ba0429 | 2010-07-14 23:23:17 +0200 | [diff] [blame] | 438 | |Tcl|, |Lua|, |Perl| and |MzScheme|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 439 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 440 | Viminfo. |viminfo-file| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 441 | The command-line history, marks and registers can be stored in a file |
| 442 | that is read on startup. This can be used to repeat a search command |
| 443 | or command-line command after exiting and restarting Vim. It is also |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 444 | possible to jump right back to where the last edit stopped with |'0|. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 445 | The 'viminfo' option can be set to select which items to store in the |
| 446 | .viminfo file. This is off by default. |
| 447 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 448 | Printing. |printing| |
| 449 | The |:hardcopy| command sends text to the printer. This can include |
| 450 | syntax highlighting. |
| 451 | |
| 452 | Mouse support. |mouse-using| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 453 | The mouse is supported in the GUI version, in an xterm for Unix, for |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 454 | BSDs with sysmouse, for Linux with gpm, and Win32. It can be used to |
| 455 | position the cursor, select the visual area, paste a register, etc. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 456 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 457 | Usage of key names. |<>| |key-notation| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 458 | Special keys now all have a name like <Up>, <End>, etc. |
| 459 | This name can be used in mappings, to make it easy to edit them. |
| 460 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 461 | Editing binary files. |edit-binary| |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 462 | Vim can edit binary files. You can change a few characters in an |
| 463 | executable file, without corrupting it. Vim doesn't remove NUL |
| 464 | characters (they are represented as <NL> internally). |
| 465 | |-b| command-line argument to start editing a binary file |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 466 | |'binary'| Option set by |-b|. Prevents adding an <EOL> for the |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 467 | last line in the file. |
| 468 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 469 | Multi-language support. |multi-lang| |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 470 | Files in double-byte or multibyte encodings can be edited. There is |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 471 | UTF-8 support to be able to edit various languages at the same time, |
| 472 | without switching fonts. |UTF-8| |
| 473 | Messages and menus are available in different languages. |
| 474 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 475 | Move cursor beyond lines. |
| 476 | When the 'virtualedit' option is set the cursor can move all over the |
| 477 | screen, also where there is no text. This is useful to edit tables |
| 478 | and figures easily. |
| 479 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 480 | ============================================================================== |
| 481 | 5. Other vim features *other-features* |
| 482 | |
| 483 | A random collection of nice extra features. |
| 484 | |
| 485 | |
| 486 | When Vim is started with "-s scriptfile", the characters read from |
| 487 | "scriptfile" are treated as if you typed them. If end of file is reached |
| 488 | before the editor exits, further characters are read from the console. |
| 489 | |
| 490 | The "-w" option can be used to record all typed characters in a script file. |
| 491 | This file can then be used to redo the editing, possibly on another file or |
| 492 | after changing some commands in the script file. |
| 493 | |
| 494 | The "-o" option opens a window for each argument. "-o4" opens four windows. |
| 495 | |
| 496 | Vi requires several termcap entries to be able to work full-screen. Vim only |
| 497 | requires the "cm" entry (cursor motion). |
| 498 | |
| 499 | |
| 500 | In command mode: |
| 501 | |
| 502 | When the 'showcmd' option is set, the command characters are shown in the last |
| 503 | line of the screen. They are removed when the command is finished. |
| 504 | |
| 505 | If the 'ruler' option is set, the current cursor position is shown in the |
| 506 | last line of the screen. |
| 507 | |
| 508 | "U" still works after having moved off the last changed line and after "u". |
| 509 | |
| 510 | Characters with the 8th bit set are displayed. The characters between '~' and |
| 511 | 0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the |
| 512 | 'isprint' option. |
| 513 | |
| 514 | "][" goes to the next ending of a C function ('}' in column 1). |
| 515 | "[]" goes to the previous ending of a C function ('}' in column 1). |
| 516 | |
| 517 | "]f", "[f" and "gf" start editing the file whose name is under the cursor. |
| 518 | CTRL-W f splits the window and starts editing the file whose name is under |
| 519 | the cursor. |
| 520 | |
| 521 | "*" searches forward for the identifier under the cursor, "#" backward. |
| 522 | "K" runs the program defined by the 'keywordprg' option, with the identifier |
| 523 | under the cursor as argument. |
| 524 | |
| 525 | "%" can be preceded with a count. The cursor jumps to the line that |
| 526 | percentage down in the file. The normal "%" function to jump to the matching |
| 527 | brace skips braces inside quotes. |
| 528 | |
| 529 | With the CTRL-] command, the cursor may be in the middle of the identifier. |
| 530 | |
| 531 | The used tags are remembered. Commands that can be used with the tag stack |
| 532 | are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. |
| 533 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 534 | Vi uses 'wrapscan' when searching for a tag. When jumping to a tag Vi starts |
| 535 | searching in line 2 of another file. It does not find a tag in line 1 of |
| 536 | another file when 'wrapscan' is not set. |
| 537 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 538 | The 'tags' option can be set to a list of tag file names. Thus multiple |
| 539 | tag files can be used. For file names that start with "./", the "./" is |
| 540 | replaced with the path of the current file. This makes it possible to use a |
| 541 | tags file in the same directory as the file being edited. |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 542 | {Vi: always uses binary search in some versions} |
| 543 | {Vi does not have the security prevention for commands in tag files} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 544 | |
| 545 | Previously used file names are remembered in the alternate file name list. |
| 546 | CTRL-^ accepts a count, which is an index in this list. |
| 547 | ":files" command shows the list of alternate file names. |
| 548 | "#<N>" is replaced with the <N>th alternate file name in the list. |
| 549 | "#<" is replaced with the current file name without extension. |
| 550 | |
| 551 | Search patterns have more features. The <NL> character is seen as part of the |
| 552 | search pattern and the substitute string of ":s". Vi sees it as the end of |
| 553 | the command. |
| 554 | |
| 555 | Searches can put the cursor on the end of a match and may include a character |
| 556 | offset. |
| 557 | |
| 558 | Count added to "~", ":next", ":Next", "n" and "N". |
| 559 | |
| 560 | The command ":next!" with 'autowrite' set does not write the file. In vi the |
| 561 | file was written, but this is considered to be a bug, because one does not |
| 562 | expect it and the file is not written with ":rewind!". |
| 563 | |
| 564 | In Vi when entering a <CR> in replace mode deletes a character only when 'ai' |
| 565 | is set (but does not show it until you hit <Esc>). Vim always deletes a |
| 566 | character (and shows it immediately). |
| 567 | |
| 568 | Added :wnext command. Same as ":write" followed by ":next". |
| 569 | |
| 570 | The ":w!" command always writes, also when the file is write protected. In Vi |
Bram Moolenaar | 26df092 | 2014-02-23 23:39:13 +0100 | [diff] [blame] | 571 | you would have to do ":!chmod +w %:S" and ":set noro". |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 572 | |
| 573 | When 'tildeop' has been set, "~" is an operator (must be followed by a |
| 574 | movement command). |
| 575 | |
| 576 | With the "J" (join) command you can reset the 'joinspaces' option to have only |
| 577 | one space after a period (Vi inserts two spaces). |
| 578 | |
| 579 | "cw" can be used to change white space formed by several characters (Vi is |
| 580 | confusing: "cw" only changes one space, while "dw" deletes all white space). |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 581 | {Vi: "cw" when on a blank followed by other blanks changes only the first |
| 582 | blank; this is probably a bug, because "dw" deletes all the blanks} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 583 | |
| 584 | "o" and "O" accept a count for repeating the insert (Vi clears a part of |
| 585 | display). |
| 586 | |
| 587 | Flags after Ex commands not supported (no plans to include it). |
| 588 | |
| 589 | On non-UNIX systems ":cd" command shows current directory instead of going to |
| 590 | the home directory (there isn't one). ":pwd" prints the current directory on |
| 591 | all systems. |
| 592 | |
| 593 | After a ":cd" command the file names (in the argument list, opened files) |
| 594 | still point to the same files. In Vi ":cd" is not allowed in a changed file; |
| 595 | otherwise the meaning of file names change. |
| 596 | |
| 597 | ":source!" command reads Vi commands from a file. |
| 598 | |
| 599 | ":mkexrc" command writes current modified options and mappings to a ".exrc" |
| 600 | file. ":mkvimrc" writes to a ".vimrc" file. |
| 601 | |
| 602 | No check for "tail recursion" with mappings. This allows things like |
| 603 | ":map! foo ^]foo". |
| 604 | |
| 605 | When a mapping starts with number, vi loses the count typed before it (e.g. |
| 606 | when using the mapping ":map g 4G" the command "7g" goes to line 4). This is |
| 607 | considered a vi bug. Vim concatenates the counts (in the example it becomes |
| 608 | "74G"), as most people would expect. |
| 609 | |
| 610 | The :put! command inserts the contents of a register above the current line. |
| 611 | |
| 612 | The "p" and "P" commands of vi cannot be repeated with "." when the putted |
| 613 | text is less than a line. In Vim they can always be repeated. |
| 614 | |
| 615 | ":noremap" command can be used to enter a mapping that will not be remapped. |
| 616 | This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and |
| 617 | ":cnoremap" can be used for mapping in command-line editing only. ":imap", |
| 618 | ":iunmap" and ":inoremap" can be used for mapping in insert mode only. |
| 619 | Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" |
| 620 | ":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". |
| 621 | |
| 622 | In Vi the command ":map foo bar" would remove a previous mapping |
| 623 | ":map bug foo". This is considered a bug, so it is not included in Vim. |
| 624 | ":unmap! foo" does remove ":map! bug foo", because unmapping would be very |
| 625 | difficult otherwise (this is vi compatible). |
| 626 | |
| 627 | The ':' register contains the last command-line. |
| 628 | The '%' register contains the current file name. |
| 629 | The '.' register contains the last inserted text. |
| 630 | |
| 631 | ":dis" command shows the contents of the yank registers. |
| 632 | |
| 633 | CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the |
| 634 | same positions as used with the '' command, but may be in another file. The |
| 635 | ":jumps" command lists the older positions. |
| 636 | |
| 637 | If the 'shiftround' option is set, an indent is rounded to a multiple of |
| 638 | 'shiftwidth' with ">" and "<" commands. |
| 639 | |
| 640 | The 'scrolljump' option can be set to the minimum number of lines to scroll |
| 641 | when the cursor gets off the screen. Use this when scrolling is slow. |
| 642 | |
| 643 | The 'scrolloff' option can be set to the minimum number of lines to keep |
| 644 | above and below the cursor. This gives some context to where you are |
| 645 | editing. When set to a large number the cursor line is always in the middle |
| 646 | of the window. |
| 647 | |
| 648 | Uppercase marks can be used to jump between files. The ":marks" command lists |
| 649 | all currently set marks. The commands "']" and "`]" jump to the end of the |
| 650 | previous operator or end of the text inserted with the put command. "'[" and |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 651 | "`[" do jump to the start. {Vi: no uppercase marks} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 652 | |
| 653 | The 'shelltype' option can be set to reflect the type of shell used on the |
| 654 | Amiga. |
| 655 | |
| 656 | The 'highlight' option can be set for the highlight mode to be used for |
| 657 | several commands. |
| 658 | |
| 659 | The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the |
| 660 | command (default 1) is added to/subtracted from the number at or after the |
| 661 | cursor. That number may be decimal, octal (starts with a '0') or hexadecimal |
| 662 | (starts with '0x'). Very useful in macros. |
| 663 | |
| 664 | With the :set command the prefix "inv" can be used to invert boolean options. |
| 665 | |
| 666 | In both Vi and Vim you can create a line break with the ":substitute" command |
| 667 | by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the |
| 668 | text. With Vim you can put a real CTRL-M in the text by preceding it with a |
| 669 | CTRL-V. |
| 670 | |
| 671 | |
| 672 | In Insert mode: |
| 673 | |
| 674 | If the 'revins' option is set, insert happens backwards. This is for typing |
| 675 | Hebrew. When inserting normal characters the cursor will not be shifted and |
| 676 | the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in |
| 677 | the opposite direction. CTRL-B toggles the 'revins' option. In replace mode |
| 678 | 'revins' has no effect. Only when enabled at compile time. |
| 679 | |
| 680 | The backspace key can be used just like CTRL-D to remove auto-indents. |
| 681 | |
| 682 | You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) |
| 683 | option includes "eol". You can backspace over the start of insert if the |
| 684 | 'backspace' option includes "start". |
| 685 | |
Bram Moolenaar | 9b45125 | 2012-08-15 17:43:31 +0200 | [diff] [blame] | 686 | When the 'paste' option is set, a few options are reset and mapping in insert |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 687 | mode and abbreviation are disabled. This allows for pasting text in windowing |
| 688 | systems without unexpected results. When the 'paste' option is reset, the old |
| 689 | option values are restored. |
| 690 | |
| 691 | CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter |
| 692 | what column the cursor is in. |
| 693 | |
| 694 | CTRL-@ (insert previously inserted text) works always (Vi: only when typed as |
| 695 | first character). |
| 696 | |
| 697 | CTRL-A works like CTRL-@ but does not leave insert mode. |
| 698 | |
Bram Moolenaar | 5be4cee | 2019-09-27 19:34:08 +0200 | [diff] [blame] | 699 | CTRL-R {register} can be used to insert the contents of a register. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 700 | |
| 701 | When the 'smartindent' option is set, C programs will be better auto-indented. |
| 702 | With 'cindent' even more. |
| 703 | |
| 704 | CTRL-Y and CTRL-E can be used to copy a character from above/below the |
| 705 | current cursor position. |
| 706 | |
| 707 | After CTRL-V you can enter a three digit decimal number. This byte value is |
| 708 | inserted in the text as a single character. Useful for international |
| 709 | characters that are not on your keyboard. |
| 710 | |
| 711 | When the 'expandtab' (et) option is set, a <Tab> is expanded to the |
| 712 | appropriate number of spaces. |
| 713 | |
| 714 | The window always reflects the contents of the buffer (Vi does not do this |
| 715 | when changing text and in some other cases). |
| 716 | |
| 717 | If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of |
| 718 | normal digraphs is included. They are shown with the ":digraph" command. |
| 719 | More can be added with ":digraph {char1}{char2} {number}". A digraph is |
| 720 | entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when |
| 721 | 'digraph' option is set). |
| 722 | |
| 723 | When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin |
| 724 | for the first insert. Vim does it for all. |
| 725 | |
| 726 | A count to the "i" or "a" command is used for all the text. Vi uses the count |
| 727 | only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi |
| 728 | but "abc<NL>defabc<NL>defabc<NL>def" in Vim. |
| 729 | |
| 730 | |
| 731 | In Command-line mode: |
| 732 | |
Bram Moolenaar | 4499d2e | 2005-04-15 20:41:38 +0000 | [diff] [blame] | 733 | <Esc> terminates the command-line without executing it. In vi the command |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 734 | line would be executed, which is not what most people expect (hitting <Esc> |
| 735 | should always get you back to command mode). To avoid problems with some |
| 736 | obscure macros, an <Esc> in a macro will execute the command. If you want a |
| 737 | typed <Esc> to execute the command like vi does you can fix this with |
| 738 | ":cmap ^V<Esc> ^V<CR>" |
| 739 | |
| 740 | General: |
| 741 | |
| 742 | The 'ttimeout' option is like 'timeout', but only works for cursor and |
| 743 | function keys, not for ordinary mapped characters. The 'timeoutlen' option |
| 744 | gives the number of milliseconds that is waited for. If the 'esckeys' option |
| 745 | is not set, cursor and function keys that start with <Esc> are not recognized |
| 746 | in insert mode. |
| 747 | |
| 748 | There is an option for each terminal string. Can be used when termcap is not |
| 749 | supported or to change individual strings. |
| 750 | |
| 751 | The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" |
| 752 | <NL> or "mac" <CR>. |
| 753 | When the 'fileformats' option is not empty, Vim tries to detect the type of |
| 754 | <EOL> automatically. The 'fileformat' option is set accordingly. |
| 755 | |
| 756 | On systems that have no job control (older Unix systems and non-Unix systems) |
| 757 | the CTRL-Z, ":stop" or ":suspend" command starts a new shell. |
| 758 | |
| 759 | If Vim is started on the Amiga without an interactive window for output, a |
| 760 | window is opened (and :sh still works). You can give a device to use for |
| 761 | editing with the |-d| argument, e.g. "-d con:20/20/600/150". |
| 762 | |
| 763 | The 'columns' and 'lines' options are used to set or get the width and height |
| 764 | of the display. |
| 765 | |
| 766 | Option settings are read from the first and last few lines of the file. |
| 767 | Option 'modelines' determines how many lines are tried (default is 5). Note |
| 768 | that this is different from the Vi versions that can execute any Ex command |
| 769 | in a modeline (a major security problem). |trojan-horse| |
| 770 | |
| 771 | If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. |
| 772 | And it comes back there, when pressing <Esc>. |
| 773 | |
| 774 | Undo information is kept in memory. Available memory limits the number and |
Bram Moolenaar | 5666fcd | 2019-12-26 14:35:26 +0100 | [diff] [blame] | 775 | size of change that can be undone. This is hardly a problem on the Amiga and |
| 776 | almost never with Unix and Win32. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 777 | |
| 778 | If the 'backup' or 'writebackup' option is set: Before a file is overwritten, |
| 779 | a backup file (.bak) is made. If the "backup" option is set it is left |
| 780 | behind. |
| 781 | |
| 782 | Vim creates a file ending in ".swp" to store parts of the file that have been |
| 783 | changed or that do not fit in memory. This file can be used to recover from |
| 784 | an aborted editing session with "vim -r file". Using the swap file can be |
| 785 | switched off by setting the 'updatecount' option to 0 or starting Vim with |
| 786 | the "-n" option. Use the 'directory' option for placing the .swp file |
| 787 | somewhere else. |
| 788 | |
| 789 | Vim is able to work correctly on filesystems with 8.3 file names, also when |
| 790 | using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted |
| 791 | filesystem under Unix. See |'shortname'|. |
| 792 | |
| 793 | Error messages are shown at least one second (Vi overwrites error messages). |
| 794 | |
| 795 | If Vim gives the |hit-enter| prompt, you can hit any key. Characters other |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 796 | than <CR>, <NL> and <Space> are interpreted as the (start of) a command. |
| 797 | {Vi: only ":" commands are interpreted} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 798 | |
| 799 | The contents of the numbered and unnamed registers is remembered when |
| 800 | changing files. |
| 801 | |
| 802 | The "No lines in buffer" message is a normal message instead of an error |
| 803 | message, since that may cause a mapping to be aborted. |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 804 | {Vi: error messages may be overwritten with other messages before you have a |
| 805 | chance to read them} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 806 | |
| 807 | The AUX: device of the Amiga is supported. |
| 808 | |
| 809 | ============================================================================== |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 810 | 6. Supported Vi features *vi-features* |
| 811 | |
| 812 | Vim supports nearly all Vi commands and mostly in the same way. That is when |
| 813 | the 'compatible' option is set and 'cpoptions' contains all flags. What the |
| 814 | effect is of resetting 'compatible' and removing flags from 'cpoptions' can be |
| 815 | found at the help for the specific command. |
| 816 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 817 | The help files used to mark features that are in Vim but not in Vi with {not |
| 818 | in Vi}. However, since these remarks cluttered the help files we now do it |
| 819 | the other way around: Below is listed what Vi already supported. Anything |
| 820 | else has been added by Vim. |
| 821 | |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 822 | |
| 823 | The following Ex commands are supported by Vi: ~ |
| 824 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 825 | `:abbreviate` enter abbreviation |
| 826 | `:append` append text |
| 827 | `:args` print the argument list |
| 828 | `:cd` change directory; Vi: no "cd -" |
| 829 | `:change` replace a line or series of lines |
| 830 | `:chdir` change directory |
| 831 | `:copy` copy lines |
| 832 | `:delete` delete lines |
| 833 | `:edit` edit a file |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 834 | `:exit` same as `:xit` |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 835 | `:file` show or set the current file name; Vi: without the column number |
| 836 | `:global` execute commands for matching lines |
| 837 | `:insert` insert text |
| 838 | `:join` join lines; Vi: not :join! |
| 839 | `:k` set a mark |
| 840 | `:list` print lines |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 841 | `:map` show or enter a mapping |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 842 | `:mark` set a mark |
| 843 | `:move` move lines |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 844 | `:Next` go to previous file in the argument list {Vi: no count} |
| 845 | `:next` go to next file in the argument list {Vi: no count} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 846 | `:number` print lines with line number |
| 847 | `:open` start open mode (not implemented in Vim) |
| 848 | `:pop` jump to older entry in tag stack (only in some versions) |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 849 | `:preserve` write all text to swap file {Vi: might also exit} |
| 850 | `:previous` same as `:Next` {Vi: only in some versions} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 851 | `:print` print lines |
| 852 | `:put` insert contents of register in the text |
| 853 | `:quit` quit Vi |
| 854 | `:read` read file into the text |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 855 | `:recover` recover a file from a swap file {Vi: recovers in another way |
| 856 | and sends mail if there is something to recover} |
| 857 | `:rewind` go to the first file in the argument list; no ++opt |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 858 | `:set` set option; but not `:set inv{option}`, `:set option&`, |
| 859 | `:set all&`, `:set option+=value`, `:set option^=value` |
| 860 | `:set option-=value` `:set option<` |
| 861 | `:shell` escape to a shell |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 862 | `:source` read Vi or Ex commands from a file |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 863 | `:stop` suspend the editor or escape to a shell |
| 864 | `:substitute` find and replace text; Vi: no '&', 'i', 's', 'r' or 'I' flag, |
| 865 | confirm prompt only supports 'y' and 'n', no highlighting |
| 866 | `:suspend` same as ":stop" |
| 867 | `:t` same as ":copy" |
| 868 | `:tag` jump to tag |
| 869 | `:unabbreviate` remove abbreviation |
| 870 | `:undo` undo last change {Vi: only one level} |
| 871 | `:unmap` remove mapping |
| 872 | `:vglobal` execute commands for not matching lines |
| 873 | `:version` print version number and other info |
| 874 | `:visual` same as ":edit", but turns off "Ex" mode |
| 875 | `:wq` write to a file and quit Vi |
| 876 | `:write` write to a file |
| 877 | `:xit` write if buffer changed and quit Vi |
| 878 | `:yank` yank lines into a register |
| 879 | `:z` print some lines {not in all versions of Vi} |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 880 | `:!` filter lines or execute an external command |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 881 | `:"` comment |
| 882 | `:#` same as ":number" |
| 883 | `:*` execute contents of a register |
| 884 | `:&` repeat last ":substitute" |
| 885 | `:<` shift lines one 'shiftwidth' left |
| 886 | `:=` print the cursor line number |
| 887 | `:>` shift lines one 'shiftwidth' right |
| 888 | `:@` execute contents of a register; but not `:@`; `:@@` only in |
| 889 | some versions |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 890 | |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 891 | Common for these commands is that Vi doesn't support the ++opt argument on |
| 892 | `:edit` and other commands that open a file. |
| 893 | |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 894 | |
| 895 | The following Normal mode commands are supported by Vi: ~ |
| 896 | |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 897 | note: See the beginning of |normal-index| for the meaning of WORD, N, Nmove |
| 898 | and etc in the description text. |
| 899 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 900 | |CTRL-B| scroll N screens Backwards |
| 901 | |CTRL-C| interrupt current (search) command |
| 902 | |CTRL-D| scroll Down N lines (default: half a screen); Vim scrolls |
| 903 | 'scroll' screen lines, Vi scrolls file lines; makes a |
| 904 | difference when lines wrap |
| 905 | |CTRL-E| scroll N lines upwards (N lines Extra) |
| 906 | |CTRL-F| scroll N screens Forward |
| 907 | |CTRL-G| display current file name and position |
| 908 | |<BS>| same as "h" |
| 909 | |CTRL-H| same as "h" |
| 910 | |<NL>| same as "j" |
| 911 | |CTRL-J| same as "j" |
| 912 | |CTRL-L| redraw screen |
| 913 | |<CR>| cursor to the first CHAR N lines lower |
| 914 | |CTRL-M| same as <CR> |
| 915 | |CTRL-N| same as "j" |
| 916 | |CTRL-P| same as "k" |
| 917 | |CTRL-R| in some Vi versions: same as CTRL-L |
| 918 | |CTRL-T| jump to N older Tag in tag list |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 919 | |CTRL-U| N lines Upwards (default: half a screen) {Vi used file lines |
| 920 | while Vim scrolls 'scroll' screen lines; makes a difference |
| 921 | when lines wrap} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 922 | |CTRL-Y| scroll N lines downwards |
| 923 | |CTRL-Z| suspend program (or start new shell) |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 924 | |CTRL-]| :ta to ident under cursor {Vi: identifier after the cursor} |
| 925 | |CTRL-^| edit alternate file {Vi: no count} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 926 | |<Space>| same as "l" |
| 927 | |!| filter Nmove text through the {filter} command |
| 928 | |!!| filter N lines through the {filter} command |
| 929 | " use register {a-zA-Z0-9.%#:-"} for next delete, yank or put |
| 930 | (uppercase to append) ({.%#:} only work with put) |
| 931 | |$| cursor to the end of Nth next line |
| 932 | |%| find the next (curly/square) bracket on this line and go to |
| 933 | its match, or go to matching comment bracket, or go to |
| 934 | matching preprocessor directive (Vi: no count supported) |
| 935 | |&| repeat last :s |
| 936 | |'| jump to mark (Vi: only lowercase marks) |
| 937 | |(| cursor N sentences backward |
| 938 | |)| cursor N sentences forward |
| 939 | |+| same as <CR> |
| 940 | |,| repeat latest f, t, F or T in opposite direction N times |
| 941 | |-| cursor to the first CHAR N lines higher |
| 942 | |.| repeat last change with count replaced with N |
| 943 | |/| search forward for the Nth occurrence of {pattern} |
| 944 | |0| cursor to the first char of the line |
| 945 | |:| start entering an Ex command |
| 946 | |;| repeat latest f, t, F or T N times |
| 947 | |<| shift Nmove lines one 'shiftwidth' leftwards |
| 948 | |<<| shift N lines one 'shiftwidth' leftwards |
| 949 | |=| filter Nmove lines through "indent" |
| 950 | |==| filter N lines through "indent" |
| 951 | |>| shift Nmove lines one 'shiftwidth' rightwards |
| 952 | |>>| shift N lines one 'shiftwidth' rightwards |
| 953 | |?| search backward for the Nth previous occurrence of {pattern} |
| 954 | |@| execute the contents of register {a-z} N times |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 955 | {Vi: only named registers} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 956 | |@@| repeat the previous @{a-z} N times |
| 957 | |A| append text after the end of the line N times |
| 958 | |B| cursor N WORDS backward |
| 959 | |C| change from the cursor position to the end of the line |
| 960 | |D| delete the characters under the cursor until the end of the |
| 961 | line and N-1 more lines [into register x]; synonym for "d$" |
| 962 | |E| cursor forward to the end of WORD N |
| 963 | |F| cursor to the Nth occurrence of {char} to the left |
| 964 | |G| cursor to line N, default last line |
| 965 | |H| cursor to line N from top of screen |
| 966 | |I| insert text before the first CHAR on the line N times |
| 967 | |J| Join N lines; default is 2 |
| 968 | |L| cursor to line N from bottom of screen |
| 969 | |M| cursor to middle line of screen |
| 970 | |N| repeat the latest '/' or '?' N times in opposite direction |
| 971 | |O| begin a new line above the cursor and insert text, repeat N |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 972 | times {Vi: blank [count] screen lines} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 973 | |P| put the text [from register x] before the cursor N times |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 974 | {Vi: no count} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 975 | |Q| switch to "Ex" mode |
| 976 | |R| enter replace mode: overtype existing characters, repeat the |
| 977 | entered text N-1 times |
| 978 | |S| delete N lines [into register x] and start insert; synonym for |
| 979 | "cc". |
| 980 | |T| cursor till after Nth occurrence of {char} to the left |
| 981 | |U| undo all latest changes on one line |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 982 | {Vi: while not moved off of the last modified line} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 983 | |W| cursor N WORDS forward |
| 984 | |X| delete N characters before the cursor [into register x] |
| 985 | |Y| yank N lines [into register x]; synonym for "yy" |
| 986 | |ZZ| store current file if modified, and exit |
| 987 | |[[| cursor N sections backward |
| 988 | |]]| cursor N sections forward |
| 989 | |^| cursor to the first CHAR of the line |
| 990 | |_| cursor to the first CHAR N - 1 lines lower |
| 991 | |`| cursor to the mark {a-zA-Z0-9} |
| 992 | |a| append text after the cursor N times |
| 993 | |b| cursor N words backward |
| 994 | |c| delete Nmove text [into register x] and start insert |
| 995 | |cc| delete N lines [into register x] and start insert |
| 996 | |d| delete Nmove text [into register x] |
| 997 | |dd| delete N lines [into register x] |
| 998 | |e| cursor forward to the end of word N |
| 999 | |f| cursor to Nth occurrence of {char} to the right |
| 1000 | |h| cursor N chars to the left |
| 1001 | |i| insert text before the cursor N times |
| 1002 | |j| cursor N lines downward |
| 1003 | |k| cursor N lines upward |
| 1004 | |l| cursor N chars to the right |
| 1005 | |m| set mark {A-Za-z} at cursor position |
| 1006 | |n| repeat the latest '/' or '?' N times |
| 1007 | |o| begin a new line below the cursor and insert text |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1008 | {Vi: blank [count] screen lines} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1009 | |p| put the text [from register x] after the cursor N times |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1010 | {Vi: no count} |
| 1011 | |r| replace N chars with {char} {Vi: CTRL-V <CR> still replaces |
| 1012 | with a line break, cannot replace something with a <CR>} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1013 | |s| (substitute) delete N characters [into register x] and start |
| 1014 | insert |
| 1015 | |t| cursor till before Nth occurrence of {char} to the right |
| 1016 | |u| undo changes {Vi: only one level} |
| 1017 | |w| cursor N words forward |
| 1018 | |x| delete N characters under and after the cursor [into register |
| 1019 | x] |
| 1020 | |y| yank Nmove text [into register x] |
| 1021 | |yy| yank N lines [into register x] |
| 1022 | |z<CR>| current line to the top |
| 1023 | |z-| current line to the bottom |
| 1024 | |z+| cursor on line N |
| 1025 | |z^| cursor on line N |
| 1026 | |{| cursor N paragraphs backward |
| 1027 | | cursor to column N |
| 1028 | |}| cursor N paragraphs forward |
| 1029 | |~| switch case of N characters under the cursor; Vim: depends on |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1030 | 'tildeop' {Vi: no count, no 'tildeop'} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1031 | |<Del>| same as "x" |
| 1032 | |
| 1033 | |
| 1034 | The following commands are supported in Insert mode by Vi: ~ |
| 1035 | |
| 1036 | CTRL-@ insert previously inserted text and stop insert |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1037 | {Vi: only when typed as first char, only up to 128 chars} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1038 | CTRL-C quit insert mode, without checking for abbreviation, unless |
| 1039 | 'insertmode' set. |
| 1040 | CTRL-D delete one shiftwidth of indent in the current line |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1041 | {Vi: CTRL-D works only when used after autoindent} |
| 1042 | <BS> delete character before the cursor {Vi: does not delete |
| 1043 | autoindents, does not cross lines, does not delete past start |
| 1044 | position of insert} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1045 | CTRL-H same as <BS> |
| 1046 | <Tab> insert a <Tab> character |
| 1047 | CTRL-I same as <Tab> |
| 1048 | <NL> same as <CR> |
| 1049 | CTRL-J same as <CR> |
| 1050 | <CR> begin new line |
| 1051 | CTRL-M same as <CR> |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1052 | CTRL-T insert one shiftwidth of indent in current line {Vi: only when |
| 1053 | in indent} |
| 1054 | CTRL-V {char} insert next non-digit literally {Vi: no decimal byte entry} |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1055 | CTRL-W delete word before the cursor |
Bram Moolenaar | 68e6560 | 2019-05-26 21:33:31 +0200 | [diff] [blame] | 1056 | CTRL-Z when 'insertmode' set: suspend Vi |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1057 | <Esc> end insert mode (unless 'insertmode' set) |
| 1058 | CTRL-[ same as <Esc> |
| 1059 | 0 CTRL-D delete all indent in the current line |
| 1060 | ^ CTRL-D delete all indent in the current line, restore it in the next |
| 1061 | line |
| 1062 | <Del> delete character under the cursor |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1063 | |
| 1064 | |
| 1065 | The following options are supported by Vi: ~ |
| 1066 | |
| 1067 | 'autoindent' 'ai' take indent for new line from previous line |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1068 | {Vi does this slightly differently: After the |
| 1069 | indent is deleted when typing <Esc> or <CR>, the |
| 1070 | cursor position when moving up or down is after |
| 1071 | the deleted indent; Vi puts the cursor somewhere |
| 1072 | in the deleted indent}. |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1073 | 'autowrite' 'aw' automatically write file if changed |
| 1074 | 'directory' 'dir' list of directory names for the swap file |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1075 | {Vi: directory to put temp file in, defaults to |
| 1076 | "/tmp"} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1077 | 'edcompatible' 'ed' toggle flags of ":substitute" command |
| 1078 | 'errorbells' 'eb' ring the bell for error messages |
| 1079 | 'ignorecase' 'ic' ignore case in search patterns |
| 1080 | 'lines' number of lines in the display |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1081 | 'lisp' automatic indenting for Lisp {Vi: Does it a little |
| 1082 | bit differently} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1083 | 'list' show <Tab> and <EOL> |
| 1084 | 'magic' changes special characters in search patterns |
| 1085 | 'modeline' 'ml' recognize 'modelines' at start or end of file |
| 1086 | {called modelines in some Vi versions} |
| 1087 | 'number' 'nu' print the line number in front of each line |
| 1088 | 'paragraphs' 'para' nroff macros that separate paragraphs |
| 1089 | 'prompt' 'prompt' enable prompt in Ex mode |
| 1090 | 'readonly' 'ro' disallow writing the buffer {Vim sets 'readonly' |
| 1091 | when editing a file with `:view`} |
| 1092 | 'remap' allow mappings to work recursively |
| 1093 | 'report' threshold for reporting nr. of lines changed |
| 1094 | 'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D |
| 1095 | 'sections' 'sect' nroff macros that separate sections |
| 1096 | 'shell' 'sh' name of shell to use for external commands |
| 1097 | 'shiftwidth' 'sw' number of spaces to use for (auto)indent step |
| 1098 | 'showmatch' 'sm' briefly jump to matching bracket if insert one |
| 1099 | 'showmode' 'smd' message on status line to show current mode |
| 1100 | 'tabstop' 'ts' number of spaces that <Tab> in file uses |
| 1101 | 'taglength' 'tl' number of significant characters for a tag |
| 1102 | 'tags' 'tag' list of file names used by the tag command |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1103 | {Vi: default is "tags /usr/lib/tags"} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1104 | 'tagstack' 'tgst' push tags onto the tag stack {not in all versions |
| 1105 | of Vi} |
| 1106 | 'term' name of the terminal |
| 1107 | 'terse' shorten some messages |
| 1108 | 'timeout' 'to' time out on mappings and key codes |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1109 | 'timeoutlen' 'tm' time for 'timeout' {only in some Vi versions} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1110 | 'ttytype' 'tty' alias for 'term' |
| 1111 | 'verbose' 'vbs' give informative messages {only in some Vi |
| 1112 | versions as a boolean option} |
| 1113 | 'warn' warn for shell command when buffer was changed |
| 1114 | 'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1115 | {Vi also uses the option to specify the number of |
| 1116 | displayed lines} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1117 | 'wrapmargin' 'wm' chars from the right where wrapping starts |
Bram Moolenaar | a6c27c4 | 2019-05-09 19:16:22 +0200 | [diff] [blame] | 1118 | {Vi: works differently and less usefully} |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1119 | 'wrapscan' 'ws' searches wrap around the end of the file |
| 1120 | 'writeany' 'wa' write to file with no need for "!" override |
| 1121 | |
| 1122 | Also see |missing-options|. |
| 1123 | |
| 1124 | ============================================================================== |
| 1125 | 7. Command-line arguments *cmdline-arguments* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1126 | |
| 1127 | Different versions of Vi have different command-line arguments. This can be |
| 1128 | confusing. To help you, this section gives an overview of the differences. |
| 1129 | |
| 1130 | Five variants of Vi will be considered here: |
| 1131 | Elvis Elvis version 2.1b |
| 1132 | Nvi Nvi version 1.79 |
| 1133 | Posix Posix 1003.2 |
| 1134 | Vi Vi version 3.7 (for Sun 4.1.x) |
| 1135 | Vile Vile version 7.4 (incomplete) |
| 1136 | Vim Vim version 5.2 |
| 1137 | |
| 1138 | Only Vim is able to accept options in between and after the file names. |
| 1139 | |
| 1140 | +{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". |
| 1141 | |
| 1142 | - Nvi, Posix, Vi: Run Ex in batch mode. |
| 1143 | Vim: Read file from stdin (use -s for batch mode). |
| 1144 | |
| 1145 | -- Vim: End of options, only file names are following. |
| 1146 | |
| 1147 | --cmd {command} Vim: execute {command} before sourcing vimrc files. |
| 1148 | |
| 1149 | --echo-wid Vim: GTK+ echoes the Window ID on stdout |
| 1150 | |
| 1151 | --help Vim: show help message and exit. |
| 1152 | |
| 1153 | --literal Vim: take file names literally, don't expand wildcards. |
| 1154 | |
| 1155 | --nofork Vim: same as |-f| |
| 1156 | |
| 1157 | --noplugin[s] Vim: Skip loading plugins. |
| 1158 | |
| 1159 | --remote Vim: edit the files in another Vim server |
| 1160 | |
| 1161 | --remote-expr {expr} Vim: evaluate {expr} in another Vim server |
| 1162 | |
| 1163 | --remote-send {keys} Vim: send {keys} to a Vim server and exit |
| 1164 | |
| 1165 | --remote-silent {file} Vim: edit the files in another Vim server if possible |
| 1166 | |
| 1167 | --remote-wait Vim: edit the files in another Vim server and wait for it |
| 1168 | |
| 1169 | --remote-wait-silent Vim: like --remote-wait, no complaints if not possible |
| 1170 | |
| 1171 | --role {role} Vim: GTK+ 2: set role of main window |
| 1172 | |
| 1173 | --serverlist Vim: Output a list of Vim servers and exit |
| 1174 | |
| 1175 | --servername {name} Vim: Specify Vim server name |
| 1176 | |
| 1177 | --socketid {id} Vim: GTK window socket to run Vim in |
| 1178 | |
Bram Moolenaar | 78e1762 | 2007-08-30 10:26:19 +0000 | [diff] [blame] | 1179 | --windowid {id} Vim: Win32 window ID to run Vim in |
| 1180 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1181 | --version Vim: show version message and exit. |
| 1182 | |
| 1183 | -? Vile: print usage summary and exit. |
| 1184 | |
| 1185 | -a Elvis: Load all specified file names into a window (use -o for |
| 1186 | Vim). |
| 1187 | |
| 1188 | -A Vim: Start in Arabic mode (when compiled with Arabic). |
| 1189 | |
| 1190 | -b {blksize} Elvis: Use {blksize} blocksize for the session file. |
| 1191 | -b Vim: set 'binary' mode. |
| 1192 | |
| 1193 | -C Vim: Compatible mode. |
| 1194 | |
| 1195 | -c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after |
| 1196 | loading the edit buffer. |
| 1197 | Vim: allow up to 10 "-c" arguments |
| 1198 | |
| 1199 | -d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled |
| 1200 | without the |+diff| feature} |
| 1201 | -d Vim: start with 'diff' set. |vimdiff| |
| 1202 | |
| 1203 | -dev {device} Vim: Use {device} for I/O (Amiga only). |
| 1204 | |
| 1205 | -D Vim: debug mode. |
| 1206 | |
| 1207 | -e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is |
| 1208 | called "ex". |
| 1209 | |
| 1210 | -E Vim: Start in improved Ex mode |gQ|, like "exim". |
| 1211 | |
| 1212 | -f Vim: Run GUI in foreground (Amiga: don't open new window). |
| 1213 | -f {session} Elvis: Use {session} as the session file. |
| 1214 | |
| 1215 | -F Vim: Start in Farsi mode (when compiled with Farsi). |
| 1216 | Nvi: Fast start, don't read the entire file when editing |
| 1217 | starts. |
| 1218 | |
| 1219 | -G {gui} Elvis: Use the {gui} as user interface. |
| 1220 | |
| 1221 | -g Vim: Start GUI. |
| 1222 | -g N Vile: start editing at line N |
| 1223 | |
| 1224 | -h Vim: Give help message. |
| 1225 | Vile: edit the help file |
| 1226 | |
| 1227 | -H Vim: start Hebrew mode (when compiled with it). |
| 1228 | |
| 1229 | -i Elvis: Start each window in Insert mode. |
| 1230 | -i {viminfo} Vim: Use {viminfo} for viminfo file. |
| 1231 | |
Bram Moolenaar | 25c9c68 | 2019-05-05 18:13:34 +0200 | [diff] [blame] | 1232 | -L Vim: Same as "-r" {only in some versions of Vi: "List |
| 1233 | recoverable edit sessions"}. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1234 | |
| 1235 | -l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. |
| 1236 | |
| 1237 | -m Vim: Modifications not allowed to be written, resets 'write' |
| 1238 | option. |
| 1239 | |
| 1240 | -M Vim: Modifications not allowed, resets 'modifiable' and the |
| 1241 | 'write' option. |
| 1242 | |
| 1243 | -N Vim: No-compatible mode. |
| 1244 | |
| 1245 | -n Vim: No swap file used. |
| 1246 | |
| 1247 | -nb[args] Vim: open a NetBeans interface connection |
| 1248 | |
| 1249 | -O[N] Vim: Like -o, but use vertically split windows. |
| 1250 | |
| 1251 | -o[N] Vim: Open [N] windows, or one for each file. |
| 1252 | |
Bram Moolenaar | 18144c8 | 2006-04-12 21:52:12 +0000 | [diff] [blame] | 1253 | -p[N] Vim: Open [N] tab pages, or one for each file. |
| 1254 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1255 | -P {parent-title} Win32 Vim: open Vim inside a parent application window |
| 1256 | |
| 1257 | -q {name} Vim: Use {name} for quickfix error file. |
| 1258 | -q{name} Vim: Idem. |
| 1259 | |
| 1260 | -R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. |
| 1261 | |
| 1262 | -r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. |
| 1263 | |
| 1264 | -S Nvi: Set 'secure' option. |
| 1265 | -S {script} Vim: source script after starting up. |
| 1266 | |
| 1267 | -s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. |
| 1268 | Elvis: Sets the 'safer' option. |
| 1269 | -s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex |
| 1270 | mode. |
| 1271 | -s {pattern} Vile: search for {pattern} |
| 1272 | |
| 1273 | -t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. |
| 1274 | -t{tag} Vim: Idem. |
| 1275 | |
| 1276 | -T {term} Vim: Set terminal name to {term}. |
| 1277 | |
| 1278 | -u {vimrc} Vim: Read initializations from {vimrc} file. |
| 1279 | |
| 1280 | -U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. |
| 1281 | |
| 1282 | -v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi |
| 1283 | terms). |
| 1284 | Vile: View mode, no changes possible. |
| 1285 | |
| 1286 | -V Elvis, Vim: Verbose mode. |
| 1287 | -V{nr} Vim: Verbose mode with specified level. |
| 1288 | |
| 1289 | -w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. |
| 1290 | -w{size} Nvi, Vi: Same as "-w {size}". |
| 1291 | -w {name} Vim: Write to script file {name} (must start with non-digit). |
| 1292 | |
| 1293 | -W {name} Vim: Append to script file {name}. |
| 1294 | |
| 1295 | -x Vi, Vim: Ask for encryption key. See |encryption|. |
| 1296 | |
| 1297 | -X Vim: Don't connect to the X server. |
| 1298 | |
| 1299 | -y Vim: Start in easy mode, like |evim|. |
| 1300 | |
| 1301 | -Z Vim: restricted mode |
| 1302 | |
| 1303 | @{cmdfile} Vile: use {cmdfile} as startup file. |
| 1304 | |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1305 | ============================================================================== |
Bram Moolenaar | 6c60f47 | 2019-04-28 16:00:35 +0200 | [diff] [blame] | 1306 | 8. POSIX compliance *posix* *posix-compliance* |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1307 | |
Bram Moolenaar | dd2a3cd | 2007-05-05 17:10:09 +0000 | [diff] [blame] | 1308 | In 2005 the POSIX test suite was run to check the compatibility of Vim. Most |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1309 | of the test was executed properly. There are the few things where Vim |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 1310 | is not POSIX compliant, even when run in Vi compatibility mode. |
Bram Moolenaar | 38a5563 | 2016-02-15 22:07:32 +0100 | [diff] [blame] | 1311 | *$VIM_POSIX* |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1312 | Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX |
| 1313 | flags when Vim starts up. This makes Vim run as POSIX as it can. That's |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 1314 | a bit different from being Vi compatible. |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1315 | |
Bram Moolenaar | 574ee7b | 2019-11-13 23:04:29 +0100 | [diff] [blame] | 1316 | You can find the Posix specification for Vi here: |
| 1317 | https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html |
| 1318 | And the related Ex specification: |
| 1319 | https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html |
| 1320 | |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1321 | This is where Vim does not behave as POSIX specifies and why: |
| 1322 | |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1323 | *posix-screen-size* |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1324 | The $COLUMNS and $LINES environment variables are ignored by Vim if |
| 1325 | the size can be obtained from the terminal in a more reliable way. |
| 1326 | Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule |
| 1327 | sizes obtained in another way. |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1328 | |
Bram Moolenaar | 4399ef4 | 2005-02-12 14:29:27 +0000 | [diff] [blame] | 1329 | The "{" and "}" commands don't stop at a "{" in the original Vi, but |
| 1330 | POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want |
| 1331 | it the POSIX way. |
| 1332 | |
| 1333 | The "D", "o" and "O" commands accept a count. Also when repeated. |
| 1334 | Add the '#' flag to 'cpoptions' if you want to ignore the count. |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1335 | |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 1336 | The ":cd" command fails if the current buffer is modified when the '.' |
| 1337 | flag is present in 'cpoptions'. |
| 1338 | |
| 1339 | There is no ATTENTION message, the "A" flag is added to 'shortmess'. |
| 1340 | |
| 1341 | These are remarks about running the POSIX test suite: |
| 1342 | - vi test 33 sometimes fails for unknown reasons |
| 1343 | - vi test 250 fails; behavior will be changed in a new revision |
| 1344 | http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html |
Bram Moolenaar | 483c5d8 | 2010-10-20 18:45:33 +0200 | [diff] [blame] | 1345 | (link no longer works, perhaps it's now: |
| 1346 | https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) |
Bram Moolenaar | 6bdcfc0 | 2005-02-22 08:28:13 +0000 | [diff] [blame] | 1347 | - vi test 310 fails; exit code non-zero when any error occurred? |
| 1348 | - ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. |
| 1349 | - ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent |
| 1350 | mode and $EXINIT isn't used. |
| 1351 | - ex tests 76, 78 fail because echo is used instead of printf. (fixed) |
| 1352 | Also: problem with \s not changed to space. |
| 1353 | - ex test 355 fails because 'window' isn't used for "30z". |
| 1354 | - ex test 368 fails because shell command isn't echoed in silent mode. |
| 1355 | - ex test 394 fails because "=" command output isn't visible in silent mode. |
| 1356 | - ex test 411 fails because test file is wrong, contains stray ':'. |
| 1357 | - ex test 475 and 476 fail because reprint output isn't visible in silent mode. |
| 1358 | - ex test 480 and 481 fail because the tags file has spaces instead of a tab. |
| 1359 | - ex test 502 fails because .exrc isn't read in silent mode. |
| 1360 | - ex test 509 fails because .exrc isn't read in silent mode. and exit code is |
| 1361 | 1 instead of 2. |
| 1362 | - ex test 534 fails because .exrc isn't read in silent mode. |
| 1363 | |
Bram Moolenaar | f97ca8f | 2005-02-07 21:49:25 +0000 | [diff] [blame] | 1364 | |
Bram Moolenaar | d473c8c | 2018-08-11 18:00:22 +0200 | [diff] [blame] | 1365 | vim:tw=78:ts=8:noet:ft=help:norl: |