home *** CD-ROM | disk | FTP | other *** search
Text File | 2012-05-31 | 42.2 KB | 1,013 lines |
- *vi_diff.txt* For Vim version 7.3. Last change: 2011 Aug 29
-
-
- VIM REFERENCE MANUAL by Bram Moolenaar
-
-
- Differences between Vim and Vi *vi-differences*
-
- Throughout the help files differences between Vim and Vi/Ex are given in
- curly braces, like "{not in Vi}". This file only lists what has not been
- mentioned in other files and gives an overview.
-
- Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing
- is ":open". There are probably a lot of small differences (either because Vim
- is missing something or because Posix is beside the mark).
-
- 1. Simulated command |simulated-command|
- 2. Missing options |missing-options|
- 3. Limits |limits|
- 4. The most interesting additions |vim-additions|
- 5. Other vim features |other-features|
- 6. Command-line arguments |cmdline-arguments|
- 7. POSIX compliance |posix-compliance|
-
- ==============================================================================
- 1. Simulated command *simulated-command*
-
- This command is in Vi, but Vim only simulates it:
-
- *:o* *:op* *:open*
- :[range]o[pen] Works like |:visual|: end Ex mode.
- {Vi: start editing in open mode}
-
- :[range]o[pen] /pattern/ As above, additionally move the cursor to the
- column where "pattern" matches in the cursor
- line.
-
- Vim does not support open mode, since it's not really useful. For those
- situations where ":open" would start open mode Vim will leave Ex mode, which
- allows executing the same commands, but updates the whole screen instead of
- only one line.
-
- ==============================================================================
- 2. Missing options *missing-options*
-
- These options are in the Unix Vi, but not in Vim. If you try to set one of
- them you won't get an error message, but the value is not used and cannot be
- printed.
-
- autoprint (ap) boolean (default on) *'autoprint'* *'ap'*
- beautify (bf) boolean (default off) *'beautify'* *'bf'*
- flash (fl) boolean (default ??) *'flash'* *'fl'*
- graphic (gr) boolean (default off) *'graphic'* *'gr'*
- hardtabs (ht) number (default 8) *'hardtabs'* *'ht'*
- number of spaces that a <Tab> moves on the display
- mesg boolean (default on) *'mesg'*
- novice boolean (default off) *'novice'*
- open boolean (default on) *'open'*
- optimize (op) boolean (default off) *'optimize'* *'op'*
- redraw boolean (default off) *'redraw'*
- slowopen (slow) boolean (default off) *'slowopen'* *'slow'*
- sourceany boolean (default off) *'sourceany'*
- w300 number (default 23) *'w300'*
- w1200 number (default 23) *'w1200'*
- w9600 number (default 23) *'w9600'*
-
- ==============================================================================
- 3. Limits *limits*
-
- Vim has only a few limits for the files that can be edited {Vi: can not handle
- <Nul> characters and characters above 128, has limited line length, many other
- limits}.
- *E340*
- Maximum line length On machines with 16-bit ints (Amiga and MS-DOS real
- mode): 32767, otherwise 2147483647 characters.
- Longer lines are split.
- Maximum number of lines 2147483647 lines.
- Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is
- 32 bits. Much more for 64 bit longs. Also limited
- by available disk space for the |swap-file|.
- *E75*
- Length of a file path Unix and Win32: 1024 characters, otherwise 256
- characters (or as much as the system supports).
- Length of an expanded string option
- Unix and Win32: 1024 characters, otherwise 256
- characters
- Maximum display width Unix and Win32: 1024 characters, otherwise 255
- characters
- Maximum lhs of a mapping 50 characters.
- Number of different highlighting types: over 30000
- Range of a Number variable: -2147483648 to 2147483647 (might be more on 64
- bit systems)
- Maximum length of a line in a tags file: 512 bytes.
-
- Information for undo and text in registers is kept in memory, thus when making
- (big) changes the amount of (virtual) memory available limits the number of
- undo levels and the text that can be kept in registers. Other things are also
- kept in memory: Command-line history, error messages for Quickfix mode, etc.
-
- Memory usage limits
- -------------------
-
- The option 'maxmem' ('mm') is used to set the maximum memory used for one
- buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for
- all buffers (in kilobytes). The defaults depend on the system used. For the
- Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory
- available.
- These are not hard limits, but tell Vim when to move text into a swap file.
- If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a
- very large value. The swap file will then only be used for recovery. If you
- don't want a swap file at all, set 'updatecount' to 0, or use the "-n"
- argument when starting Vim.
-
- ==============================================================================
- 4. The most interesting additions *vim-additions*
-
- Vi compatibility. |'compatible'|
- Although Vim is 99% Vi compatible, some things in Vi can be
- considered to be a bug, or at least need improvement. But still, Vim
- starts in a mode which behaves like the "real" Vi as much as possible.
- To make Vim behave a little bit better, try resetting the 'compatible'
- option:
- :set nocompatible
- Or start Vim with the "-N" argument:
- vim -N
- Vim starts with 'nocompatible' automatically if you have a .vimrc
- file. See |startup|.
- The 'cpoptions' option can be used to set Vi compatibility on/off for
- a number of specific items.
-
- Support for different systems.
- Vim can be used on:
- - All Unix systems (it works on all systems it was tested on, although
- the GUI and Perl interface may not work everywhere).
- - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
- - MS-DOS in real-mode (no additional drivers required).
- - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
- - Windows 95 and Windows NT, with support for long file names.
- - OS/2 (needs emx.dll)
- - Atari MiNT
- - VMS
- - BeOS
- - Macintosh
- - Risc OS
- - IBM OS/390
- Note that on some systems features need to be disabled to reduce
- resource usage, esp. on MS-DOS. For some outdated systems you need to
- use an older Vim version.
-
- Multi level undo. |undo|
- 'u' goes backward in time, 'CTRL-R' goes forward again. Set option
- 'undolevels' to the number of changes to be remembered (default 1000).
- Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to
- -1 for no undo at all.
- When all changes in a buffer have been undone, the buffer is not
- considered changed anymore. You can exit it with :q, without <!>.
- When undoing a few changes and then making a new change Vim will
- create a branch in the undo tree. This means you can go back to any
- state of the text, there is no risk of a change causing text to be
- lost forever. |undo-tree|
-
- Graphical User Interface (GUI). |gui|
- Included support for GUI: menu's, mouse, scrollbars, etc. You can
- define your own menus. Better support for CTRL/SHIFT/ALT keys in
- combination with special keys and mouse. Supported for various
- platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32
- (Windows 95 and later), BeOS, Amiga and Macintosh.
-
- Multiple windows and buffers. |windows.txt|
- Vim can split the screen into several windows, each editing a
- different buffer or the same buffer at a different location. Buffers
- can still be loaded (and changed) but not displayed in a window. This
- is called a hidden buffer. Many commands and options have been added
- for this facility.
- Vim can also use multiple tab pages, each with one or more windows. A
- line with tab labels can be used to quickly switch between these pages.
- |tab-page|
-
- Syntax highlighting. |:syntax|
- Vim can highlight keywords, patterns and other things. This is
- defined by a number of |:syntax| commands, and can be made to
- highlight most languages and file types. A number of files are
- included for highlighting the most common languages, like C, C++,
- Java, Pascal, Makefiles, shell scripts, etc. The colors used for
- highlighting can be defined for ordinary terminals, color terminals
- and the GUI with the |:highlight| command. A convenient way to do
- this is using a |:colorscheme| command.
- The highlighted text can be exported as HTML. |convert-to-HTML|
- Other items that can be highlighted are matches with the search string
- |'hlsearch'|, matching parens |matchparen| and the cursor line and
- column |'cursorline'| |'cursorcolumn'|.
-
- Spell checking. |spell|
- When the 'spell' option is set Vim will highlight spelling mistakes.
- About 40 languages are currently supported, selected with the
- 'spelllang' option. In source code only comments and strings are
- checked for spelling.
-
- Folding. |folding|
- A range of lines can be shown as one "folded" line. This allows
- overviewing a file and moving blocks of text around quickly.
- Folds can be created manually, from the syntax of the file, by indent,
- etc.
-
- Diff mode. |diff|
- Vim can show two versions of a file with the differences highlighted.
- Parts of the text that are equal are folded away. Commands can be
- used to move text from one version to the other.
-
- Plugins. |add-plugin|
- The functionality can be extended by dropping a plugin file in the
- right directory. That's an easy way to start using Vim scripts
- written by others. Plugins can be for all kind of files, or
- specifically for a filetype.
-
- Repeat a series of commands. |q|
- "q{c}" starts recording typed characters into named register {c}.
- A subsequent "q" stops recording. The register can then be executed
- with the "@{c}" command. This is very useful to repeat a complex
- action.
-
- Flexible insert mode. |ins-special-special|
- The arrow keys can be used in insert mode to move around in the file.
- This breaks the insert in two parts as far as undo and redo is
- concerned.
-
- CTRL-O can be used to execute a single Normal mode command. This is
- almost the same as hitting <Esc>, typing the command and doing |a|.
-
- Visual mode. |Visual-mode|
- Visual mode can be used to first highlight a piece of text and then
- give a command to do something with it. This is an (easy to use)
- alternative to first giving the operator and then moving to the end of
- the text to be operated upon.
- |v| and |V| are used to start Visual mode. |v| works on characters
- and |V| on lines. Move the cursor to extend the Visual area. It is
- shown highlighted on the screen. By typing "o" the other end of the
- Visual area can be moved. The Visual area can be affected by an
- operator:
- d delete
- c change
- y yank
- > or < insert or delete indent
- ! filter through external program
- = filter through indent
- : start |:| command for the Visual lines.
- gq format text to 'textwidth' columns
- J join lines
- ~ swap case
- u make lowercase
- U make uppercase
-
- Block operators. |visual-block|
- With Visual mode a rectangular block of text can be selected. Start
- Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y")
- or its case can be changed ("~", "u" and "U"). A deleted or yanked
- block can be put into the text with the "p" and "P" commands.
-
- Help system. |:help|
- Help is displayed in a window. The usual commands can be used to
- move around, search for a string, etc. Tags can be used to jump
- around in the help files, just like hypertext links. The |:help|
- command takes an argument to quickly jump to the info on a subject.
- <F1> is the quick access to the help system. The name of the help
- index file can be set with the 'helpfile' option.
-
- Command-line editing and history. |cmdline-editing|
- You can insert or delete at any place in the command-line using the
- cursor keys. The right/left cursor keys can be used to move
- forward/backward one character. The shifted right/left cursor keys
- can be used to move forward/backward one word. CTRL-B/CTRL-E can be
- used to go to the begin/end of the command-line.
- |cmdline-history|
- The command-lines are remembered. The up/down cursor keys can be used
- to recall previous command-lines. The 'history' option can be set to
- the number of lines that will be remembered. There is a separate
- history for commands and for search patterns.
-
- Command-line completion. |cmdline-completion|
- While entering a command-line (on the bottom line of the screen)
- <Tab> can be typed to complete
- what example ~
- - command :e<Tab>
- - tag :ta scr<Tab>
- - option :set sc<Tab>
- - option value :set hf=<Tab>
- - file name :e ve<Tab>
- - etc.
-
- If there are multiple matches, CTRL-N (next) and CTRL-P (previous)
- will walk through the matches. <Tab> works like CTRL-N, but wraps
- around to the first match.
-
- The 'wildchar' option can be set to the character for command-line
- completion, <Tab> is the default. CTRL-D can be typed after an
- (incomplete) wildcard; all matches will be listed. CTRL-A will insert
- all matches. CTRL-L will insert the longest common part of the
- matches.
-
- Insert-mode completion. |ins-completion|
- In Insert mode the CTRL-N and CTRL-P keys can be used to complete a
- word that appears elsewhere. |i_CTRL-N|
- With CTRL-X another mode is entered, through which completion can be
- done for:
- |i_CTRL-X_CTRL-F| file names
- |i_CTRL-X_CTRL-K| words from 'dictionary' files
- |i_CTRL-X_CTRL-T| words from 'thesaurus' files
- |i_CTRL-X_CTRL-I| words from included files
- |i_CTRL-X_CTRL-L| whole lines
- |i_CTRL-X_CTRL-]| words from the tags file
- |i_CTRL-X_CTRL-D| definitions or macros
- |i_CTRL-X_CTRL-O| Omni completion: clever completion
- specifically for a file type
- etc.
-
- Long line support. |'wrap'| |'linebreak'|
- If the 'wrap' option is off, long lines will not wrap and only part
- of them will be shown. When the cursor is moved to a part that is not
- shown, the screen will scroll horizontally. The minimum number of
- columns to scroll can be set with the 'sidescroll' option. The |zh|
- and |zl| commands can be used to scroll sideways.
- Alternatively, long lines are broken in between words when the
- 'linebreak' option is set. This allows editing a single-line
- paragraph conveniently (e.g. when the text is later read into a DTP
- program). Move the cursor up/down with the |gk| and |gj| commands.
-
- Text formatting. |formatting|
- The 'textwidth' option can be used to automatically limit the line
- length. This supplements the 'wrapmargin' option of Vi, which was not
- very useful. The |gq| operator can be used to format a piece of text
- (for example, |gqap| formats the current paragraph). Commands for
- text alignment: |:center|, |:left| and |:right|.
-
- Extended search patterns. |pattern|
- There are many extra items to match various text items. Examples:
- A "\n" can be used in a search pattern to match a line break.
- "x\{2,4}" matches "x" 2 to 4 times.
- "\s" matches a white space character.
-
- Directory, remote and archive browsing. |netrw|
- Vim can browse the file system. Simply edit a directory. Move around
- in the list with the usual commands and press <Enter> to go to the
- directory or file under the cursor.
- This also works for remote files over ftp, http, ssh, etc.
- Zip and tar archives can also be browsed. |tar| |zip|
-
- Edit-compile-edit speedup. |quickfix|
- The |:make| command can be used to run the compilation and jump to the
- first error. A file with compiler error messages is interpreted. Vim
- jumps to the first error.
-
- Each line in the error file is scanned for the name of a file, line
- number and error message. The 'errorformat' option can be set to a
- list of scanf-like strings to handle output from many compilers.
-
- The |:cn| command can be used to jump to the next error.
- |:cl| lists all the error messages. Other commands are available.
- The 'makeef' option has the name of the file with error messages.
- The 'makeprg' option contains the name of the program to be executed
- with the |:make| command.
- The 'shellpipe' option contains the string to be used to put the
- output of the compiler into the errorfile.
-
- Finding matches in files. |:vimgrep|
- Vim can search for a pattern in multiple files. This uses the
- advanced Vim regexp pattern, works on all systems and also works to
- search in compressed files.
-
- Improved indenting for programs. |'cindent'|
- When the 'cindent' option is on the indent of each line is
- automatically adjusted. C syntax is mostly recognized. The indent
- for various styles can be set with 'cinoptions'. The keys to trigger
- indenting can be set with 'cinkeys'.
-
- Comments can be automatically formatted. The 'comments' option can be
- set to the characters that start and end a comment. This works best
- for C code, but also works for e-mail (">" at start of the line) and
- other types of text. The |=| operator can be used to re-indent
- lines.
-
- For many other languages an indent plugin is present to support
- automatic indenting. |30.3|
-
- Searching for words in included files. |include-search|
- The |[i| command can be used to search for a match of the word under
- the cursor in the current and included files. The 'include' option
- can be set to a pattern that describes a command to include a file
- (the default is for C programs).
- The |[I| command lists all matches, the |[_CTRL-I| command jumps to
- a match.
- The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for
- lines where the pattern given with the 'define' option matches.
-
- Automatic commands. |autocommand|
- Commands can be automatically executed when reading a file, writing a
- file, jumping to another buffer, etc., depending on the file name.
- This is useful to set options and mappings for C programs,
- documentation, plain text, e-mail, etc. This also makes it possible
- to edit compressed files.
-
- Scripts and Expressions. |expression|
- Commands have been added to form up a powerful script language.
- |:if| Conditional execution, which can be used for example
- to set options depending on the value of $TERM.
- |:while| Repeat a number of commands.
- |:for| Loop over a list.
- |:echo| Print the result of an expression.
- |:let| Assign a value to an internal variable, option, etc.
- Variable types are Number, String, List and Dictionary.
- |:execute| Execute a command formed by an expression.
- |:try| Catch exceptions.
- etc., etc. See |eval|.
- Debugging and profiling are supported. |debug-scripts| |profile|
- If this is not enough, an interface is provided to |Python|, |Ruby|,
- |Tcl|, |Lua|, |Perl| and |MzScheme|.
-
- Viminfo. |viminfo-file|
- The command-line history, marks and registers can be stored in a file
- that is read on startup. This can be used to repeat a search command
- or command-line command after exiting and restarting Vim. It is also
- possible to jump right back to where the last edit stopped with |'0|.
- The 'viminfo' option can be set to select which items to store in the
- .viminfo file. This is off by default.
-
- Printing. |printing|
- The |:hardcopy| command sends text to the printer. This can include
- syntax highlighting.
-
- Mouse support. |mouse-using|
- The mouse is supported in the GUI version, in an xterm for Unix, for
- BSDs with sysmouse, for Linux with gpm, for MS-DOS, and Win32. It
- can be used to position the cursor, select the visual area, paste a
- register, etc.
-
- Usage of key names. |<>| |key-notation|
- Special keys now all have a name like <Up>, <End>, etc.
- This name can be used in mappings, to make it easy to edit them.
-
- Editing binary files. |edit-binary|
- Vim can edit binary files. You can change a few characters in an
- executable file, without corrupting it. Vim doesn't remove NUL
- characters (they are represented as <NL> internally).
- |-b| command-line argument to start editing a binary file
- |'binary'| Option set by |-b|. Prevents adding an <EOL> for the
- last line in the file.
-
- Multi-language support. |multi-lang|
- Files in double-byte or multi-byte encodings can be edited. There is
- UTF-8 support to be able to edit various languages at the same time,
- without switching fonts. |UTF-8|
- Messages and menus are available in different languages.
-
- Move cursor beyond lines.
- When the 'virtualedit' option is set the cursor can move all over the
- screen, also where there is no text. This is useful to edit tables
- and figures easily.
-
- ==============================================================================
- 5. Other vim features *other-features*
-
- A random collection of nice extra features.
-
-
- When Vim is started with "-s scriptfile", the characters read from
- "scriptfile" are treated as if you typed them. If end of file is reached
- before the editor exits, further characters are read from the console.
-
- The "-w" option can be used to record all typed characters in a script file.
- This file can then be used to redo the editing, possibly on another file or
- after changing some commands in the script file.
-
- The "-o" option opens a window for each argument. "-o4" opens four windows.
-
- Vi requires several termcap entries to be able to work full-screen. Vim only
- requires the "cm" entry (cursor motion).
-
-
- In command mode:
-
- When the 'showcmd' option is set, the command characters are shown in the last
- line of the screen. They are removed when the command is finished.
-
- If the 'ruler' option is set, the current cursor position is shown in the
- last line of the screen.
-
- "U" still works after having moved off the last changed line and after "u".
-
- Characters with the 8th bit set are displayed. The characters between '~' and
- 0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the
- 'isprint' option.
-
- "][" goes to the next ending of a C function ('}' in column 1).
- "[]" goes to the previous ending of a C function ('}' in column 1).
-
- "]f", "[f" and "gf" start editing the file whose name is under the cursor.
- CTRL-W f splits the window and starts editing the file whose name is under
- the cursor.
-
- "*" searches forward for the identifier under the cursor, "#" backward.
- "K" runs the program defined by the 'keywordprg' option, with the identifier
- under the cursor as argument.
-
- "%" can be preceded with a count. The cursor jumps to the line that
- percentage down in the file. The normal "%" function to jump to the matching
- brace skips braces inside quotes.
-
- With the CTRL-] command, the cursor may be in the middle of the identifier.
-
- The used tags are remembered. Commands that can be used with the tag stack
- are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack.
-
- The 'tags' option can be set to a list of tag file names. Thus multiple
- tag files can be used. For file names that start with "./", the "./" is
- replaced with the path of the current file. This makes it possible to use a
- tags file in the same directory as the file being edited.
-
- Previously used file names are remembered in the alternate file name list.
- CTRL-^ accepts a count, which is an index in this list.
- ":files" command shows the list of alternate file names.
- "#<N>" is replaced with the <N>th alternate file name in the list.
- "#<" is replaced with the current file name without extension.
-
- Search patterns have more features. The <NL> character is seen as part of the
- search pattern and the substitute string of ":s". Vi sees it as the end of
- the command.
-
- Searches can put the cursor on the end of a match and may include a character
- offset.
-
- Count added to "~", ":next", ":Next", "n" and "N".
-
- The command ":next!" with 'autowrite' set does not write the file. In vi the
- file was written, but this is considered to be a bug, because one does not
- expect it and the file is not written with ":rewind!".
-
- In Vi when entering a <CR> in replace mode deletes a character only when 'ai'
- is set (but does not show it until you hit <Esc>). Vim always deletes a
- character (and shows it immediately).
-
- Added :wnext command. Same as ":write" followed by ":next".
-
- The ":w!" command always writes, also when the file is write protected. In Vi
- you would have to do ":!chmod +w %" and ":set noro".
-
- When 'tildeop' has been set, "~" is an operator (must be followed by a
- movement command).
-
- With the "J" (join) command you can reset the 'joinspaces' option to have only
- one space after a period (Vi inserts two spaces).
-
- "cw" can be used to change white space formed by several characters (Vi is
- confusing: "cw" only changes one space, while "dw" deletes all white space).
-
- "o" and "O" accept a count for repeating the insert (Vi clears a part of
- display).
-
- Flags after Ex commands not supported (no plans to include it).
-
- On non-UNIX systems ":cd" command shows current directory instead of going to
- the home directory (there isn't one). ":pwd" prints the current directory on
- all systems.
-
- After a ":cd" command the file names (in the argument list, opened files)
- still point to the same files. In Vi ":cd" is not allowed in a changed file;
- otherwise the meaning of file names change.
-
- ":source!" command reads Vi commands from a file.
-
- ":mkexrc" command writes current modified options and mappings to a ".exrc"
- file. ":mkvimrc" writes to a ".vimrc" file.
-
- No check for "tail recursion" with mappings. This allows things like
- ":map! foo ^]foo".
-
- When a mapping starts with number, vi loses the count typed before it (e.g.
- when using the mapping ":map g 4G" the command "7g" goes to line 4). This is
- considered a vi bug. Vim concatenates the counts (in the example it becomes
- "74G"), as most people would expect.
-
- The :put! command inserts the contents of a register above the current line.
-
- The "p" and "P" commands of vi cannot be repeated with "." when the putted
- text is less than a line. In Vim they can always be repeated.
-
- ":noremap" command can be used to enter a mapping that will not be remapped.
- This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and
- ":cnoremap" can be used for mapping in command-line editing only. ":imap",
- ":iunmap" and ":inoremap" can be used for mapping in insert mode only.
- Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev"
- ":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev".
-
- In Vi the command ":map foo bar" would remove a previous mapping
- ":map bug foo". This is considered a bug, so it is not included in Vim.
- ":unmap! foo" does remove ":map! bug foo", because unmapping would be very
- difficult otherwise (this is vi compatible).
-
- The ':' register contains the last command-line.
- The '%' register contains the current file name.
- The '.' register contains the last inserted text.
-
- ":dis" command shows the contents of the yank registers.
-
- CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the
- same positions as used with the '' command, but may be in another file. The
- ":jumps" command lists the older positions.
-
- If the 'shiftround' option is set, an indent is rounded to a multiple of
- 'shiftwidth' with ">" and "<" commands.
-
- The 'scrolljump' option can be set to the minimum number of lines to scroll
- when the cursor gets off the screen. Use this when scrolling is slow.
-
- The 'scrolloff' option can be set to the minimum number of lines to keep
- above and below the cursor. This gives some context to where you are
- editing. When set to a large number the cursor line is always in the middle
- of the window.
-
- Uppercase marks can be used to jump between files. The ":marks" command lists
- all currently set marks. The commands "']" and "`]" jump to the end of the
- previous operator or end of the text inserted with the put command. "'[" and
- "`[" do jump to the start.
-
- The 'shelltype' option can be set to reflect the type of shell used on the
- Amiga.
-
- The 'highlight' option can be set for the highlight mode to be used for
- several commands.
-
- The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the
- command (default 1) is added to/subtracted from the number at or after the
- cursor. That number may be decimal, octal (starts with a '0') or hexadecimal
- (starts with '0x'). Very useful in macros.
-
- With the :set command the prefix "inv" can be used to invert boolean options.
-
- In both Vi and Vim you can create a line break with the ":substitute" command
- by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the
- text. With Vim you can put a real CTRL-M in the text by preceding it with a
- CTRL-V.
-
-
- In Insert mode:
-
- If the 'revins' option is set, insert happens backwards. This is for typing
- Hebrew. When inserting normal characters the cursor will not be shifted and
- the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in
- the opposite direction. CTRL-B toggles the 'revins' option. In replace mode
- 'revins' has no effect. Only when enabled at compile time.
-
- The backspace key can be used just like CTRL-D to remove auto-indents.
-
- You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs)
- option includes "eol". You can backspace over the start of insert if the
- 'backspace' option includes "start".
-
- When the 'paste' option is set, a few option are reset and mapping in insert
- mode and abbreviation are disabled. This allows for pasting text in windowing
- systems without unexpected results. When the 'paste' option is reset, the old
- option values are restored.
-
- CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter
- what column the cursor is in.
-
- CTRL-@ (insert previously inserted text) works always (Vi: only when typed as
- first character).
-
- CTRL-A works like CTRL-@ but does not leave insert mode.
-
- CTRL-R {0-9a-z..} can be used to insert the contents of a register.
-
- When the 'smartindent' option is set, C programs will be better auto-indented.
- With 'cindent' even more.
-
- CTRL-Y and CTRL-E can be used to copy a character from above/below the
- current cursor position.
-
- After CTRL-V you can enter a three digit decimal number. This byte value is
- inserted in the text as a single character. Useful for international
- characters that are not on your keyboard.
-
- When the 'expandtab' (et) option is set, a <Tab> is expanded to the
- appropriate number of spaces.
-
- The window always reflects the contents of the buffer (Vi does not do this
- when changing text and in some other cases).
-
- If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of
- normal digraphs is included. They are shown with the ":digraph" command.
- More can be added with ":digraph {char1}{char2} {number}". A digraph is
- entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when
- 'digraph' option is set).
-
- When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin
- for the first insert. Vim does it for all.
-
- A count to the "i" or "a" command is used for all the text. Vi uses the count
- only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi
- but "abc<NL>defabc<NL>defabc<NL>def" in Vim.
-
-
- In Command-line mode:
-
- <Esc> terminates the command-line without executing it. In vi the command
- line would be executed, which is not what most people expect (hitting <Esc>
- should always get you back to command mode). To avoid problems with some
- obscure macros, an <Esc> in a macro will execute the command. If you want a
- typed <Esc> to execute the command like vi does you can fix this with
- ":cmap ^V<Esc> ^V<CR>"
-
- General:
-
- The 'ttimeout' option is like 'timeout', but only works for cursor and
- function keys, not for ordinary mapped characters. The 'timeoutlen' option
- gives the number of milliseconds that is waited for. If the 'esckeys' option
- is not set, cursor and function keys that start with <Esc> are not recognized
- in insert mode.
-
- There is an option for each terminal string. Can be used when termcap is not
- supported or to change individual strings.
-
- The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix"
- <NL> or "mac" <CR>.
- When the 'fileformats' option is not empty, Vim tries to detect the type of
- <EOL> automatically. The 'fileformat' option is set accordingly.
-
- On systems that have no job control (older Unix systems and non-Unix systems)
- the CTRL-Z, ":stop" or ":suspend" command starts a new shell.
-
- If Vim is started on the Amiga without an interactive window for output, a
- window is opened (and :sh still works). You can give a device to use for
- editing with the |-d| argument, e.g. "-d con:20/20/600/150".
-
- The 'columns' and 'lines' options are used to set or get the width and height
- of the display.
-
- Option settings are read from the first and last few lines of the file.
- Option 'modelines' determines how many lines are tried (default is 5). Note
- that this is different from the Vi versions that can execute any Ex command
- in a modeline (a major security problem). |trojan-horse|
-
- If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode.
- And it comes back there, when pressing <Esc>.
-
- Undo information is kept in memory. Available memory limits the number and
- size of change that can be undone. This may be a problem with MS-DOS, is
- hardly a problem on the Amiga and almost never with Unix and Win32.
-
- If the 'backup' or 'writebackup' option is set: Before a file is overwritten,
- a backup file (.bak) is made. If the "backup" option is set it is left
- behind.
-
- Vim creates a file ending in ".swp" to store parts of the file that have been
- changed or that do not fit in memory. This file can be used to recover from
- an aborted editing session with "vim -r file". Using the swap file can be
- switched off by setting the 'updatecount' option to 0 or starting Vim with
- the "-n" option. Use the 'directory' option for placing the .swp file
- somewhere else.
-
- Vim is able to work correctly on filesystems with 8.3 file names, also when
- using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted
- filesystem under Unix. See |'shortname'|.
-
- Error messages are shown at least one second (Vi overwrites error messages).
-
- If Vim gives the |hit-enter| prompt, you can hit any key. Characters other
- than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi
- only accepts a command starting with ':').
-
- The contents of the numbered and unnamed registers is remembered when
- changing files.
-
- The "No lines in buffer" message is a normal message instead of an error
- message, since that may cause a mapping to be aborted.
-
- The AUX: device of the Amiga is supported.
-
- ==============================================================================
- 6. Command-line arguments *cmdline-arguments*
-
- Different versions of Vi have different command-line arguments. This can be
- confusing. To help you, this section gives an overview of the differences.
-
- Five variants of Vi will be considered here:
- Elvis Elvis version 2.1b
- Nvi Nvi version 1.79
- Posix Posix 1003.2
- Vi Vi version 3.7 (for Sun 4.1.x)
- Vile Vile version 7.4 (incomplete)
- Vim Vim version 5.2
-
- Only Vim is able to accept options in between and after the file names.
-
- +{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}".
-
- - Nvi, Posix, Vi: Run Ex in batch mode.
- Vim: Read file from stdin (use -s for batch mode).
-
- -- Vim: End of options, only file names are following.
-
- --cmd {command} Vim: execute {command} before sourcing vimrc files.
-
- --echo-wid Vim: GTK+ echoes the Window ID on stdout
-
- --help Vim: show help message and exit.
-
- --literal Vim: take file names literally, don't expand wildcards.
-
- --nofork Vim: same as |-f|
-
- --noplugin[s] Vim: Skip loading plugins.
-
- --remote Vim: edit the files in another Vim server
-
- --remote-expr {expr} Vim: evaluate {expr} in another Vim server
-
- --remote-send {keys} Vim: send {keys} to a Vim server and exit
-
- --remote-silent {file} Vim: edit the files in another Vim server if possible
-
- --remote-wait Vim: edit the files in another Vim server and wait for it
-
- --remote-wait-silent Vim: like --remote-wait, no complaints if not possible
-
- --role {role} Vim: GTK+ 2: set role of main window
-
- --serverlist Vim: Output a list of Vim servers and exit
-
- --servername {name} Vim: Specify Vim server name
-
- --socketid {id} Vim: GTK window socket to run Vim in
-
- --windowid {id} Vim: Win32 window ID to run Vim in
-
- --version Vim: show version message and exit.
-
- -? Vile: print usage summary and exit.
-
- -a Elvis: Load all specified file names into a window (use -o for
- Vim).
-
- -A Vim: Start in Arabic mode (when compiled with Arabic).
-
- -b {blksize} Elvis: Use {blksize} blocksize for the session file.
- -b Vim: set 'binary' mode.
-
- -C Vim: Compatible mode.
-
- -c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after
- loading the edit buffer.
- Vim: allow up to 10 "-c" arguments
-
- -d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled
- without the |+diff| feature}
- -d Vim: start with 'diff' set. |vimdiff|
-
- -dev {device} Vim: Use {device} for I/O (Amiga only).
-
- -D Vim: debug mode.
-
- -e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is
- called "ex".
-
- -E Vim: Start in improved Ex mode |gQ|, like "exim".
-
- -f Vim: Run GUI in foreground (Amiga: don't open new window).
- -f {session} Elvis: Use {session} as the session file.
-
- -F Vim: Start in Farsi mode (when compiled with Farsi).
- Nvi: Fast start, don't read the entire file when editing
- starts.
-
- -G {gui} Elvis: Use the {gui} as user interface.
-
- -g Vim: Start GUI.
- -g N Vile: start editing at line N
-
- -h Vim: Give help message.
- Vile: edit the help file
-
- -H Vim: start Hebrew mode (when compiled with it).
-
- -i Elvis: Start each window in Insert mode.
- -i {viminfo} Vim: Use {viminfo} for viminfo file.
-
- -L Vim: Same as "-r" (also in some versions of Vi).
-
- -l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.
-
- -m Vim: Modifications not allowed to be written, resets 'write'
- option.
-
- -M Vim: Modifications not allowed, resets 'modifiable' and the
- 'write' option.
-
- -N Vim: No-compatible mode.
-
- -n Vim: No swap file used.
-
- -nb[args] Vim: open a NetBeans interface connection
-
- -O[N] Vim: Like -o, but use vertically split windows.
-
- -o[N] Vim: Open [N] windows, or one for each file.
-
- -p[N] Vim: Open [N] tab pages, or one for each file.
-
- -P {parent-title} Win32 Vim: open Vim inside a parent application window
-
- -q {name} Vim: Use {name} for quickfix error file.
- -q{name} Vim: Idem.
-
- -R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option.
-
- -r Elvis, Nvi, Posix, Vi, Vim: Recovery mode.
-
- -S Nvi: Set 'secure' option.
- -S {script} Vim: source script after starting up.
-
- -s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode.
- Elvis: Sets the 'safer' option.
- -s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex
- mode.
- -s {pattern} Vile: search for {pattern}
-
- -t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}.
- -t{tag} Vim: Idem.
-
- -T {term} Vim: Set terminal name to {term}.
-
- -u {vimrc} Vim: Read initializations from {vimrc} file.
-
- -U {gvimrc} Vim: Read GUI initializations from {gvimrc} file.
-
- -v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi
- terms).
- Vile: View mode, no changes possible.
-
- -V Elvis, Vim: Verbose mode.
- -V{nr} Vim: Verbose mode with specified level.
-
- -w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}.
- -w{size} Nvi, Vi: Same as "-w {size}".
- -w {name} Vim: Write to script file {name} (must start with non-digit).
-
- -W {name} Vim: Append to script file {name}.
-
- -x Vi, Vim: Ask for encryption key. See |encryption|.
-
- -X Vim: Don't connect to the X server.
-
- -y Vim: Start in easy mode, like |evim|.
-
- -Z Vim: restricted mode
-
- @{cmdfile} Vile: use {cmdfile} as startup file.
-
- ==============================================================================
- 7. POSIX compliance *posix* *posix-compliance*
-
- In 2005 the POSIX test suite was run to check the compatibility of Vim. Most
- of the test was executed properly. There are the few things where Vim
- is not POSIX compliant, even when run in Vi compatibility mode.
-
- Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX
- flags when Vim starts up. This makes Vim run as POSIX as it can. That's
- a bit different from being Vi compatible.
-
- This is where Vim does not behave as POSIX specifies and why:
-
- *posix-screen-size*
- The $COLUMNS and $LINES environment variables are ignored by Vim if
- the size can be obtained from the terminal in a more reliable way.
- Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule
- sizes obtained in another way.
-
- The "{" and "}" commands don't stop at a "{" in the original Vi, but
- POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want
- it the POSIX way.
-
- The "D", "o" and "O" commands accept a count. Also when repeated.
- Add the '#' flag to 'cpoptions' if you want to ignore the count.
-
- The ":cd" command fails if the current buffer is modified when the '.'
- flag is present in 'cpoptions'.
-
- There is no ATTENTION message, the "A" flag is added to 'shortmess'.
-
- These are remarks about running the POSIX test suite:
- - vi test 33 sometimes fails for unknown reasons
- - vi test 250 fails; behavior will be changed in a new revision
- http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html
- (link no longer works, perhaps it's now:
- https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711)
- - vi test 310 fails; exit code non-zero when any error occurred?
- - ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3.
- - ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent
- mode and $EXINIT isn't used.
- - ex tests 76, 78 fail because echo is used instead of printf. (fixed)
- Also: problem with \s not changed to space.
- - ex test 355 fails because 'window' isn't used for "30z".
- - ex test 368 fails because shell command isn't echoed in silent mode.
- - ex test 394 fails because "=" command output isn't visible in silent mode.
- - ex test 411 fails because test file is wrong, contains stray ':'.
- - ex test 475 and 476 fail because reprint output isn't visible in silent mode.
- - ex test 480 and 481 fail because the tags file has spaces instead of a tab.
- - ex test 502 fails because .exrc isn't read in silent mode.
- - ex test 509 fails because .exrc isn't read in silent mode. and exit code is
- 1 instead of 2.
- - ex test 534 fails because .exrc isn't read in silent mode.
-
-
- vim:tw=78:ts=8:ft=help:norl:
-