vi_diff.txt (16765B)
1 *vi_diff.txt* Nvim 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar 5 6 7 Differences between Vim and Vi *vi-differences* 8 9 Type |gO| to see the table of contents. 10 11 ============================================================================== 12 1. Limits *limits* 13 14 Vim has only a few limits for the files that can be edited. Vi cannot handle 15 <Nul> characters and characters above 128, has limited line length, many other 16 limits. 17 18 Maximum line length 2147483647 characters 19 Maximum number of lines 2147483647 lines 20 Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is 21 32 bits. Much more for 64 bit longs. Also limited 22 by available disk space for the |swap-file|. 23 *E75* 24 Length of a file path Unix and Win32: 1024 characters, otherwise 256 25 characters (or as much as the system supports). 26 Length of an expanded string option 27 Unix and Win32: 1024 characters, otherwise 256 28 characters 29 Maximum display width Unix and Win32: 1024 characters, otherwise 255 30 characters 31 Maximum lhs of a mapping 50 characters. 32 Number of different highlighting types: over 30000 33 Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 34 bit systems) See also: |v:numbermax|, 35 |v:numbermin| and |v:numbersize| 36 Maximum length of a line in a tags file: 512 bytes. 37 *E1541* 38 Maximum value for |/\U| and |/\%U|: 2147483647 (for 32bit integer). 39 40 Information for undo and text in registers is kept in memory, thus when making 41 (big) changes the amount of (virtual) memory available limits the number of 42 undo levels and the text that can be kept in registers. Other things are also 43 kept in memory: Command-line history, error messages for Quickfix mode, etc. 44 45 ============================================================================== 46 2. The most interesting additions *vim-additions* 47 48 Support for different systems. 49 Vim can be used on: 50 - Modern Unix systems (BSD, Linux, etc.) 51 - Windows (XP SP 2 or greater) 52 - OS X 53 54 Multi level persistent undo. |undo| 55 'u' goes backward in time, 'CTRL-R' goes forward again. Set option 56 'undolevels' to the number of changes to be remembered (default 1000). 57 Set 'undolevels' to 0 for a Vi-compatible one level undo. Set it to 58 -1 for no undo at all. 59 When all changes in a buffer have been undone, the buffer is not 60 considered changed anymore. You can exit it with :q, without <!>. 61 When undoing a few changes and then making a new change Vim will 62 create a branch in the undo tree. This means you can go back to any 63 state of the text, there is no risk of a change causing text to be 64 lost forever. |undo-tree| 65 The undo information is stored in a file when the 'undofile' option is 66 set. This means you can exit Vim, start Vim on a previously edited 67 file and undo changes that were made before exiting Vim. 68 69 Graphical User Interface (GUI). |gui| 70 Included support for GUI: menu's, mouse, scrollbars, etc. You can 71 define your own menus. Better support for CTRL/SHIFT/ALT keys in 72 combination with special keys and mouse. Supported for various 73 platforms such as Win32. 74 75 Multiple windows and buffers. |windows.txt| 76 Vim can split the screen into several windows, each editing a 77 different buffer or the same buffer at a different location. Buffers 78 can still be loaded (and changed) but not displayed in a window. This 79 is called a hidden buffer. Many commands and options have been added 80 for this facility. 81 Vim can also use multiple tab pages, each with one or more windows. A 82 line with tab labels can be used to quickly switch between these 83 pages. 84 |tab-page| 85 86 Syntax highlighting. |:syntax| 87 Vim can highlight keywords, patterns and other things. This is 88 defined by a number of |:syntax| commands, and can be made to 89 highlight most languages and file types. A number of files are 90 included for highlighting the most common languages, like C, C++, 91 Java, Pascal, Makefiles, shell scripts, etc. The colors used for 92 highlighting can be defined for ordinary terminals, color terminals 93 and the GUI with the |:highlight| command. A convenient way to do 94 this is using a |:colorscheme| command. 95 The highlighted text can be exported as HTML. |convert-to-HTML| 96 Other items that can be highlighted are matches with the search string 97 'hlsearch', matching parens |matchparen| and the cursor line and 98 column 'cursorline' 'cursorcolumn'. 99 100 Spell checking. |spell| 101 When the 'spell' option is set Vim will highlight spelling mistakes. 102 About 50 languages are currently supported, selected with the 103 'spelllang' option. In source code only comments and strings are 104 checked for spelling. 105 106 Folding. |folding| 107 A range of lines can be shown as one "folded" line. This allows 108 overviewing a file and moving blocks of text around quickly. 109 Folds can be created manually, from the syntax of the file, by indent, 110 etc. 111 112 Diff mode. |diff-mode| 113 Vim can show two versions of a file with the differences highlighted. 114 Parts of the text that are equal are folded away. Commands can be 115 used to move text from one version to the other. 116 117 Plugins. |add-plugin| 118 The functionality can be extended by dropping a plugin file in the 119 right directory. That's an easy way to start using Vim scripts 120 written by others. Plugins can be for all kind of files, or 121 specifically for a filetype. 122 Packages make this even easier. |packages| 123 124 Asynchronous communication and timers. |job-control| |timer| 125 Vim can exchange messages with other processes in the background. 126 Vim can start a job, communicate with it and stop it. |job-control| 127 Timers can fire once or repeatedly and invoke a function to do any 128 work. |timer| 129 130 Repeat a series of commands. |q| 131 "q{c}" starts recording typed characters into named register {c}. 132 A subsequent "q" stops recording. The register can then be executed 133 with the "@{c}" command. This is very useful to repeat a complex 134 action. 135 136 Flexible insert mode. |ins-special-special| 137 The arrow keys can be used in insert mode to move around in the file. 138 This breaks the insert in two parts as far as undo and redo is 139 concerned. 140 141 CTRL-O can be used to execute a single Normal mode command. This is 142 almost the same as hitting <Esc>, typing the command and doing |a|. 143 144 Visual mode. |Visual-mode| 145 Visual mode can be used to first highlight a piece of text and then 146 give a command to do something with it. This is an (easy to use) 147 alternative to first giving the operator and then moving to the end of 148 the text to be operated upon. 149 |v| and |V| are used to start Visual mode. |v| works on characters 150 and |V| on lines. Move the cursor to extend the Visual area. It is 151 shown highlighted on the screen. By typing "o" the other end of the 152 Visual area can be moved. The Visual area can be affected by an 153 operator: 154 d delete 155 c change 156 y yank 157 > or < insert or delete indent 158 ! filter through external program 159 = filter through indent 160 : start |:| command for the Visual lines. 161 gq format text to 'textwidth' columns 162 J join lines 163 ~ swap case 164 u make lowercase 165 U make uppercase 166 167 Block operators. |visual-block| 168 With Visual mode a rectangular block of text can be selected. Start 169 Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") 170 or its case can be changed ("~", "u" and "U"). A deleted or yanked 171 block can be put into the text with the "p" and "P" commands. 172 173 Help system. |:help| 174 Help is displayed in a window. The usual commands can be used to 175 move around, search for a string, etc. Tags can be used to jump 176 around in the help files, just like hypertext links. The |:help| 177 command takes an argument to quickly jump to the info on a subject. 178 <F1> is the quick access to the help system. The name of the help 179 index file can be set with the 'helpfile' option. 180 181 Command-line editing and history. |cmdline-editing| 182 You can insert or delete at any place in the command-line using the 183 cursor keys. The right/left cursor keys can be used to move 184 forward/backward one character. The shifted right/left cursor keys 185 can be used to move forward/backward one word. CTRL-B/CTRL-E can be 186 used to go to the begin/end of the command-line. 187 (Vi: can only alter the last character in the line) 188 (Vi: when hitting <Esc> the command-line is executed. This is 189 unexpected for most people; therefore it was changed in Vim. But when 190 the <Esc> is part of a mapping, the command-line is executed. If you 191 want the Vi behaviour also when typing <Esc>, use ":cmap ^V<Esc> 192 ^V^M") 193 |cmdline-history| 194 The command-lines are remembered. The up/down cursor keys can be used 195 to recall previous command-lines. The 'history' option can be set to 196 the number of lines that will be remembered. There is a separate 197 history for commands and for search patterns. 198 199 Command-line completion. |cmdline-completion| 200 While entering a command-line (on the bottom line of the screen) 201 <Tab> can be typed to complete 202 what example ~ 203 - command :e<Tab> 204 - tag :ta scr<Tab> 205 - option :set sc<Tab> 206 - option value :set hf=<Tab> 207 - file name :e ve<Tab> 208 - etc. 209 210 If there are multiple matches, CTRL-N (next) and CTRL-P (previous) 211 will walk through the matches. <Tab> works like CTRL-N, but wraps 212 around to the first match. 213 214 The 'wildchar' option can be set to the character for command-line 215 completion, <Tab> is the default. CTRL-D can be typed after an 216 (incomplete) wildcard; all matches will be listed. CTRL-A will insert 217 all matches. CTRL-L will insert the longest common part of the 218 matches. 219 220 Insert-mode completion. |ins-completion| 221 In Insert mode the CTRL-N and CTRL-P keys can be used to complete a 222 word that appears elsewhere. |i_CTRL-N| 223 With CTRL-X another mode is entered, through which completion can be 224 done for: 225 |i_CTRL-X_CTRL-F| file names 226 |i_CTRL-X_CTRL-K| words from 'dictionary' files 227 |i_CTRL-X_CTRL-T| words from 'thesaurus' files 228 |i_CTRL-X_CTRL-I| words from included files 229 |i_CTRL-X_CTRL-L| whole lines 230 |i_CTRL-X_CTRL-]| words from the tags file 231 |i_CTRL-X_CTRL-D| definitions or macros 232 |i_CTRL-X_CTRL-O| Omni completion: clever completion 233 specifically for a file type 234 |i_CTRL-X_CTRL-R| contents from registers 235 etc. 236 237 Long line support. 'wrap' 'linebreak' 238 If the 'wrap' option is off, long lines will not wrap and only part 239 of them will be shown. When the cursor is moved to a part that is not 240 shown, the screen will scroll horizontally. The minimum number of 241 columns to scroll can be set with the 'sidescroll' option. The |zh| 242 and |zl| commands can be used to scroll sideways. 243 Alternatively, long lines are broken in between words when the 244 'linebreak' option is set. This allows editing a single-line 245 paragraph conveniently (e.g. when the text is later read into a DTP 246 program). Move the cursor up/down with the |gk| and |gj| commands. 247 248 Text formatting. |formatting| 249 The 'textwidth' option can be used to automatically limit the line 250 length. This supplements the 'wrapmargin' option of Vi, which was not 251 very useful. The |gq| operator can be used to format a piece of text 252 (for example, |gqap| formats the current paragraph). Commands for 253 text alignment: |:center|, |:left| and |:right|. 254 255 Extended search patterns. |pattern| 256 There are many extra items to match various text items. Examples: 257 A "\n" can be used in a search pattern to match a line break. 258 "x\{2,4}" matches "x" 2 to 4 times. 259 "\s" matches a white space character. 260 261 Directory, remote and archive browsing. |netrw| 262 Vim can browse the file system. Simply edit a directory. Move around 263 in the list with the usual commands and press <Enter> to go to the 264 directory or file under the cursor. 265 This also works for remote files over ftp, http, ssh, etc. 266 Zip and tar archives can also be browsed. |tar| |zip| 267 268 Edit-compile-edit speedup. |quickfix| 269 The |:make| command can be used to run the compilation and jump to the 270 first error. A file with compiler error messages is interpreted. Vim 271 jumps to the first error. 272 273 Each line in the error file is scanned for the name of a file, line 274 number and error message. The 'errorformat' option can be set to a 275 list of scanf-like strings to handle output from many compilers. 276 277 The |:cn| command can be used to jump to the next error. 278 |:cl| lists all the error messages. Other commands are available. 279 The 'makeef' option has the name of the file with error messages. 280 The 'makeprg' option contains the name of the program to be executed 281 with the |:make| command. 282 The 'shellpipe' option contains the string to be used to put the 283 output of the compiler into the errorfile. 284 285 Finding matches in files. |:vimgrep| 286 Vim can search for a pattern in multiple files. This uses the 287 advanced Vim regexp pattern, works on all systems and also works to 288 search in compressed files. 289 290 Improved indenting for programs. 'cindent' 291 When the 'cindent' option is on the indent of each line is 292 automatically adjusted. C syntax is mostly recognized. The indent 293 for various styles can be set with 'cinoptions'. The keys to trigger 294 indenting can be set with 'cinkeys'. 295 296 Comments can be automatically formatted. The 'comments' option can be 297 set to the characters that start and end a comment. This works best 298 for C code, but also works for e-mail (">" at start of the line) and 299 other types of text. The |=| operator can be used to re-indent 300 lines. 301 302 For many other languages an indent plugin is present to support 303 automatic indenting. |30.3| 304 305 Searching for words in included files. |include-search| 306 The |[i| command can be used to search for a match of the word under 307 the cursor in the current and included files. The 'include' option 308 can be set to a pattern that describes a command to include a file 309 (the default is for C programs). 310 The |[I| command lists all matches, the |[_CTRL-I| command jumps to 311 a match. 312 The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for 313 lines where the pattern given with the 'define' option matches. 314 315 Automatic commands. |autocommand| 316 Commands can be automatically executed when reading a file, writing a 317 file, jumping to another buffer, etc., depending on the file name. 318 This is useful to set options and mappings for C programs, 319 documentation, plain text, e-mail, etc. This also makes it possible 320 to edit compressed files. 321 322 Scripts and Expressions. |expression| 323 Commands have been added to form up a powerful script language. 324 |:if| Conditional execution, which can be used for example 325 to set options depending on the value of $TERM. 326 |:while| Repeat a number of commands. 327 |:for| Loop over a list. 328 |:echo| Print the result of an expression. 329 |:let| Assign a value to an internal variable, option, etc. 330 Variable types are Number, String, List and Dictionary. 331 |:execute| Execute a command formed by an expression. 332 |:try| Catch exceptions. 333 etc., etc. See |eval|. 334 Debugging and profiling are supported. |debug-scripts| |profile| 335 If this is not enough, an interface is provided to |Python|. 336 337 Viminfo. 338 The command-line history, marks and registers can be stored in a file 339 that is read on startup. This can be used to repeat a search command 340 or command-line command after exiting and restarting Vim. It is also 341 possible to jump right back to where the last edit stopped with |'0|. 342 The 'viminfo' option can be set to select which items to store in the 343 .viminfo file. This is off by default. 344 345 Mouse support. |mouse-using| 346 The mouse is supported in the GUI version, in an xterm for Unix, for 347 BSDs with sysmouse, for Linux with gpm, and for Win32. It can be used 348 to position the cursor, select the visual area, paste a register, etc. 349 350 Usage of key names. |<>| |key-notation| 351 Special keys now all have a name like <Up>, <End>, etc. 352 This name can be used in mappings, to make it easy to edit them. 353 354 Editing binary files. |edit-binary| 355 Vim can edit binary files. You can change a few characters in an 356 executable file, without corrupting it. Vim doesn't remove NUL 357 characters (they are represented as <NL> internally). 358 |-b| command-line argument to start editing a binary file 359 'binary' Option set by |-b|. Prevents adding an <EOL> for the 360 last line in the file. 361 362 Multi-language support. |multi-lang| 363 Files in double-byte or multibyte encodings can be edited. There is 364 UTF-8 support to be able to edit various languages at the same time, 365 without switching fonts. |UTF-8| 366 Messages and menus are available in different languages. 367 368 Move cursor beyond lines. 369 When the 'virtualedit' option is set the cursor can move all over the 370 screen, also where there is no text. This is useful to edit tables 371 and figures easily. 372 373 374 vim:tw=78:ts=8:noet:ft=help:norl: