aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/vim_diff.txt
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-29 21:52:58 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-29 21:52:58 +0000
commit931bffbda3668ddc609fc1da8f9eb576b170aa52 (patch)
treed8c1843a95da5ea0bb4acc09f7e37843d9995c86 /runtime/doc/vim_diff.txt
parent142d9041391780ac15b89886a54015fdc5c73995 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-userreg.tar.gz
rneovim-userreg.tar.bz2
rneovim-userreg.zip
Merge remote-tracking branch 'upstream/master' into userreguserreg
Diffstat (limited to 'runtime/doc/vim_diff.txt')
-rw-r--r--runtime/doc/vim_diff.txt420
1 files changed, 251 insertions, 169 deletions
diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt
index bb3b670b24..cf9b3cf0e5 100644
--- a/runtime/doc/vim_diff.txt
+++ b/runtime/doc/vim_diff.txt
@@ -13,7 +13,10 @@ centralized reference of the differences.
Type |gO| to see the table of contents.
==============================================================================
-1. Configuration *nvim-config*
+Configuration *nvim-config*
+
+User configuration and data files are found in standard |base-directories|
+(see also |$NVIM_APPNAME|). Note in particular:
- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for your |config|.
- Use `$XDG_CONFIG_HOME/nvim` instead of `.vim` to store configuration files.
@@ -21,7 +24,7 @@ centralized reference of the differences.
session information. |shada|
==============================================================================
-2. Defaults *nvim-defaults*
+Defaults *nvim-defaults*
- Filetype detection is enabled by default. This can be disabled by adding
":filetype off" to |init.vim|.
@@ -29,23 +32,28 @@ centralized reference of the differences.
":syntax off" to |init.vim|.
- 'autoindent' is enabled
-- 'autoread' is enabled
+- 'autoread' is enabled (works in all UIs, including terminal)
- 'background' defaults to "dark" (unless set automatically by the terminal/UI)
- 'backspace' defaults to "indent,eol,start"
- 'backupdir' defaults to .,~/.local/state/nvim/backup// (|xdg|), auto-created
- 'belloff' defaults to "all"
+- 'comments' includes "fb:•"
+- 'commentstring' defaults to ""
- 'compatible' is always disabled
- 'complete' excludes "i"
+- 'define' defaults to "". The C ftplugin sets it to "^\\s*#\\s*define"
- 'directory' defaults to ~/.local/state/nvim/swap// (|xdg|), auto-created
- 'display' defaults to "lastline"
- 'encoding' is UTF-8 (cf. 'fileencoding' for file-content encoding)
-- 'fillchars' defaults (in effect) to "vert:│,fold:·,sep:│"
+- 'fillchars' defaults (in effect) to "vert:│,fold:·,foldsep:│"
- 'formatoptions' defaults to "tcqj"
-- 'fsync' is disabled
- 'hidden' is enabled
- 'history' defaults to 10000 (the maximum)
- 'hlsearch' is enabled
+- 'include' defaults to "". The C ftplugin sets it to "^\\s*#\\s*include"
- 'incsearch' is enabled
+- 'isfname' does not include ":" (on Windows). Drive letters are handled
+ correctly without it. (Use |gF| for filepaths suffixed with ":line:col").
- 'joinspaces' is disabled
- 'langnoremap' is enabled
- 'langremap' is disabled
@@ -54,9 +62,10 @@ centralized reference of the differences.
- 'mouse' defaults to "nvi"
- 'mousemodel' defaults to "popup_setpos"
- 'nrformats' defaults to "bin,hex"
+- 'path' defaults to ".,,". The C ftplugin adds "/usr/include" if it exists.
- 'ruler' is enabled
- 'sessionoptions' includes "unix,slash", excludes "options"
-- 'shortmess' includes "F", excludes "S"
+- 'shortmess' includes "CF", excludes "S"
- 'showcmd' is enabled
- 'sidescroll' defaults to 1
- 'smarttab' is enabled
@@ -72,13 +81,14 @@ centralized reference of the differences.
- 'wildmenu' is enabled
- 'wildoptions' defaults to "pum,tagfile"
+- |editorconfig| plugin is enabled, .editorconfig settings are applied.
- |man.lua| plugin is enabled, so |:Man| is available by default.
- |matchit| plugin is enabled. To disable it in your config: >vim
:let loaded_matchit = 1
- |g:vimsyn_embed| defaults to "l" to enable Lua highlighting
-Default Mouse ~
+DEFAULT MOUSE
*default-mouse* *disable-mouse*
By default the mouse is enabled, and <RightMouse> opens a |popup-menu| with
standard actions ("Cut", "Copy", "Paste", …). Mouse is NOT enabled in
@@ -102,60 +112,70 @@ To remove the "How-to disable mouse" menu item and the separator above it: >vim
aunmenu PopUp.How-to\ disable\ mouse
aunmenu PopUp.-1-
<
-Default Mappings ~
+DEFAULT MAPPINGS
*default-mappings*
Nvim creates the following default mappings at |startup|. You can disable any
of these in your config by simply removing the mapping, e.g. ":unmap Y".
->vim
- nnoremap Y y$
- nnoremap <C-L> <Cmd>nohlsearch<Bar>diffupdate<Bar>normal! <C-L><CR>
- inoremap <C-U> <C-G>u<C-U>
- inoremap <C-W> <C-G>u<C-W>
- xnoremap * y/\V<C-R>"<CR>
- xnoremap # y?\V<C-R>"<CR>
- nnoremap & :&&<CR>
-<
-Default Autocommands ~
+
+- Y |Y-default|
+- <C-U> |i_CTRL-U-default|
+- <C-W> |i_CTRL-W-default|
+- <C-L> |CTRL-L-default|
+- & |&-default|
+- # |v_#-default|
+- * |v_star-default|
+- Nvim LSP client defaults |lsp-defaults|
+ - K |K-lsp-default|
+
+DEFAULT AUTOCOMMANDS
*default-autocmds*
Default autocommands exist in the following groups. Use ":autocmd! {group}" to
remove them and ":autocmd {group}" to see how they're defined.
nvim_terminal:
- BufReadCmd: Treats "term://" buffers as |terminal| buffers. |terminal-start|
+- TermClose: A |terminal| buffer started with no arguments (which thus uses
+ 'shell') and which exits with no error is closed automatically.
nvim_cmdwin:
- CmdwinEnter: Limits syntax sync to maxlines=1 in the |cmdwin|.
+nvim_swapfile:
+- SwapExists: Skips the swapfile prompt (sets |v:swapchoice| to "e") when the
+ swapfile is owned by a running Nvim process. Shows |W325| "Ignoring
+ swapfile…" message.
+
==============================================================================
-3. New Features *nvim-features*
+New Features *nvim-features*
MAJOR COMPONENTS
-API |API|
-Job control |job-control|
-LSP framework |lsp|
-Lua scripting |lua|
-Parsing engine |treesitter|
-Providers
- Clipboard |provider-clipboard|
- Node.js plugins |provider-nodejs|
- Python plugins |provider-python|
- Ruby plugins |provider-ruby|
-Remote plugins |remote-plugin|
-Shared data |shada|
-Terminal emulator |terminal|
-Vimscript parser |nvim_parse_expression()|
-XDG base directories |xdg|
+- API |API|
+- Job control |job-control|
+- LSP framework |lsp|
+- Lua scripting |lua|
+- Parsing engine |treesitter|
+- Providers
+ - Clipboard |provider-clipboard|
+ - Node.js plugins |provider-nodejs|
+ - Python plugins |provider-python|
+ - Ruby plugins |provider-ruby|
+- Remote plugins |remote-plugin|
+- Shared data |shada|
+- Terminal emulator |terminal|
+- UI |ui| |--listen| |--server|
+- Vimscript parser |nvim_parse_expression()|
+- XDG base directories |xdg|
USER EXPERIENCE
Working intuitively and consistently is a major goal of Nvim.
*feature-compile*
-- Nvim always includes ALL features, in contrast to Vim (which ships with
- various combinations of 100+ optional features). Think of it as a leaner
- version of Vim's "HUGE" build. This reduces surface area for bugs, and
- removes a common source of confusion and friction for users.
+- Nvim always includes ALL features, in contrast to Vim (which ships various
+ combinations of 100+ optional features). |feature-compile| Think of it as
+ a leaner version of Vim's "HUGE" build. This reduces surface area for bugs,
+ and removes a common source of confusion and friction for users.
- Nvim avoids features that cannot be provided on all platforms; instead that
is delegated to external plugins/extensions. E.g. the `-X` platform-specific
@@ -173,17 +193,23 @@ backwards-compatibility cost. Some examples:
- Directories for 'directory' and 'undodir' are auto-created.
- Terminal features such as 'guicursor' are enabled where possible.
+- Various "nvim" |cli-arguments| were redesigned.
Some features are built in that otherwise required external plugins:
-- Highlighting the yanked region, see |lua-highlight|.
+- Highlighting the yanked region, see |vim.highlight|.
ARCHITECTURE
+The Nvim UI is "decoupled" from the core editor: all UIs, including the
+builtin |TUI| are just plugins that connect to a Nvim server (via |--server|
+or |--embed|). Multiple Nvim UI clients can connect to the same Nvim editor
+server.
+
External plugins run in separate processes. |remote-plugin| This improves
stability and allows those plugins to work without blocking the editor. Even
"legacy" Python and Ruby plugins which use the old Vim interfaces (|if_pyth|,
-|if_ruby|) run out-of-process.
+|if_ruby|) run out-of-process, so they cannot crash Nvim.
Platform and I/O facilities are built upon libuv. Nvim benefits from libuv
features and bug fixes, and other projects benefit from improvements to libuv
@@ -191,7 +217,7 @@ by Nvim developers.
FEATURES
-Command-line highlighting:
+Command-line:
The expression prompt (|@=|, |c_CTRL-R_=|, |i_CTRL-R_=|) is highlighted
using a built-in Vimscript expression parser. |expr-highlight|
*E5408* *E5409*
@@ -229,12 +255,16 @@ Functions:
|stdpath()|
|system()|, |systemlist()| can run {cmd} directly (without 'shell')
|matchadd()| can be called before highlight group is defined
+ |tempname()| tries to recover if the Nvim |tempdir| disappears.
|writefile()| with "p" flag creates parent directories.
Highlight groups:
|highlight-blend| controls blend level for a highlight group
|expr-highlight| highlight groups (prefixed with "Nvim")
|hl-NormalFloat| highlights floating window
+ |hl-FloatBorder| highlights border of a floating window
+ |hl-FloatTitle| highlights title of a floating window
+ |hl-FloatFooter| highlights footer of a floating window
|hl-NormalNC| highlights non-current windows
|hl-MsgArea| highlights messages/cmdline area
|hl-MsgSeparator| highlights separator for scrolled messages
@@ -243,6 +273,8 @@ Highlight groups:
|hl-TermCursorNC|
|hl-WinSeparator| highlights window separators
|hl-Whitespace| highlights 'listchars' whitespace
+ |hl-WinBar| highlights 'winbar'
+ |hl-WinBarNC| highlights non-current window 'winbar'
Input/Mappings:
ALT (|META|) chords always work (even in the |TUI|). Map |<M-| with any key:
@@ -253,62 +285,135 @@ Input/Mappings:
Normal commands:
|gO| shows a filetype-defined "outline" of the current buffer.
+ |Q| replays the last recorded macro instead of switching to Ex mode (|gQ|).
Options:
+ Local values for global-local number/boolean options are unset when the
+ option is set without a scope (e.g. by using |:set|), similarly to how
+ global-local string options work.
+
+ 'autoread' works in the terminal (if it supports "focus" events)
'cpoptions' flags: |cpo-_|
- 'guicursor' works in the terminal
- 'fillchars' flags: "msgsep", "horiz", "horizup",
- "horizdown", "vertleft", "vertright", "verthoriz"
+ 'diffopt' "linematch" feature
+ 'exrc' searches for ".nvim.lua", ".nvimrc", or ".exrc" files. The
+ user is prompted whether to trust the file.
+ 'fillchars' flags: "msgsep", "horiz", "horizup", "horizdown",
+ "vertleft", "vertright", "verthoriz"
'foldcolumn' supports up to 9 dynamic/fixed columns
+ 'guicursor' works in the terminal (TUI)
'inccommand' shows interactive results for |:substitute|-like commands
and |:command-preview| commands
+ 'jumpoptions' "view" tries to restore the |mark-view| when moving through
+ the |jumplist|, |changelist|, |alternate-file| or using |mark-motions|.
'laststatus' global statusline support
'mousescroll' amount to scroll by when scrolling with a mouse
'pumblend' pseudo-transparent popupmenu
'scrollback'
+ 'shortmess' "F" flag does not affect output from autocommands
'signcolumn' supports up to 9 dynamic/fixed columns
- 'statusline' supports unlimited alignment sections
+ 'statuscolumn' full control of columns using 'statusline' format
'tabline' %@Func@foo%X can call any function on mouse-click
+ 'termpastefilter'
+ 'ttimeout', 'ttimeoutlen' behavior was simplified
'winblend' pseudo-transparency in floating windows |api-floatwin|
'winhighlight' window-local highlights
- 'diffopt' has the option `linematch`.
+
+Providers:
+ If a Python interpreter is available on your `$PATH`, |:python| and
+ |:python3| are always available. See |provider-python|.
+
+Shell:
+ Shell output (|:!|, |:make|, …) is always routed through the UI, so it
+ cannot "mess up" the screen. (You can still use "chansend(v:stderr,…)" if
+ you want to mess up the screen :)
+
+ Nvim throttles (skips) messages from shell commands (|:!|, |:grep|, |:make|)
+ if there is too much output. No data is lost, this only affects display and
+ improves performance. |:terminal| output is never throttled.
+
+ |:!| does not support "interactive" commands. Use |:terminal| instead.
+ (GUI Vim has a similar limitation, see ":help gui-pty" in Vim.)
+
+ :!start is not special-cased on Windows.
+
+ |system()| does not support writing/reading "backgrounded" commands. |E5677|
Signs:
Signs are removed if the associated line is deleted.
+ Signs placed twice with the same identifier in the same group are moved.
+
+Startup:
+ |-e| and |-es| invoke the same "improved Ex mode" as -E and -Es.
+ |-E| and |-Es| read stdin as text (into buffer 1).
+ |-es| and |-Es| have improved behavior:
+ - Quits automatically, don't need "-c qa!".
+ - Skips swap-file dialog.
+ |-s| reads Normal commands from stdin if the script name is "-".
+ Reading text (instead of commands) from stdin |--|:
+ - works by default: "-" file is optional
+ - works in more cases: |-Es|, file args
+
+TUI:
+ *:set-termcap*
+ Start Nvim with 'verbose' level 3 to show terminal capabilities: >
+ nvim -V3
+<
+ *'term'* *E529* *E530* *E531*
+ 'term' reflects the terminal type derived from |$TERM| and other environment
+ checks. For debugging only; not reliable during startup. >vim
+ :echo &term
+< "builtin_x" means one of the |builtin-terms| was chosen, because the expected
+ terminfo file was not found on the system.
+
+ Nvim will use 256-colour capability on Linux virtual terminals. Vim uses
+ only 8 colours plus bright foreground on Linux VTs.
+
+ Vim combines what is in its |builtin-terms| with what it reads from terminfo,
+ and has a 'ttybuiltin' setting to control how that combination works. Nvim
+ uses one or the other, it does not attempt to merge the two.
+
+UI/Display:
+ |Visual| selection highlights the character at cursor. |visual-use|
+
+ messages: When showing messages longer than 'cmdheight', only
+ scroll the message lines, not the entire screen. The
+ separator line is decorated by |hl-MsgSeparator| and
+ the "msgsep" flag of 'fillchars'. *msgsep*
Variables:
|v:progpath| is always absolute ("full")
|v:windowid| is always available (for use by external UIs)
+ |OptionSet| autocommand args |v:option_new|, |v:option_old|,
+ |v:option_oldlocal|, |v:option_oldglobal| have the type of the option
+ instead of always being strings. |v:option_old| is now the old global value
+ for all global-local options, instead of just string global-local options.
+
+Vimscript:
+ |:redir| nested in |execute()| works.
==============================================================================
-4. Upstreamed features *nvim-upstreamed*
+Upstreamed features *nvim-upstreamed*
These Nvim features were later integrated into Vim.
- 'fillchars' flags: "eob"
+- 'jumpoptions' "stack" behavior
- 'wildoptions' flags: "pum" enables popupmenu for wildmode completion
- |<Cmd>|
- |WinClosed|
- |WinScrolled|
- |:sign-define| "numhl" argument
- |:source| works with anonymous (no file) scripts
+- 'statusline' supports unlimited alignment sections
==============================================================================
-5. Changed features *nvim-features-changed*
-
-Nvim always builds with all features, in contrast to Vim which may have
-certain features removed/added at compile-time. |feature-compile|
-
-Some Vim features were changed in Nvim, and vice versa.
+Other changes *nvim-changed*
-If a Python interpreter is available on your `$PATH`, |:python| and |:python3|
-are always available and may be used simultaneously. See |provider-python|.
-
-|:redir| nested in |execute()| works.
+This section documents various low-level behavior changes.
|mkdir()| behaviour changed:
1. Assuming /tmp/foo does not exist and /tmp can be written to
- mkdir('/tmp/foo/bar', 'p', 0700) will create both /tmp/foo and /tmp/foo/bar
+ mkdir('/tmp/foo/bar', 'p', 0700) will create both /tmp/foo and /tmp/foo/bar
with 0700 permissions. Vim mkdir will create /tmp/foo with 0755.
2. If you try to create an existing directory with `'p'` (e.g. mkdir('/',
'p')) mkdir() will silently exit. In Vim this was an error.
@@ -319,33 +424,33 @@ are always available and may be used simultaneously. See |provider-python|.
structures.
2. |string()| fails immediately on nested containers, not when recursion limit
was exceeded.
-2. When |:echo| encounters duplicate containers like >vim
+3. When |:echo| encounters duplicate containers like >vim
let l = []
echo [l, l]
<
it does not use "[...]" (was: "[[], [...]]", now: "[[], []]"). "..." is
only used for recursive containers.
-3. |:echo| printing nested containers adds "@level" after "..." designating
+4. |:echo| printing nested containers adds "@level" after "..." designating
the level at which recursive container was printed: |:echo-self-refer|.
Same thing applies to |string()| (though it uses construct like
"{E724@level}"), but this is not reliable because |string()| continues to
error out.
-4. Stringifyed infinite and NaN values now use |str2float()| and can be evaled
+5. Stringifyed infinite and NaN values now use |str2float()| and can be evaled
back.
-5. (internal) Trying to print or stringify VAR_UNKNOWN in Vim results in
+6. (internal) Trying to print or stringify VAR_UNKNOWN in Vim results in
nothing, E908, in Nvim it is internal error.
|json_decode()| behaviour changed:
1. It may output |msgpack-special-dict|.
-2. |msgpack-special-dict| is emitted also in case of duplicate keys, while in
+2. |msgpack-special-dict| is emitted also in case of duplicate keys, while in
Vim it errors out.
3. It accepts only valid JSON. Trailing commas are not accepted.
-|json_encode()| behaviour slightly changed: now |msgpack-special-dict| values
+|json_encode()| behaviour slightly changed: now |msgpack-special-dict| values
are accepted, but |v:none| is not.
-Viminfo text files were replaced with binary (messagepack) ShaDa files.
+Viminfo text files were replaced with binary (messagepack) |shada| files.
Additional differences:
- |shada-c| has no effect.
@@ -361,33 +466,35 @@ Additional differences:
|shada-error-handling|
- ShaDa file keeps search direction (|v:searchforward|), viminfo does not.
-|printf()| returns something meaningful when used with `%p` argument: in Vim
-it used to return useless address of the string (strings are copied to the
-newly allocated memory all over the place) and fail on types which cannot be
-coerced to strings. See |id()| for more details, currently it uses
+|printf()| returns something meaningful when used with `%p` argument: in Vim
+it used to return useless address of the string (strings are copied to the
+newly allocated memory all over the place) and fail on types which cannot be
+coerced to strings. See |id()| for more details, currently it uses
`printf("%p", {expr})` internally.
|c_CTRL-R| pasting a non-special register into |cmdline| omits the last <CR>.
-|CursorMoved| always triggers when moving between windows.
+|CursorMoved| triggers when moving between windows.
Lua interface (|lua.txt|):
- `:lua print("a\0b")` will print `a^@b`, like with `:echomsg "a\nb"` . In Vim
that prints `a` and `b` on separate lines, exactly like
`:lua print("a\nb")` .
-- `:lua error('TEST')` emits the error “E5105: Error while calling lua chunk:
- [string "<VimL compiled string>"]:1: TEST”, whereas Vim emits only “TEST”.
+- `:lua error('TEST')` emits the error: >
+ E5108: Error executing lua: [string "<Vimscript compiled string>"]:1: TEST
+< whereas Vim emits only "TEST".
- Lua has direct access to Nvim |API| via `vim.api`.
- Lua package.path and package.cpath are automatically updated according to
- 'runtimepath': |lua-require|.
+ 'runtimepath'. |lua-module-load|
Commands:
|:doautocmd| does not warn about "No matching autocommands".
|:wincmd| accepts a count.
`:write!` does not show a prompt if the file was updated externally.
+ |:=| does not accept |ex-flags|. With an arg it is equivalent to |:lua=|
-Command line completion:
+Command-line:
The meanings of arrow keys do not change depending on 'wildoptions'.
Functions:
@@ -404,9 +511,9 @@ Highlight groups:
using |n| or |N|
|hl-CursorLine| is low-priority unless foreground color is set
|hl-VertSplit| superseded by |hl-WinSeparator|
- Highlight groups names are allowed to contain the characters `.` and `@`.
+ Highlight groups names are allowed to contain `@` characters.
It is an error to define a highlight group with a name that doesn't match
- the regexp `[a-zA-Z0-9_.@]*` (see |group-name|).
+ the regexp `[a-zA-Z0-9_.@-]*` (see |group-name|).
Macro/|recording| behavior
Replay of a macro recorded during :lmap produces the same actions as when it
@@ -418,51 +525,16 @@ Macro/|recording| behavior
the results of keys from 'keymap'.
Mappings:
- Creating a mapping for a simplifiable key (e.g. <C-I>) doesn't replace an
+- Creating a mapping for a simplifiable key (e.g. <C-I>) doesn't replace an
existing mapping for its simplified form (e.g. <Tab>).
+- "#" followed by a digit doesn't stand for a function key at the start of the
+ lhs of a mapping.
Motion:
The |jumplist| avoids useless/phantom jumps.
-Normal commands:
- |Q| replays the last recorded macro instead of switching to Ex mode.
- Instead |gQ| can be used to enter Ex mode.
-
-Options:
- 'ttimeout', 'ttimeoutlen' behavior was simplified
- 'jumpoptions' "stack" behavior
- 'jumpoptions' "view" tries to restore the |mark-view| when moving through
- the |jumplist|, |changelist|, |alternate-file| or using |mark-motions|.
- 'shortmess' the "F" flag does not affect output from autocommands
- 'exrc' searches for ".nvim.lua", ".nvimrc", or ".exrc" files. The user is
- prompted whether to trust the file.
-
-Shell:
- Shell output (|:!|, |:make|, …) is always routed through the UI, so it
- cannot "mess up" the screen. (You can still use "chansend(v:stderr,…)" if
- you want to mess up the screen :)
-
- Nvim throttles (skips) messages from shell commands (|:!|, |:grep|, |:make|)
- if there is too much output. No data is lost, this only affects display and
- improves performance. |:terminal| output is never throttled.
-
- |:!| does not support "interactive" commands. Use |:terminal| instead.
- (GUI Vim has a similar limitation, see ":help gui-pty" in Vim.)
-
- :!start is not special-cased on Windows.
-
- |system()| does not support writing/reading "backgrounded" commands. |E5677|
-
-Startup:
- |-e| and |-es| invoke the same "improved Ex mode" as -E and -Es.
- |-E| and |-Es| read stdin as text (into buffer 1).
- |-es| and |-Es| have improved behavior:
- - Quits automatically, don't need "-c qa!".
- - Skips swap-file dialog.
- |-s| reads Normal commands from stdin if the script name is "-".
- Reading text (instead of commands) from stdin |--|:
- - works by default: "-" file is optional
- - works in more cases: |-Es|, file args
+Performance:
+ Folds are not updated during insert-mode.
Syntax highlighting:
syncolor.vim has been removed. Nvim now sets up default highlighting groups
@@ -472,40 +544,13 @@ Syntax highlighting:
after/syntax/syncolor.vim file should transition that file into a
colorscheme. |:colorscheme|
-TUI:
- *:set-termcap*
- Start Nvim with 'verbose' level 3 to show terminal capabilities: >
- nvim -V3
-<
- *'term'* *E529* *E530* *E531*
- 'term' reflects the terminal type derived from |$TERM| and other environment
- checks. For debugging only; not reliable during startup. >vim
- :echo &term
-< "builtin_x" means one of the |builtin-terms| was chosen, because the expected
- terminfo file was not found on the system.
-
- Nvim will use 256-colour capability on Linux virtual terminals. Vim uses
- only 8 colours plus bright foreground on Linux VTs.
-
- Vim combines what is in its |builtin-terms| with what it reads from terminfo,
- and has a 'ttybuiltin' setting to control how that combination works. Nvim
- uses one or the other, it does not attempt to merge the two.
-
-UI/Display:
- |Visual| selection highlights the character at cursor. |visual-use|
-
- messages: When showing messages longer than 'cmdheight', only
- scroll the message lines, not the entire screen. The
- separator line is decorated by |hl-MsgSeparator| and
- the "msgsep" flag of 'fillchars'. *msgsep*
-
Vimscript compatibility:
`count` does not alias to |v:count|
`errmsg` does not alias to |v:errmsg|
`shell_error` does not alias to |v:shell_error|
`this_session` does not alias to |v:this_session|
-Working directory (Vim implemented some of these later than Nvim):
+Working directory (Vim implemented some of these after Nvim):
- |DirChanged| and |DirChangedPre| can be triggered when switching to another
window or tab.
- |getcwd()| and |haslocaldir()| may throw errors if the tab page or window
@@ -515,21 +560,24 @@ Working directory (Vim implemented some of these later than Nvim):
- `getcwd(-1)` is equivalent to `getcwd(-1, 0)` instead of returning the global
working directory. Use `getcwd(-1, -1)` to get the global working directory.
-==============================================================================
-6. Missing legacy features *nvim-features-missing*
+Autocommands:
+- Fixed inconsistent behavior in execution of nested autocommands:
+ https://github.com/neovim/neovim/issues/23368
+- |TermResponse| is fired for any OSC sequence received from the terminal,
+ instead of the Primary Device Attributes response. |v:termresponse|
-Some legacy Vim features are not yet implemented:
+==============================================================================
+Missing features *nvim-missing*
-- *if_lua* : Nvim |Lua| API is not compatible with Vim's "if_lua"
-- *if_mzscheme*
-- |if_pyth|: *python-bindeval* *python-Function* are not supported
-- *if_tcl*
+These legacy Vim features are not yet implemented:
-*:gui*
-*:gvim*
+- *:gui*
+- *:gvim*
+- *'completepopup'*
+- *'previewpopup'*
==============================================================================
-7. Removed features *nvim-features-removed*
+Removed legacy features *nvim-removed*
These Vim features were intentionally removed from Nvim.
@@ -548,8 +596,10 @@ Aliases:
vimdiff (alias for "nvim -d" |diff-mode|)
Commands:
+ :behave
:fixdel
- :hardcopy
+ *hardcopy* `:hardcopy` was removed. Instead, use `:TOhtml` and print the
+ resulting HTML using a web browser or other HTML viewer.
:helpfind
:mode (no longer accepts an argument)
:open
@@ -565,14 +615,21 @@ Commands:
:cscope
:lcscope
:scscope
+ :Vimuntar
Compile-time features:
Emacs tags support
X11 integration (see |x11-selection|)
+Cscope:
+ *cscope*
+ Cscope support was removed in favour of plugin-based solutions such as:
+ https://github.com/dhananjaylatkar/cscope_maps.nvim
+
Eval:
Vim9script
*cscope_connection()*
+ *err_teapot()*
*js_encode()*
*js_decode()*
*v:none* (used by Vim to represent JavaScript "undefined"); use |v:null| instead.
@@ -581,6 +638,7 @@ Eval:
*v:sizeofpointer*
Events:
+ *SafeStateAgain*
*SigUSR1* Use |Signal| to detect `SIGUSR1` signal instead.
Highlight groups:
@@ -595,7 +653,13 @@ Highlight groups:
<
Options:
+ *'aleph'* *'al'*
antialias
+ 'backspace' no longer supports number values. Instead:
+ - for `backspace=0` set `backspace=` (empty)
+ - for `backspace=1` set `backspace=indent,eol`
+ - for `backspace=2` set `backspace=indent,eol,start` (default behavior in Nvim)
+ - for `backspace=3` set `backspace=indent,eol,nostop`
*'balloondelay'* *'bdlay'*
*'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
*'balloonexpr'* *'bexpr'*
@@ -618,6 +682,14 @@ Options:
*'guifontset'* *'gfs'* (Use 'guifont' instead.)
*'guipty'* (Nvim uses pipes and PTYs consistently on all platforms.)
'highlight' (Names of builtin |highlight-groups| cannot be changed.)
+ *'hkmap'* *'hk'* use `set keymap=hebrew` instead.
+ *'hkmapp'* *'hkp'* use `set keymap=hebrewp` instead.
+ keyprotocol
+
+ *'pastetoggle'* *'pt'* Just Paste It.™ |paste| is handled automatically when
+ you paste text using your terminal's or GUI's paste feature (CTRL-SHIFT-v,
+ CMD-v (macOS), middle-click, …).
+
*'imactivatefunc'* *'imaf'*
*'imactivatekey'* *'imak'*
*'imstatusfunc'* *'imsf'*
@@ -651,11 +723,19 @@ Options:
<
*'macatsui'*
*'maxcombine'* *'mco'*
- Nvim always displays up to 6 combining characters. You can still edit
- text with more than 6 combining characters, you just can't see them.
- Use |g8| or |ga|. See |mbyte-combining|.
+ Nvim counts maximum character sizes in bytes, not codepoints. This is
+ guaranteed to be big enough to always fit all chars properly displayed
+ in vim with 'maxcombine' set to 6.
+
+ You can still edit text with larger characters than fits in the screen buffer,
+ you just can't see them. Use |g8| or |ga|. See |mbyte-combining|.
+
+ NOTE: the rexexp engine still has a hard-coded limit of considering
+ 6 composing chars only.
+
*'maxmem'* Nvim delegates memory-management to the OS.
*'maxmemtot'* Nvim delegates memory-management to the OS.
+ printoptions
*'printdevice'*
*'printencoding'*
*'printexpr'*
@@ -669,6 +749,7 @@ Options:
Everything is allowed in 'exrc' files since they must be explicitly marked
trusted.
*'shelltype'*
+ 'shortmess' flags: *shm-f* *shm-n* *shm-x* *shm-i* (behave like always on)
*'shortname'* *'sn'* *'noshortname'* *'nosn'*
*'swapsync'* *'sws'*
*'termencoding'* *'tenc'* (Vim 7.4.852 also removed this for Windows)
@@ -684,8 +765,18 @@ Options:
*'ttytype'* *'tty'*
weirdinvert
-Performance:
- Folds are not updated during insert-mode.
+Plugins:
+
+- logiPat
+- rrhelper
+- *vimball*
+
+Providers:
+
+- *if_lua* : Nvim |Lua| API is not compatible with Vim's "if_lua".
+- *if_mzscheme*
+- |if_pyth|: *python-bindeval* *python-Function* are not supported.
+- *if_tcl*
Startup:
--literal (file args are always literal; to expand wildcards on Windows, use
@@ -735,14 +826,5 @@ TUI:
at how the terminal is sending CSI. Nvim does not issue such a sequence and
always uses 7-bit control sequences.
-Cscope:
- *cscope*
- Cscope support has been removed in favour of LSP based solutions.
-
-Hardcopy:
- *hardcopy*
- `:hardcopy` was removed. Instead, use `:TOhtml` and print the resulting HTML
- using a web browser or some other HTML viewer.
-
==============================================================================
vim:tw=78:ts=8:sw=2:et:ft=help:norl: