diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:40:31 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:40:31 +0000 |
commit | 339e2d15cc26fe86988ea06468d912a46c8d6f29 (patch) | |
tree | a6167fc8fcfc6ae2dc102f57b2473858eac34063 /runtime/doc/vim_diff.txt | |
parent | 067dc73729267c0262438a6fdd66e586f8496946 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.tar.gz rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.tar.bz2 rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.zip |
Merge remote-tracking branch 'upstream/master' into fix_repeatcmdline
Diffstat (limited to 'runtime/doc/vim_diff.txt')
-rw-r--r-- | runtime/doc/vim_diff.txt | 420 |
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: |