patch 8.1.1280: remarks about functionality not in Vi clutters the help
Problem: Remarks about functionality not in Vi clutters the help.
Solution: Move all info about what is new in Vim or already existed in Vi to
vi_diff.txt. Remove {not in Vi} remarks. (closes #4268) Add
"noet" to the help files modeline. Also include many other help
file improvements.
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
index b71fdbc..a1f4ab4 100644
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt* For Vim version 8.1. Last change: 2019 Apr 28
+*vi_diff.txt* For Vim version 8.1. Last change: 2019 May 05
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6,9 +6,8 @@
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.
+This file lists the differences between Vim and Vi/Ex and gives an overview of
+what is in Vim that is not in Vi.
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
@@ -180,6 +179,10 @@
line with tab labels can be used to quickly switch between these pages.
|tab-page|
+Terminal window. |:terminal|
+ Vim can create a window in which a terminal emulator runs. This can
+ be used to execute an arbitrary command, a shell or a debugger.
+
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
@@ -194,6 +197,11 @@
|'hlsearch'|, matching parens |matchparen| and the cursor line and
column |'cursorline'| |'cursorcolumn'|.
+Text properties |textprop.txt|
+ Vim supports highlighting text by a plugin. Property types can be
+ specificed with |prop_type_add()| and properties can be placed with
+ |prop_add()|.
+
Spell checking. |spell|
When the 'spell' option is set Vim will highlight spelling mistakes.
About 50 languages are currently supported, selected with the
@@ -262,6 +270,8 @@
~ swap case
u make lowercase
U make uppercase
+ {Vi has no Visual mode, the name "visual" is used for Normal mode, to
+ distinguish it from Ex mode}
Block operators. |visual-block|
With Visual mode a rectangular block of text can be selected. Start
@@ -522,6 +532,10 @@
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.
+Vi uses 'wrapscan' when searching for a tag. When jumping to a tag Vi starts
+searching in line 2 of another file. It does not find a tag in line 1 of
+another file when 'wrapscan' is not set.
+
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
@@ -795,23 +809,231 @@
effect is of resetting 'compatible' and removing flags from 'cpoptions' can be
found at the help for the specific command.
-Below is listed what features are present in Vi. Anything else has been added
-by Vim.
+The help files used to mark features that are in Vim but not in Vi with {not
+in Vi}. However, since these remarks cluttered the help files we now do it
+the other way around: Below is listed what Vi already supported. Anything
+else has been added by Vim.
+
The following Ex commands are supported by Vi: ~
-TODO
-
-`:set` but not `:set inv{option}`, `:set option&`, `:set all&`,
- `:set option+=value`,
- `:set option^=value`
- `:set option-=value`
- `:set option<`
+`:abbreviate` enter abbreviation
+`:append` append text
+`:args` print the argument list
+`:cd` change directory; Vi: no "cd -"
+`:change` replace a line or series of lines
+`:chdir` change directory
+`:copy` copy lines
+`:delete` delete lines
+`:edit` edit a file
+`:exit` same as ":xit"
+`:file` show or set the current file name; Vi: without the column number
+`:global` execute commands for matching lines
+`:insert` insert text
+`:join` join lines; Vi: not :join!
+`:k` set a mark
+`:list` print lines
+`:map` show or enter a mapping
+`:mark` set a mark
+`:move` move lines
+`:Next` go to previous file in the argument list; no count or ++opt
+`:next` go to next file in the argument list; no count or ++opt
+`:number` print lines with line number
+`:open` start open mode (not implemented in Vim)
+`:pop` jump to older entry in tag stack (only in some versions)
+`:preserve` write all text to swap file
+`:print` print lines
+`:put` insert contents of register in the text
+`:quit` quit Vi
+`:read` read file into the text
+`:recover` recover a file from a swap file
+`:rewind` go to the first file in the argument list; no ++opt
+`:set` set option; but not `:set inv{option}`, `:set option&`,
+ `:set all&`, `:set option+=value`, `:set option^=value`
+ `:set option-=value` `:set option<`
+`:shell` escape to a shell
+`:source` read Vim or Ex commands from a file
+`:stop` suspend the editor or escape to a shell
+`:substitute` find and replace text; Vi: no '&', 'i', 's', 'r' or 'I' flag,
+ confirm prompt only supports 'y' and 'n', no highlighting
+`:suspend` same as ":stop"
+`:t` same as ":copy"
+`:tag` jump to tag
+`:unabbreviate` remove abbreviation
+`:undo` undo last change {Vi: only one level}
+`:unmap` remove mapping
+`:vglobal` execute commands for not matching lines
+`:version` print version number and other info
+`:visual` same as ":edit", but turns off "Ex" mode
+`:wq` write to a file and quit Vi
+`:write` write to a file
+`:xit` write if buffer changed and quit Vi
+`:yank` yank lines into a register
+`:z` print some lines {not in all versions of Vi}
+`:!` filter lines or execute an external command
+`:"` comment
+`:#` same as ":number"
+`:*` execute contents of a register
+`:&` repeat last ":substitute"
+`:<` shift lines one 'shiftwidth' left
+`:=` print the cursor line number
+`:>` shift lines one 'shiftwidth' right
+`:@` execute contents of a register; but not `:@`; `:@@` only in
+ some versions
The following Normal mode commands are supported by Vi: ~
-TODO
+|CTRL-B| scroll N screens Backwards
+|CTRL-C| interrupt current (search) command
+|CTRL-D| scroll Down N lines (default: half a screen); Vim scrolls
+ 'scroll' screen lines, Vi scrolls file lines; makes a
+ difference when lines wrap
+|CTRL-E| scroll N lines upwards (N lines Extra)
+|CTRL-F| scroll N screens Forward
+|CTRL-G| display current file name and position
+|<BS>| same as "h"
+|CTRL-H| same as "h"
+|<NL>| same as "j"
+|CTRL-J| same as "j"
+|CTRL-L| redraw screen
+|<CR>| cursor to the first CHAR N lines lower
+|CTRL-M| same as <CR>
+|CTRL-N| same as "j"
+|CTRL-P| same as "k"
+|CTRL-R| in some Vi versions: same as CTRL-L
+|CTRL-T| jump to N older Tag in tag list
+|CTRL-U| N lines Upwards (default: half a screen)
+|CTRL-Y| scroll N lines downwards
+|CTRL-Z| suspend program (or start new shell)
+|CTRL-]| :ta to ident under cursor
+|CTRL-^| edit alternate file; Vi: no count
+|<Space>| same as "l"
+|!| filter Nmove text through the {filter} command
+|!!| filter N lines through the {filter} command
+" use register {a-zA-Z0-9.%#:-"} for next delete, yank or put
+ (uppercase to append) ({.%#:} only work with put)
+|$| cursor to the end of Nth next line
+|%| find the next (curly/square) bracket on this line and go to
+ its match, or go to matching comment bracket, or go to
+ matching preprocessor directive (Vi: no count supported)
+|&| repeat last :s
+|'| jump to mark (Vi: only lowercase marks)
+|(| cursor N sentences backward
+|)| cursor N sentences forward
+|+| same as <CR>
+|,| repeat latest f, t, F or T in opposite direction N times
+|-| cursor to the first CHAR N lines higher
+|.| repeat last change with count replaced with N
+|/| search forward for the Nth occurrence of {pattern}
+|0| cursor to the first char of the line
+|:| start entering an Ex command
+|;| repeat latest f, t, F or T N times
+|<| shift Nmove lines one 'shiftwidth' leftwards
+|<<| shift N lines one 'shiftwidth' leftwards
+|=| filter Nmove lines through "indent"
+|==| filter N lines through "indent"
+|>| shift Nmove lines one 'shiftwidth' rightwards
+|>>| shift N lines one 'shiftwidth' rightwards
+|?| search backward for the Nth previous occurrence of {pattern}
+|@| execute the contents of register {a-z} N times
+|@@| repeat the previous @{a-z} N times
+|A| append text after the end of the line N times
+|B| cursor N WORDS backward
+|C| change from the cursor position to the end of the line
+|D| delete the characters under the cursor until the end of the
+ line and N-1 more lines [into register x]; synonym for "d$"
+|E| cursor forward to the end of WORD N
+|F| cursor to the Nth occurrence of {char} to the left
+|G| cursor to line N, default last line
+|H| cursor to line N from top of screen
+|I| insert text before the first CHAR on the line N times
+|J| Join N lines; default is 2
+|L| cursor to line N from bottom of screen
+|M| cursor to middle line of screen
+|N| repeat the latest '/' or '?' N times in opposite direction
+|O| begin a new line above the cursor and insert text, repeat N
+ times
+|P| put the text [from register x] before the cursor N times
+|Q| switch to "Ex" mode
+|R| enter replace mode: overtype existing characters, repeat the
+ entered text N-1 times
+|S| delete N lines [into register x] and start insert; synonym for
+ "cc".
+|T| cursor till after Nth occurrence of {char} to the left
+|U| undo all latest changes on one line
+|W| cursor N WORDS forward
+|X| delete N characters before the cursor [into register x]
+|Y| yank N lines [into register x]; synonym for "yy"
+|ZZ| store current file if modified, and exit
+|[[| cursor N sections backward
+|]]| cursor N sections forward
+|^| cursor to the first CHAR of the line
+|_| cursor to the first CHAR N - 1 lines lower
+|`| cursor to the mark {a-zA-Z0-9}
+|a| append text after the cursor N times
+|b| cursor N words backward
+|c| delete Nmove text [into register x] and start insert
+|cc| delete N lines [into register x] and start insert
+|d| delete Nmove text [into register x]
+|dd| delete N lines [into register x]
+|e| cursor forward to the end of word N
+|f| cursor to Nth occurrence of {char} to the right
+|h| cursor N chars to the left
+|i| insert text before the cursor N times
+|j| cursor N lines downward
+|k| cursor N lines upward
+|l| cursor N chars to the right
+|m| set mark {A-Za-z} at cursor position
+|n| repeat the latest '/' or '?' N times
+|o| begin a new line below the cursor and insert text
+|p| put the text [from register x] after the cursor N times
+|r| replace N chars with {char}
+|s| (substitute) delete N characters [into register x] and start
+ insert
+|t| cursor till before Nth occurrence of {char} to the right
+|u| undo changes {Vi: only one level}
+|w| cursor N words forward
+|x| delete N characters under and after the cursor [into register
+ x]
+|y| yank Nmove text [into register x]
+|yy| yank N lines [into register x]
+|z<CR>| current line to the top
+|z-| current line to the bottom
+|z+| cursor on line N
+|z^| cursor on line N
+|{| cursor N paragraphs backward
+| cursor to column N
+|}| cursor N paragraphs forward
+|~| switch case of N characters under the cursor; Vim: depends on
+ 'tildeop'
+|<Del>| same as "x"
+
+
+The following commands are supported in Insert mode by Vi: ~
+
+CTRL-@ insert previously inserted text and stop insert
+CTRL-C quit insert mode, without checking for abbreviation, unless
+ 'insertmode' set.
+CTRL-D delete one shiftwidth of indent in the current line
+<BS> delete character before the cursor
+CTRL-H same as <BS>
+<Tab> insert a <Tab> character
+CTRL-I same as <Tab>
+<NL> same as <CR>
+CTRL-J same as <CR>
+<CR> begin new line
+CTRL-M same as <CR>
+CTRL-T insert one shiftwidth of indent in current line
+CTRL-V {char} insert next non-digit literally
+CTRL-W delete word before the cursor
+CTRL-Z when 'insertmode' set: suspend Vim
+<Esc> end insert mode (unless 'insertmode' set)
+CTRL-[ same as <Esc>
+0 CTRL-D delete all indent in the current line
+^ CTRL-D delete all indent in the current line, restore it in the next
+ line
+<Del> delete character under the cursor
The following options are supported by Vi: ~
@@ -849,11 +1071,14 @@
'term' name of the terminal
'terse' shorten some messages
'timeout' 'to' time out on mappings and key codes
+'timeoutlen' 'tm' time for 'timeout' {only in some Vi versions}
'ttytype' 'tty' alias for 'term'
'verbose' 'vbs' give informative messages {only in some Vi
versions as a boolean option}
'warn' warn for shell command when buffer was changed
'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B
+ {Vi also uses the option to specify the number of
+ displayed lines}
'wrapmargin' 'wm' chars from the right where wrapping starts
'wrapscan' 'ws' searches wrap around the end of the file
'writeany' 'wa' write to file with no need for "!" override
@@ -968,7 +1193,8 @@
-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 Vim: Same as "-r" {only in some versions of Vi: "List
+ recoverable edit sessions"}.
-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.