and |-Es| have improved behavior:
- Quits automatically, don't need "-c qa!".
- Skips swap-file dialog.
- Optimized for non-interactive scripts: disables swapfile, shada.
- |-l| Executes Lua scripts non-interactively.
- |-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. Use `:echo &term` to get its value. For debugging only; not
reliable during startup.
- Note: If you want to detect when Nvim is running in a terminal, use
`has('gui_running')` |has()| or see |nvim_list_uis()| for an example of
how to inspect the UI channel.
- "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.
==============================================================================
Upstreamed features *nvim-upstreamed*
These Nvim features were later integrated into Vim.
- 'diffopt' "linematch" feature
- '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
==============================================================================
Other changes *nvim-changed*
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 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.
- 3. mkdir() error messages now include strerror() text when mkdir fails.
|string()| and |:echo| behaviour changed:
- 1. No maximum recursion depth limit is applied to nested container
structures.
- 2. |string()| fails immediately on nested containers, not when recursion
limit was exceeded.
- 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.
- 4. |:echo| printing nested containers adds "@level" after "..." designating
the level at which recursive