doc: job/channel, misc #7783

doc: termios defaults. ref #6992
doc: :help shell-powershell
doc: provider: Python minimum version is 2.7, 3.4
doc: remove :!start special-case. #5844
doc: mention #7917 change which accepts empty Array for Dictionary parameter
doc: <Cmd> pseudokey
doc: lmap change #5658
doc: -s, -es
This commit is contained in:
Justin M. Keyes 2017-12-27 19:30:23 +01:00
parent c69ea3b4b8
commit f72f638f97
25 changed files with 427 additions and 412 deletions

View File

@ -1,3 +1,7 @@
# CMAKE REFERENCE
# intro: https://codingnest.com/basic-cmake/
# best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
cmake_minimum_required(VERSION 2.8.7)
project(nvim)

View File

@ -14,8 +14,15 @@ low-risk/isolated tasks:
Developer guidelines
--------------------
- Nvim developers should read `:help dev`.
- Nvim contributors should read `:help dev` (especially `:help dev-api`).
- External UI developers should read `:help dev-ui`.
- API client developers should read `:help dev-api-client`.
- Nvim developers are _strongly encouraged_ to install `ninja` for faster builds.
```
sudo apt-get install ninja-build
make distclean
make # Nvim build system uses ninja automatically, if available.
```
Reporting problems
------------------
@ -157,7 +164,7 @@ shows each commit's diff. To show the whole surrounding function of a change
as context, use the `-W` argument as well.
[gcc-warnings]: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
[git-bisect]: http://git-scm.com/book/tr/v2/Git-Tools-Debugging-with-Git
[git-bisect]: http://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git
[git-feature-branch]: https://www.atlassian.com/git/tutorials/comparing-workflows
[git-history-filtering]: https://www.atlassian.com/git/tutorials/git-log/filtering-the-commit-history
[git-history-rewriting]: http://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

View File

@ -13,6 +13,7 @@
[![Clang Scan Build](https://neovim.io/doc/reports/clang/badge.svg)](https://neovim.io/doc/reports/clang)
[![PVS-studio Check](https://neovim.io/doc/reports/pvs/badge.svg)](https://neovim.io/doc/reports/pvs/PVS-studio.html.d)
[![Packages](https://repology.org/badge/tiny-repos/neovim.svg)](https://repology.org/metapackage/neovim)
[![Debian CI](https://badges.debian.net/badges/debian/testing/neovim/version.svg)](https://buildd.debian.org/neovim)
[![Downloads](https://img.shields.io/github/downloads/neovim/neovim/total.svg?maxAge=2592001)](https://github.com/neovim/neovim/releases/)
@ -43,6 +44,8 @@ To list all targets:
cmake --build build --target help
To skip "bundled" dependencies define `USE_BUNDLED_DEPS=NO` (CMake option: `USE_BUNDLED=NO`).
See [the wiki](https://github.com/neovim/neovim/wiki/Building-Neovim) for details.
Install from package
@ -73,9 +76,6 @@ Project layout
├─ third-party/ cmake subproject to build dependencies
└─ test/ tests (see test/README.md)
- To disable `third-party/` specify `USE_BUNDLED_DEPS=NO` or `USE_BUNDLED=NO`
(CMake option).
Features
--------

View File

@ -54,7 +54,7 @@ If
is a function name, the file containing that function is opened
with the cursor positioned at the start of the function.
See
.Ic :help tag-commands .
.Ic ":help tag-commands" .
.It Fl q Op Ar errorfile
QuickFix mode.
Display the first error in
@ -67,7 +67,7 @@ Further errors can be jumped to with the
.Ic :cnext
command.
See
.Ic :help quickfix .
.Ic ":help quickfix" .
.It There are a number of other options:
.It Fl -
Interpret all further arguments as files.
@ -76,21 +76,21 @@ Can be used to edit files starting with a hyphen
.It Fl e
Ex mode. Reads stdin as Ex commands.
See
.Ic :help Ex-mode .
.Ic ":help Ex-mode" .
.It Fl E
Ex mode, improved. Reads stdin as text.
See
.Ic :help gQ .
.It Fl es
Silent (batch) mode. Reads stdin as Ex commands.
.It Fl Es
.It Fl \&Es
Silent (batch) mode. Reads stdin as text.
.It Fl d
Diff mode.
Show the difference between two to four files, similar to
.Xr sdiff 1 .
See
.Ic :help diff .
.Ic ":help diff" .
.It Fl R
Read-only mode.
Sets the 'readonly' option.
@ -101,7 +101,7 @@ associated with a file.
To overwrite a file, add an exclamation mark to the relevant Ex command, such as
.Ic :w! .
See
.Ic :help 'readonly' .
.Ic ":help 'readonly'" .
.It Fl Z
Restricted mode.
Disable commands that make use of an external shell.
@ -114,7 +114,7 @@ modifications.
.It Fl b
Binary mode.
See
.Ic :help edit-binary .
.Ic ":help edit-binary" .
.It Fl l
Lisp mode.
Sets the 'lisp' and 'showmatch' options.
@ -157,7 +157,7 @@ The swap file has the same name as the file it's associated with, but with
.Sq .swp
appended.
See
.Ic :help recovery .
.Ic ":help recovery" .
.It Fl L Op Ar file
Alias for
.Fl r .
@ -178,7 +178,7 @@ is
.Cm NONE ,
loading plugins is also skipped.
See
.Ic :help initialization .
.Ic ":help initialization" .
.It Fl i Ar shada
Use
.Ar shada
@ -190,7 +190,7 @@ is
.Cm NONE ,
do not read or write a ShaDa file.
See
.Ic :help shada .
.Ic ":help shada" .
.It Fl -noplugin
Skip loading plugins.
Implied by
@ -244,7 +244,7 @@ and
inside
.Nm .
See
.Ic :help search-pattern .
.Ic ":help search-pattern" .
.It Fl c Ar command
Execute
.Ar command
@ -281,12 +281,12 @@ is omitted then
.Pa Session.vim
is used, if found.
See
.Ic :help session-file .
.Ic ":help session-file" .
.It Fl s Ar scriptin
Read normal mode commands from
.Ar scriptin .
The same can be done with the command
.Ic :source! scriptin .
.Ic ":source! scriptin" .
If the end of the file is reached before
.Nm
exits, further characters are read from the keyboard.
@ -353,7 +353,7 @@ quit immediately after starting, set
to
.Cm q .
See
.Ic :help VIMINIT .
.Ic ":help VIMINIT" .
.It Ev SHELL
Used to initialize the 'shell' option, which decides the default shell used by
features like
@ -389,7 +389,7 @@ Most of Vim was written by
.An -nosplit
.An Bram Moolenaar .
See
.Ic :help credits .
.Ic ":help credits" .
Vim is based on Stevie, worked on by
.An Tim Thompson ,
.An Tony Andrews ,

View File

@ -16,26 +16,23 @@ Applications can also embed libnvim to work with the C API directly.
==============================================================================
API Types *api-types*
Nvim's C API uses custom types for all functions. Some are just typedefs
around C99 standard types, and some are Nvim-defined data structures.
The Nvim C API defines custom types for all function parameters. Some are just
typedefs around C99 standard types, others are Nvim-defined data structures.
Boolean -> bool
Integer (signed 64-bit integer) -> int64_t
Float (IEEE 754 double precision) -> double
String -> {char* data, size_t size} struct
Additionally, the following data structures are defined:
Array
Dictionary
Object
Boolean -> bool
Integer (signed 64-bit integer) -> int64_t
Float (IEEE 754 double precision) -> double
String -> {char* data, size_t size} struct
Array
Dictionary
Object
The following handle types are defined as integer typedefs, but are
discriminated as separate types in an Object:
Buffer -> enum value kObjectTypeBuffer
Window -> enum value kObjectTypeWindow
Tabpage -> enum value kObjectTypeTabpage
Buffer -> enum value kObjectTypeBuffer
Window -> enum value kObjectTypeWindow
Tabpage -> enum value kObjectTypeTabpage
==============================================================================
API metadata *api-metadata*
@ -60,10 +57,14 @@ External programs ("clients") can use the metadata to discover the |rpc-api|.
==============================================================================
API contract *api-contract*
The API is made of functions and events. Clients call functions like those
described at |api-global|, and may "attach" to receive rich |ui-events|.
The Nvim API is composed of functions and events.
As Nvim develops, its API may change only according the following "contract":
- Clients call functions like those described at |api-global|.
- Clients can subscribe to |ui-events|, |api-buffer-updates|, etc.
- API function names are prefixed with "nvim_".
- API event names are prefixed with "nvim_" and suffixed with "_event".
As Nvim evolves the API may change in compliance with this CONTRACT:
- New functions and events may be added.
- Any such extensions are OPTIONAL: old clients may ignore them.

View File

@ -904,14 +904,11 @@ SpellFileMissing When trying to load a spell checking file and
language, 'encoding' also matters. See
|spell-SpellFileMissing|.
*StdinReadPost*
StdinReadPost After reading from the stdin into the buffer,
before executing the modelines. Only used
when the "-" argument was used when Vim was
started |--|.
StdinReadPost During startup, after reading from stdin into
the buffer, before executing modelines. |--|
*StdinReadPre*
StdinReadPre Before reading from stdin into the buffer.
Only used when the "-" argument was used when
Vim was started |--|.
StdinReadPre During startup, before reading from stdin into
the buffer. |--|
*SwapExists*
SwapExists Detected an existing swap file when starting
to edit a file. Only when it is possible to

View File

@ -126,10 +126,14 @@ all data has been processed:
For additional examples with jobs, see |job-control|.
*channel-pty*
A special case is PTY channels opened by `jobstart(..., {'pty': v:true})` .
No preprocessing of ANSI escape sequences is done, these will be sent raw to
the callback. However, change of PTY size can be signaled to the slave using
|jobresize()|. See also |terminal-emulator|.
Special case: PTY channels opened with `jobstart(..., {'pty': v:true})` do not
preprocess ANSI escape sequences, these will be sent raw to the callback.
However, change of PTY size can be signaled to the slave using |jobresize()|.
See also |terminal-emulator|.
Terminal characteristics (termios) for |:terminal| and PTY channels are copied
from the host TTY, or if Nvim is |--headless| it uses default values: >
:echo system('nvim --headless +"te stty -a" +"sleep 1" +"1,/^$/print" +q')
==============================================================================
3. Communicating using msgpack-rpc *channel-rpc*
@ -140,37 +144,27 @@ rpc channels are implicitly trusted and the process at the other end can
invoke any |api| function!
==============================================================================
4. Using the stdio channel *channel-stdio*
4. Standard IO channel *channel-stdio*
When invoked normally, nvim will use stdin and stdout to interact with the
user over the terminal interface (TUI). However when invoked with
`--headless`, the TUI is not started and stdin and stdout can be used as a
channel. To open the stdio channel |stdioopen()| must be called during
|startup|, as there later will be no way of invoking a command. As a
convenience, the stdio channel will always have channel id 1.
Nvim uses stdin/stdout to interact with the user over the terminal interface
(TUI). If Nvim is |--headless| the TUI is not started and stdin/stdout can be
used as a channel. See also |--embed|.
Here is an example:
>
Call |stdioopen()| during |startup| to open the stdio channel as channel-id 1.
Nvim's stderr is always available as channel-id 2 (|v:stderr| to be explicit),
a write-only bytes channel.
Example: >
func! OnEvent(id, data, event)
if a:data == [""]
quit
quit
end
call chansend(a:id, map(a:data, {i,v -> toupper(v)}))
endfunc
call stdioopen({'on_stdin': 'OnEvent'})
<
Put this in `uppercase.vim` and invoke nvim with
>
Put this in `uppercase.vim` and run: >
nvim --headless --cmd "source uppercase.vim"
<
*--embed*
An common use case is another program embedding nvim and communicating with it
over rpc. Therefore, the option `--embed` exists as a shorthand for
`nvim --headless --cmd "call stdioopen({'rpc': v:true})"`
Nvim's stderr is implicitly open as a write-only bytes channel. It will
always have channel id 2, however to be explicit |v:stderr| can be used.
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -382,7 +382,7 @@ CTRL-N After using 'wildchar' which got multiple matches, go to next
<S-Tab> *c_CTRL-P* *c_<S-Tab>*
CTRL-P After using 'wildchar' which got multiple matches, go to
previous match. Otherwise recall older command-line from
history. <S-Tab> only works with the GUI.
history.
*c_CTRL-A*
CTRL-A All names that match the pattern in front of the cursor are
inserted.

View File

@ -12,10 +12,6 @@ updated.
==============================================================================
Normal commands ~
*]f*
*[f* Same as "gf".
Commands ~
*:rv*
*:rviminfo* Deprecated alias to |:rshada| command.
@ -51,6 +47,10 @@ Modifiers ~
*:map-<special>*
*:map-special* <> notation is always enabled. |cpo-<|
Normal commands ~
*]f*
*[f* Same as "gf".
Options ~
*'cscopeverbose'* Enabled by default. Use |:silent| instead.
'gd'
@ -61,4 +61,8 @@ Options ~
*'vi'*
*'viminfo'* Deprecated alias to 'shada' option.
Variables~
*b:terminal_job_pid* PID of the top-level process in a |:terminal|.
Use `jobpid(&channel)` instead.
vim:noet:tw=78:ts=8:ft=help:norl:

View File

@ -203,7 +203,7 @@ DOCUMENTATION *dev-doc*
API *dev-api*
Use this pattern to name new API functions:
Use this template to name new API functions:
nvim_{thing}_{action}_{arbitrary-qualifiers}
If the function acts on an object then {thing} is the name of that object
@ -231,6 +231,11 @@ Example: `nvim_list_bufs` operates in a global context (first parameter is
_not_ a Buffer). The common {action} "list" indicates that it lists all
bufs (plural) in the global context.
Use this template to name new API events:
nvim_{thing}_{event}_event
Example: `nvim_buf_changedtick_event`.
API-CLIENT *dev-api-client*
@ -267,7 +272,11 @@ Common Features ~
External UIs are expected to implement these common features:
- Cursor style (shape, color) should respond to the 'guicursor' properties
delivered with the mode_info_set UI event.
- Send the ALT/META ("Option" on macOS) key as a |<M-| chord.
- Send the "super" key (Windows key, Apple key) as a |<D-| chord.
- Avoid mappings that conflict with Nvim defaults. GUIs have many new chords
like <C-,> <C-Enter> <C-S-x> <D-x> and patterns like "shift shift", which
don't conflict with typical Nvim mappings.
Implementation ~
- UI-related options ('guifont', 'ambiwidth', …) are published in the

View File

@ -7265,10 +7265,8 @@ stdioopen({opts}) *stdioopen()*
stdpath({what}) *stdpath()* *E6100*
Returns the standard path(s) for {what}.
These directories are the default locations for various files
used by Neovim.
Returns |standard-path| locations of various default files and
directories.
{what} Type Description ~
cache String Cache directory. Useful for plugins
@ -8609,18 +8607,36 @@ See |:verbose-cmd| for more information.
implies that the effect of |:nohlsearch| is undone
when the function returns.
*:endf* *:endfunction* *E126* *E193*
:endf[unction] The end of a function definition. Must be on a line
by its own, without other commands.
*:endf* *:endfunction* *E126* *E193* *W22*
:endf[unction] [argument]
The end of a function definition. Best is to put it
on a line by its own, without [argument].
*:delf* *:delfunction* *E130* *E131* *E933*
:delf[unction] {name} Delete function {name}.
[argument] can be:
| command command to execute next
\n command command to execute next
" comment always ignored
anything else ignored, warning given when
'verbose' is non-zero
The support for a following command was added in Vim
8.0.0654, before that any argument was silently
ignored.
To be able to define a function inside an `:execute`
command, use line breaks instead of |:bar|: >
:exe "func Foo()\necho 'foo'\nendfunc"
<
*:delf* *:delfunction* *E130* *E131* *E933*
:delf[unction][!] {name}
Delete function {name}.
{name} can also be a |Dictionary| entry that is a
|Funcref|: >
:delfunc dict.init
< This will remove the "init" entry from "dict". The
< This will remove the "init" entry from "dict". The
function is deleted if there are no more references to
it.
With the ! there is no error if the function does not
exist.
*:retu* *:return* *E133*
:retu[rn] [expr] Return from a function. When "[expr]" is given, it is
evaluated and returned as the result of the function.

View File

@ -42,7 +42,7 @@ char action ~
abbreviation.
Note: If your <Esc> key is hard to hit, try CTRL-[ instead.
*i_META* *i_ALT*
|ALT| (|META|) acts like <Esc> if the chord is not mapped.
ALT (|META|) acts like <Esc> if the chord is not mapped.
For example <A-x> acts like <Esc>x if <A-x> does not have an
insert-mode mapping.
*i_CTRL-C*

View File

@ -234,8 +234,7 @@ For this reason the following is blocked:
- Moving the cursor is allowed, but it is restored afterwards.
- If the cmdline is changed, the old text and cursor position are restored.
If you want the mapping to do any of these let the returned characters do
that. Alternatively use a |<Cmd>| mapping which doesn't have these
restrictions.
that. Or use a |<Cmd>| mapping (which doesn't have these restrictions).
You can use getchar(), it consumes typeahead if there is any. E.g., if you
have these mappings: >
@ -274,29 +273,30 @@ again for using <expr>. This does work: >
Using 0x80 as a single byte before other text does not work, it will be seen
as a special key.
*<Cmd>* *:map-command*
A command mapping is a mapping that directly executes a command. Command
mappings are written by placing a command in between <Cmd> and <CR> in the
rhs of a mapping (in any mode): >
noremap <f3> <Cmd>echo mode(1)<cr>
*<Cmd>* *:map-cmd*
The <Cmd> pseudokey may be used to define a "command mapping", which executes
the command directly (without changing modes, etc.). Where you might use
":...<CR>" in the {lhs} of a mapping, you can instead use "<Cmd>...<CR>".
Example: >
noremap x <Cmd>echo mode(1)<cr>
<
This is more flexible than `:<C-U>` in visual and operator-pending mode, or
`<C-O>:` in insert-mode, because the commands are executed directly in the
current mode (instead of always going to normal-mode). Visual-mode is
preserved, so tricks with |gv| are not needed. Commands can be invoked
directly in cmdline-mode (which otherwise would require timer hacks).
Unlike <expr> mappings, there are no special restrictions on the <Cmd>
command: it is executed as if an (unrestricted) |autocmd| was invoked or an
async event event was processed.
In select-mode, |:map| and |:vmap| command mappings are executed in
visual-mode. Use |:smap| to handle select-mode.
*E5520*
The command must be complete and ended with a <CR>. If the command is
incomplete, an error is raised. |Command-line| mode is never entered.
<Cmd> commands must terminate, that is, they must be followed by <CR> in the
{lhs} of the mapping definition. |Command-line| mode is never entered.
This is more flexible than using `:<c-u>` in visual and operator pending
mode, or `<c-o>:` in insert mode, as the commands are exectued directly in the
mode, and not normal mode. Also visual mode is not aborted. Commands can be
invoked directly in cmdline mode, which is not simple otherwise (a timer has
to be used). Unlike <expr> mappings, there are not any specific restrictions
what the command can do, except for what is normally possible to do in every
specific mode. The command should be executed the same way as if an
(unrestricted) |autocmd| was invoked or an async event event was processed.
Note: In select mode, |:map| or |:vmap| command mappings will be executed in
visual mode. If a mapping is intended to work in select mode, it is
recomendend to map it using |:smap|, possibly in addition to the same mapping
with |:map| or |:xmap|.
1.3 MAPPING AND MODES *:map-modes*
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o* *mapmode-t*

View File

@ -190,10 +190,10 @@ prefix is stripped off.
5. Types *rpc-types*
The Nvim C API uses custom types for all functions. |api-types|
At the RPC layer, the types can be split into two groups:
At the RPC layer, types form two groups:
- Basic types that map natively to msgpack (and probably have a default
representation in msgpack-supported programming languages)
- Basic types that map natively to msgpack (and have a default
representation in most msgpack-supported programming languages)
- Special Nvim types that map to msgpack EXT with custom type codes.
Basic types ~
@ -206,6 +206,8 @@ Basic types ~
Array -> msgpack array
Dictionary -> msgpack map
Note: in function calls, empty Array is accepted for Dictionary parameter.
Special types (msgpack EXT) ~
Buffer -> enum value kObjectTypeBuffer

View File

@ -118,8 +118,6 @@ variables:
running in the terminal can set this title via an escape sequence.
- |'channel'| The nvim channel ID for the underlying PTY.
|chansend()| can be used to send input to the terminal.
- *b:terminal_job_pid* The PID of the top-level process running in the
terminal.
These variables are initialized before TermOpen, so you can use them in
a local 'statusline'. Example: >

View File

@ -2024,7 +2024,7 @@ A jump table for the options with a short description can be found at |Q_op|.
security reasons.
*'display'* *'dy'*
'display' 'dy' string (default "lastline", Vi default: "")
'display' 'dy' string (default "lastline,msgsep", Vi default: "")
global
Change the way text is displayed. This is comma separated list of
flags:
@ -2036,11 +2036,10 @@ A jump table for the options with a short description can be found at |Q_op|.
column of the last screen line. Overrules "lastline".
uhex Show unprintable characters hexadecimal as <xx>
instead of using ^C and ~C.
msgsep When showing messages longer than 'cmdheight' lines,
only scroll the message lines and not the entire
screen. This also shows a separator line filled with
chars determined by 'fillchars' option, and
highlighted with the |MsgSeparator| group.
msgsep When showing messages longer than 'cmdheight', only
scroll the message lines, not the entire screen. The
separator line is decorated by |MsgSeparator| and the
"msgsep" flag of 'fillchars'.
When neither "lastline" nor "truncate" is included, a last line that
doesn't fit is replaced with "@" lines.
@ -2063,13 +2062,11 @@ A jump table for the options with a short description can be found at |Q_op|.
*'encoding'* *'enc'* *E543*
'encoding' 'enc' Removed. |vim-differences| {Nvim}
Nvim always uses UTF-8 internally. RPC communication
(remote plugins/GUIs) must use UTF-8 strings.
'encoding' 'enc'
String-encoding used internally and for |RPC| communication.
Always UTF-8.
The character encoding of files can be different than UTF-8.
This is specified with 'fileencoding'. The conversion is done with
iconv() or as specified with 'charconvert'.
See 'fileencoding' to control file-content encoding.
*'endofline'* *'eol'* *'noendofline'* *'noeol'*
'endofline' 'eol' boolean (default on)
@ -2185,16 +2182,16 @@ A jump table for the options with a short description can be found at |Q_op|.
*'fileencoding'* *'fenc'* *E213*
'fileencoding' 'fenc' string (default: "")
local to buffer
{only available when compiled with the |+multi_byte|
feature}
Sets the character encoding for the file of this buffer.
File-content encoding for the current buffer. Conversion is done with
iconv() or as specified with 'charconvert'.
When 'fileencoding' is different from "utf-8", conversion will be
done when writing the file. For reading see below.
When 'fileencoding' is empty, the file will be saved with utf-8
encoding. (no conversion when reading or writing a file).
WARNING: Conversion to a non-Unicode encoding can cause loss of
information!
When 'fileencoding' is not UTF-8, conversion will be done when
writing the file. For reading see below.
When 'fileencoding' is empty, the file will be saved with UTF-8
encoding (no conversion when reading or writing a file).
WARNING: Conversion to a non-Unicode encoding can cause loss of
information!
See |encoding-names| for the possible values. Additionally, values may be
specified that can be handled by the converter, see
@ -2221,7 +2218,7 @@ A jump table for the options with a short description can be found at |Q_op|.
written. If you do set 'fenc' in a modeline, you might want to set
'nomodified' to avoid not being able to ":q".
This option can not be changed when 'modifiable' is off.
This option cannot be changed when 'modifiable' is off.
*'fileencodings'* *'fencs'*
'fileencodings' 'fencs' string (default: "ucs-bom,utf-8,default,latin1")
@ -2294,7 +2291,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'fileformats' is not empty and 'binary' is off.
When this option is set, after starting to edit a file, the 'modified'
option is set, because the file would be different when written.
This option can not be changed when 'modifiable' is off.
This option cannot be changed when 'modifiable' is off.
*'fileformats'* *'ffs'*
'fileformats' 'ffs' string (default:
@ -5139,8 +5136,12 @@ A jump table for the options with a short description can be found at |Q_op|.
to escape quote: 'a\"b"' is the same as "a\b".
Note that such processing is done after |:set| did its own round of
unescaping, so to keep yourself sane use |:let-&| like shown above.
*shell-powershell*
To use powershell (on Windows): >
set shell=powershell shellquote=( shellpipe=\| shellredir=> shellxquote=
set shellcmdflag=-NoLogo\ -NoProfile\ -ExecutionPolicy\ RemoteSigned\ -Command
This option cannot be set from a |modeline| or in the |sandbox|, for
< This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'shellcmdflag'* *'shcf'*

View File

@ -20,31 +20,29 @@ Note: Only the Vim 7.3 API is supported; bindeval (Vim 7.4) is not.
PYTHON QUICKSTART ~
If you used a package manager to install Nvim, you might already have the
required `neovim` Python package. Run |:checkhealth| to see if your system is
up-to-date.
required `neovim` Python package. Run |:checkhealth| to verify.
Following are steps to install the package with Python's `pip` tool.
Following are steps to install the package with Python `pip`.
Note: Depending on your system, `pip` might refer to Python 2 or Python 3,
which is why the following instructions mention `pip2` or `pip3`
explicitly. If one of these is not available, try `pip`.
To use Vim Python 2/3 plugins with Nvim:
- For Python 2 plugins, make sure an interpreter for Python 2.6 or 2.7 is
available in your `$PATH`, then install the `neovim` Python package systemwide: >
- For Python 2 plugins, make sure Python 2.7 is available in your `$PATH`,
then install the `neovim` Python package systemwide: >
sudo pip2 install --upgrade neovim
<
or for the current user: >
pip2 install --user --upgrade neovim
<
- For Python 3 plugins, make sure an interpreter for Python 3.3 or above is
available in your `$PATH`, then install the `neovim` Python package systemwide: >
- For Python 3 plugins, make sure Python 3.4+ is available in your `$PATH`,
then install the `neovim` Python package systemwide: >
sudo pip3 install --upgrade neovim
<
or for the current user: >
pip3 install --user --upgrade neovim
<
Note: `pip` may refer to Python 2 or Python 3, so the instructions mention
`pip2` or `pip3` explicitly. If one is missing, try `pip`.
Note: The `--upgrade` flag ensures you have the latest version even if
a previous version was already installed.

View File

@ -35,23 +35,23 @@ filename One or more file names. The first one will be the current
no other options or "+command" argument can follow.
*--*
- This argument can mean two things, depending on whether Ex
mode is to be used.
Starting in Normal mode: >
nvim -
< Start editing a new buffer, which is filled with text
that is read from stdin. The commands that would normally be
read from stdin will now be read from stderr. Example: >
find . -name "*.c" -print | nvim -
- Alias for stdin (standard input).
Example: >
echo text | nvim - file
< "text" is read into buffer 1, "file" is opened as buffer 2.
In most cases (except -s, -es, |--embed|, --headless) if stdin
is not a TTY then it is read as text, so "-" is implied: >
echo text | nvim file
< The buffer will be marked modified, because it contains text
that needs to be saved. Except when in readonly mode, then
the buffer is not marked modified. Example: >
ls | nvim -R -
< Starting in Ex mode: >
nvim -e -
nvim -E
< Start editing in |silent-mode|.
that needs to be saved (except for readonly |-R| mode).
To read stdin as Normal commands use |-s| with "-": >
echo "ifoo" | nvim -s -
< To read stdin as Ex commands use |-es| or |-e|: >
echo "echo getpid()" | nvim -e - -V1
< To open a file literally named "-", put it after "--": >
echo foo | nvim -- -
< To read stdin as text with |--headless| use "-".
*-t* *-tag*
-t {tag} A tag. "tag" is looked up in the tags file, the associated
@ -191,28 +191,24 @@ argument.
*-E*
-E Start Vim in improved Ex mode |gQ|.
*-s-ex* *silent-mode*
-s Silent or batch mode. Only when "-s" is preceded by the "-e"
argument. Otherwise see |-s|, which does take an argument
while this use of "-s" doesn't. To be used when Vim is used
to execute Ex commands from a file instead of a terminal.
Switches off most prompts and informative messages. Also
warnings and error messages. The output of these commands is
displayed (to stdout):
*-es* *-Es*
-es *-s-ex* *silent-mode*
-Es Silent or batch mode: execute Ex commands from a file instead
of a terminal. Special case of |-s| (which takes an argument
while "-es" doesn't). Disables most prompts, messages,
warnings and errors.
Output of these commands is displayed (to stdout):
:print
:list
:number
:set to display option values.
When 'verbose' is non-zero messages are printed (for
debugging, to stderr).
When 'verbose' is set messages are printed to stderr, e.g.: >
echo foo | nvim -V1 -es
<
User |init.vim| is skipped (unless given with |-u|).
|$TERM| is not used.
If Vim appears to be stuck try typing "qa!<Enter>". You don't
get a prompt thus you can't see Vim is waiting for you to type
something.
Initializations are skipped (except the ones given with the
"-u" argument).
Example: >
vim -es < thefilter thefile
printf "put ='foo'\n%%print\n" | nvim -es
<
*-b*
-b Binary mode. File I/O will only recognize <NL> to separate
@ -315,12 +311,15 @@ argument.
":rsh" or ":wsh" are used. See also |shada-file|.
*-s*
-s {scriptin} The script file "scriptin" is read. The characters in the
file are interpreted as if you had typed them. The same can
be done with the command ":source! {scriptin}". If the end
of the file is reached before the editor exits, further
characters are read from the keyboard. Only works when not
started in Ex mode, see |-s-ex|. See also |complex-repeat|.
-s {scriptin} Read script file {scriptin}, interpreting characters as
Normal-mode input. The same can be done with ":source!": >
:source! {scriptin}
< Reads from stdin if {scriptin} is "-": >
echo "ifoo" | nvim -s -
< If the end of the file is reached before Nvim exits, further
characters are read from the keyboard.
Does not work with |-es|. See also |complex-repeat|.
*-w_nr*
-w {number}
@ -340,11 +339,30 @@ argument.
*--api-info*
--api-info Print msgpack-encoded |api-metadata| and exit.
*--embed*
--embed Use stdin/stdout as a msgpack-RPC channel, so applications can
embed and control Nvim via the |rpc-api|. Implies |--headless|.
Equivalent to: >
nvim --headless --cmd "call stdioopen({'rpc': v:true})"
<
See also |channel-stdio|.
*--headless*
--headless Do not start the built-in UI.
See |channel-stdio| for how to use stdio for other purposes
instead.
See also |silent-mode|, which does start a (limited) UI.
--headless Do not start the default UI, so stdio can be used as an
arbitrary communication channel. |channel-stdio|
Also useful for scripting (tests) to see messages that would
not be printed by |-es|.
To detect if a UI is available, check if |nvim_list_uis()| is
empty after |VimEnter|.
To read stdin as text, "-" must be given explicitly:
--headless cannot assume that stdin is just text. >
echo foo | nvim --headless +"%print" +"q!" -
<
See also |--embed|.
See also |-es|, which also disables most messages.
--listen {addr} *--listen*
Start |RPC| server on pipe or TCP address {addr}. Sets the
@ -604,27 +622,15 @@ there is not enough room, you will see only part of it).
To avoid the intro message on startup, add the 'I' flag to 'shortmess'.
*info-message*
The |--help| and |--version| arguments cause Vim to print a message and then
The |--help| and |--version| arguments cause Nvim to print a message and then
exit. Normally the message is sent to stdout, thus can be redirected to a
file with: >
vim --help >file
nvim --help >file
From inside Vim: >
From inside Nvim: >
:read !vim --help
When using gvim, it detects that it might have been started from the desktop,
without a terminal to show messages on. This is detected when both stdout and
stderr are not a tty. This breaks the ":read" command, as used in the example
above. To make it work again, set 'shellredir' to ">" instead of the default
">&": >
:set shellredir=>
:read !gvim --help
This still won't work for systems where gvim does not use stdout at all
though.
:read !nvim --help
==============================================================================
3. $VIM and $VIMRUNTIME
@ -1344,12 +1350,12 @@ file when reading and include:
complete MessagePack object.
==============================================================================
9. Standard Paths
9. Standard Paths *standard-path*
Nvim stores configuration and data in standard locations. Plugins are strongly
encouraged to follow this pattern also.
*base-directories* *xdg*
*base-directories* *xdg*
The "base" (root) directories conform to the XDG Base Directory Specification.
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
The $XDG_CONFIG_HOME and $XDG_DATA_HOME environment variables are used if they
@ -1358,22 +1364,19 @@ exist, otherwise default values (listed below) are used.
Note: Throughout the user manual these defaults are used as placeholders, e.g.
"~/.config" is understood to mean "$XDG_CONFIG_HOME or ~/.config".
CONFIG DIRECTORY *$XDG_CONFIG_HOME*
CONFIG DIRECTORY *$XDG_CONFIG_HOME*
Base Nvim ~
Unix: ~/.config ~/.config/nvim
Windows: ~/AppData/Local ~/AppData/Local/nvim
DATA DIRECTORY *$XDG_DATA_HOME*
DATA DIRECTORY *$XDG_DATA_HOME*
Base Nvim ~
Unix: ~/.local/share ~/.local/share/nvim
Windows: ~/AppData/Local ~/AppData/Local/nvim-data
STANDARD PATHS *standard-path*
*$NVIM_LOG_FILE*
Besides 'debug' and 'verbose', Nvim has a low-level "log of last resort" that
is written directly to the filesystem. This log may also be used by plugins or
RPC clients for debugging. $NVIM_LOG_FILE contains the log file path: >
LOG FILE *$NVIM_LOG_FILE*
Besides 'debug' and 'verbose', Nvim keeps a general log file for internal
debugging, plugins and RPC clients. >
:echo $NVIM_LOG_FILE
Usually the file is ~/.local/share/nvim/log unless that path is inaccessible
or if $NVIM_LOG_FILE was set before |startup|.

View File

@ -60,8 +60,8 @@ elements itself; Nvim will not draw those elements on the grid. This is
controlled by the |ui-ext-options|.
Future versions of Nvim may add new update kinds and may append new parameters
to existing update kinds. Clients must be prepared to ignore such extensions
to be forward-compatible. |api-contract|
to existing update kinds. Clients must be prepared to ignore such extensions,
for forward-compatibility. |api-contract|
==============================================================================
Global Events *ui-global*
@ -97,7 +97,7 @@ Global Events *ui-global*
listed below:
'arabicshape'
'ambiwith'
'ambiwidth'
'emoji'
'guifont'
'guifontset'
@ -110,7 +110,7 @@ Global Events *ui-global*
Options are not added to the list if their effects are already taken
care of. For instance, instead of forwarding the raw 'mouse' option
value, `mouse_on` and `mouse_off` directly indicate if mouse support
is active right now. Some options like 'ambiwith' have already taken
is active right now. Some options like 'ambiwidth' have already taken
effect on the grid, where appropriate empty cells are added, however
an ui might still use these options when rendering raw text sent from
Nvim, like the text of the cmdline when |ui-ext-cmdline| is set.

View File

@ -253,8 +253,6 @@ g8 Print the hex values of the bytes used in the
to a pipe (not a terminal). Use |:terminal| to run an
interactive shell connected to a terminal.
For Win32 also see |:!start|.
After the command has been executed, the timestamp and
size of the current file is checked |timestamp|.
@ -271,21 +269,6 @@ g8 Print the hex values of the bytes used in the
< The screen is not redrawn then, thus you have to use
CTRL-L or ":redraw!" if the command did display
something.
*:!start*
:!start {cmd} (Windows only). Special-case of |:!| which works
asynchronously, for running a program that does not
affect the files you are editing.
Optional arguments (can only use one at a time):
/min window will be minimized
/b no console window will be opened
Note: If the process requires input, /b will get an
EOF error because its input stream (stdin) would be
redirected to \\.\NUL (stdout and stderr too).
Programs begun with :!start do not get passed Vim's
open file handles, which means they do not have to be
closed before Vim. To avoid this special treatment,
use ":! start".
*:!!*
:!! Repeat last ":!{cmd}".

View File

@ -14,11 +14,10 @@ a complete and centralized reference of those differences.
==============================================================================
1. Configuration *nvim-configuration*
- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for storing
configuration.
- Use `$XDG_CONFIG_HOME/nvim/init.vim` instead of `.vimrc` for configuration.
- Use `$XDG_CONFIG_HOME/nvim` instead of `.vim` to store configuration files.
- Use `$XDG_DATA_HOME/nvim/shada/main.shada` instead of `.viminfo` for persistent
session information.
session information. |shada|
==============================================================================
2. Defaults *nvim-defaults*
@ -35,7 +34,9 @@ a complete and centralized reference of those differences.
- 'cscopeverbose' is enabled
- 'directory' defaults to ~/.local/share/nvim/swap// (|xdg|), auto-created
- 'display' defaults to "lastline,msgsep"
- 'encoding' is UTF-8 (cf. 'fileencoding' for file-content encoding)
- 'fillchars' defaults (in effect) to "vert:│,fold:·"
- 'fsync' is disabled
- 'formatoptions' defaults to "tcqj"
- 'history' defaults to 10000 (the maximum)
- 'hlsearch' is set by default
@ -117,16 +118,62 @@ by Nvim developers.
FEATURES ~
"Outline": Type |gO| in |:Man| and |:help| pages to see a document outline.
Command-line highlighting:
The expression prompt (|@=|, |c_CTRL-R_=|, |i_CTRL-R_=|) is highlighted
using a built-in VimL expression parser. |expr-highlight|
*E5408* *E5409*
|input()|, |inputdialog()| support custom highlighting. |input()-highlight|
*g:Nvim_color_cmdline*
(Experimental) Command-line (|:|) is colored by callback defined in
`g:Nvim_color_cmdline` (this callback is for testing only, and will be
removed in the future).
|META| (ALT) chords are recognized, even in the terminal. Any |<M-| mapping
will work. Some examples: <M-1>, <M-2>, <M-BS>, <M-Del>, <M-Ins>, <M-/>,
<M-\>, <M-Space>, <M-Enter>, <M-=>, <M-->, <M-?>, <M-$>, ...
META chords are case-sensitive: <M-a> and <M-A> are two different keycodes.
Commands:
|:checkhealth|
|:cquit| can use [count] to set the exit code
|:drop| is always available
|:Man| is available by default, with many improvements such as completion
|:tchdir| tab-local |current-directory|
Some `CTRL-SHIFT-...` key chords are distinguished from `CTRL-...` variants
(even in the terminal). Specifically, the following are known to work:
<C-Tab>, <C-S-Tab>, <C-BS>, <C-S-BS>, <C-Enter>, <C-S-Enter>
Events:
|DirChanged|
|TabNewEntered|
|TermClose|
|TermOpen|
|TextYankPost|
|VimResume|
|VimSuspend|
Functions:
|dictwatcheradd()| notifies a callback whenever a |Dict| is modified
|dictwatcherdel()|
|menu_get()|
|msgpackdump()|, |msgpackparse()| provide msgpack de/serialization
|stdpath()|
|system()|, |systemlist()| can run {cmd} directly (without 'shell')
Highlight groups:
|expr-highlight| highlight groups (prefixed with "Nvim")
|hl-NormalNC| highlights non-current windows
|hl-MsgSeparator| highlights separator for scrolled messages
|hl-QuickFixLine|
|hl-Substitute|
|hl-TermCursor|
|hl-TermCursorNC|
|hl-Whitespace| highlights 'listchars' whitespace
Input:
ALT (|META|) chords always work (even in the |TUI|). Map |<M-| with any key:
<M-1>, <M-BS>, <M-Del>, <M-Ins>, <M-/>, <M-\>, <M-Space>, <M-Enter>, etc.
Case-sensitive: <M-a> and <M-A> are two different keycodes.
ALT in insert-mode behaves like <Esc> if not mapped. |i_ALT|
Mappings:
|<Cmd>| pseudokey
Normal commands:
"Outline": Type |gO| in |:Man| and |:help| pages to see a document outline.
Options:
'cpoptions' flags: |cpo-_|
@ -145,70 +192,20 @@ Variables:
|v:progpath| is always absolute ("full")
|v:windowid| is always available (for use by external UIs)
Commands:
|:checkhealth|
|:drop| is available on all platforms
|:Man| is available by default, with many improvements such as completion
|:tchdir| tab-local |current-directory|
Functions:
|dictwatcheradd()| notifies a callback whenever a |Dict| is modified
|dictwatcherdel()|
|menu_get()|
|msgpackdump()|, |msgpackparse()| provide msgpack de/serialization
Events:
|DirChanged|
|TabNewEntered|
|TermClose|
|TermOpen|
|TextYankPost|
Highlight groups:
|hl-NormalNC| highlights non-current windows
|hl-MsgSeparator| highlights separator for scrolled messages
|hl-QuickFixLine|
|hl-Substitute|
|hl-TermCursor|
|hl-TermCursorNC|
|hl-Whitespace| highlights 'listchars' whitespace
|expr-highlight| highlight groups (prefixed with "Nvim")
Command-line highlighting:
The expression prompt (|@=|, |c_CTRL-R_=|, |i_CTRL-R_=|) is highlighted
using a built-in VimL expression parser. |expr-highlight|
*E5408* *E5409*
|input()|, |inputdialog()| support custom highlighting. |input()-highlight|
*g:Nvim_color_cmdline*
(Experimental) Command-line (|:|) is colored by callback defined in
`g:Nvim_color_cmdline` (this callback is for testing only, and will be
removed in the future).
==============================================================================
4. 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. This is like if Vim's "HUGE"
build was the only Vim release type (except Nvim is smaller than Vim's "HUGE"
build).
certain features removed/added at compile-time. |feature-compile|
If a Python interpreter is available on your `$PATH`, |:python| and |:python3|
are always available and may be used simultaneously in separate plugins. The
`neovim` pip package must be installed to use Python plugins in Nvim (see
|provider-python|).
Because of general |256-color| usage whereever possible, Nvim will even 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 termcap,
and has a |ttybuiltin| setting to control how that combination works. Nvim
uses either one or the other of an external |terminfo| entry or the built-in
one. It does not attempt to mix data from the two.
are always available and may be used simultaneously. See |provider-python|.
|:!| 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|
|:redir| nested in |execute()| works.
@ -225,8 +222,6 @@ makes things faster. |:terminal| output is never throttled.
'p')) mkdir() will silently exit. In Vim this was an error.
3. mkdir() error messages now include strerror() text when mkdir fails.
'encoding' is always "utf-8".
|string()| and |:echo| behaviour changed:
1. No maximum recursion depth limit is applied to nested container
structures.
@ -309,22 +304,53 @@ Highlight groups:
|hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other
groups
Macro/|recording| behavior
Replay of a macro recorded during :lmap produces the same actions as when it
was recorded. In Vim if a macro is recorded while using :lmap'ped keys then
the behaviour during record and replay differs.
'keymap' is implemented via :lmap instead of :lnoremap so that you can use
macros and 'keymap' at the same time. This also means you can use |:imap| on
the results of keys from 'keymap'.
Options:
'ttimeout', 'ttimeoutlen' behavior was simplified
Startup:
|-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. >
: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.
VimL (Vim script) compatibility:
`count` does not alias to |v:count|
|:lmap|s are applied to macro recordings, in Vim if a macro is recorded while
using |:lmap|ped keys then the behaviour during record and replay differs.
'keymap' is implemented via |:lmap| instead of |:lnoremap| in order to allow
using macros and 'keymap' at the same time.
This means that you can use |:imap| on the results of keys from 'keymap'.
==============================================================================
5. Missing legacy features *nvim-features-missing*
Some legacy Vim features are not implemented:
- |if_py|: vim.bindeval() and vim.Function() are not supported
- |if_lua|: the `vim` object is missing most legacy methods
- |if_lua|: the `vim` object is missing some legacy methods
- *if_perl*
- *if_mzscheme*
- *if_tcl*
@ -334,71 +360,43 @@ Some legacy Vim features are not implemented:
These Vim features were intentionally removed from Nvim.
*'cp'* *'nocompatible'* *'nocp'* *'compatible'*
Nvim is always "non-compatible" with Vi.
":set nocompatible" is ignored
":set compatible" is an error
Aliases:
ex (alias for "nvim -e")
exim (alias for "nvim -E")
gex (GUI)
gview (GUI)
gvim (GUI)
gvimdiff (GUI)
rgview (GUI)
rgvim (GUI)
rview (alias for "nvim -RZ")
rvim (alias for "nvim -Z")
view (alias for "nvim -R")
vimdiff (alias for "nvim -d" |diff-mode|)
*'ed'* *'edcompatible'* *'noed'* *'noedcompatible'*
Ed-compatible mode:
":set noedcompatible" is ignored
":set edcompatible" is an error
Commands:
:fixdel
:helpfind
:mode (no longer accepts an argument)
:open
:Print
:shell
:smile
:tearoff
*t_xx* *termcap-options* *t_AB* *t_Sb* *t_vb* *t_SI*
Nvim does not have special `t_XX` options nor <t_XX> keycodes to configure
terminal capabilities. Instead Nvim treats the terminal as any other UI. For
example, 'guicursor' sets the terminal cursor style if possible.
Compile-time features:
EBCDIC
Emacs tags support
X11 integration (see |x11-selection|)
*:set-termcap*
Start Nvim with 'verbose' level 3 to see the 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. >
:echo &term
"builtin_x" means one of the |builtin-terms| was chosen, because the expected
terminfo file was not found on the system.
*termcap*
Nvim never uses the termcap database, only |terminfo| and |builtin-terms|.
*xterm-8bit* *xterm-8-bit*
Xterm can be run in a mode where it uses true 8-bit CSI. Supporting this
requires autodetection of whether the terminal is in UTF-8 mode or non-UTF-8
mode, as the 8-bit CSI character has to be written differently in each case.
Vim issues a "request version" sequence to the terminal at startup and looks
at how the terminal is sending CSI. Nvim does not issue such a sequence and
always uses 7-bit control sequences.
'ttyfast':
":set ttyfast" is ignored
":set nottyfast" is an error
Encryption support:
*'cryptmethod'* *'cm'*
*'key'*
MS-DOS support:
'bioskey'
'conskey'
Test functions:
test_alloc_fail()
test_autochdir()
test_garbagecollect_now()
test_null_channel()
test_null_dict()
test_null_job()
test_null_list()
test_null_partial()
test_null_string()
test_override()
test_settime()
Other options:
Options:
'antialias'
'cpoptions' (g j k H w < * - and all POSIX flags were removed)
'bioskey' (MS-DOS)
'conskey' (MS-DOS)
*'cp'* *'nocompatible'* *'nocp'* *'compatible'* (Nvim is always "nocompatible".)
'cpoptions' (gjkHw<*- and all POSIX flags were removed)
*'cryptmethod'* *'cm'* *'key'* (Vim encryption implementation)
*'ed'* *'edcompatible'* *'noed'* *'noedcompatible'*
'encoding' ("utf-8" is always used)
'esckeys'
'guioptions' "t" flag was removed
@ -423,42 +421,45 @@ Other options:
*'ttymouse'* *'ttym'*
*'ttyscroll'* *'tsl'*
*'ttytype'* *'tty'*
'ttyfast'
'weirdinvert'
Other commands:
:Print
:fixdel
:helpfind
:mode (no longer accepts an argument)
:open
:shell
:smile
:tearoff
Other compile-time features:
EBCDIC
Emacs tags support
X11 integration (see |x11-selection|)
Startup:
--literal (file args are always literal; to expand wildcards on Windows, use
|:n| e.g. `nvim +"n *"`)
Easy mode: eview, evim, nvim -y
Vi mode: nvim -v
Nvim does not have a built-in GUI and hence the following aliases have been
removed: gvim, gex, gview, rgvim, rgview
Test functions:
test_alloc_fail()
test_autochdir()
test_disable_char_avail()
test_garbagecollect_now()
test_null_channel()
test_null_dict()
test_null_job()
test_null_list()
test_null_partial()
test_null_string()
test_override()
test_settime()
"Easy mode" (eview, evim, nvim -y)
"(g)vimdiff" (alias for "(g)nvim -d" |diff-mode|)
"Vi mode" (nvim -v)
TUI:
*t_xx* *termcap-options* *t_AB* *t_Sb* *t_vb* *t_SI*
Nvim does not have special `t_XX` options nor <t_XX> keycodes to configure
terminal capabilities. Instead Nvim treats the terminal as any other UI,
e.g. 'guicursor' sets the terminal cursor style if possible.
The ability to start nvim via the following aliases has been removed in favor
of just using their command line arguments:
*termcap*
Nvim never uses the termcap database, only |terminfo| and |builtin-terms|.
ex nvim -e
exim nvim -E
view nvim -R
rvim nvim -Z
rview nvim -RZ
*xterm-8bit* *xterm-8-bit*
Xterm can be run in a mode where it uses true 8-bit CSI. Supporting this
requires autodetection of whether the terminal is in UTF-8 mode or non-UTF-8
mode, as the 8-bit CSI character has to be written differently in each case.
Vim issues a "request version" sequence to the terminal at startup and looks
at how the terminal is sending CSI. Nvim does not issue such a sequence and
always uses 7-bit control sequences.
==============================================================================
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@ -102,12 +102,13 @@ Dictionary nvim_get_hl_by_id(Integer hl_id, Boolean rgb, Error *err)
return hl_get_attr_by_id(attrcode, rgb, err);
}
/// Passes input keys to Nvim.
/// Sends input-keys to Nvim, subject to various quirks controlled by `mode`
/// flags. This is a blocking call, unlike |nvim_input()|.
///
/// On execution error: does not fail, but updates v:errmsg.
///
/// @param keys to be typed
/// @param mode mapping options
/// @param mode behavior flags, see |feedkeys()|
/// @param escape_csi If true, escape K_SPECIAL/CSI bytes in `keys`
/// @see feedkeys()
/// @see vim_strsave_escape_csi
@ -169,13 +170,12 @@ void nvim_feedkeys(String keys, String mode, Boolean escape_csi)
}
}
/// Passes keys to Nvim as raw user-input.
/// Queues raw user-input. Unlike |nvim_feedkeys()|, this uses a low-level
/// input buffer and the call is non-blocking (input is processed
/// asynchronously by the eventloop).
///
/// On execution error: does not fail, but updates v:errmsg.
///
/// Unlike `nvim_feedkeys`, this uses a lower-level input buffer and the call
/// is not deferred. This is the most reliable way to send real user input.
///
/// @note |keycodes| like <CR> are translated, so "<" is special.
/// To input a literal "<", send <LT>.
///

View File

@ -236,7 +236,7 @@ int main(int argc, char **argv)
char_u *fname = NULL; // file name from command line
mparm_T params; // various parameters passed between
// main() and other functions.
char_u *cwd = NULL; // current workding dir on startup
char_u *cwd = NULL; // current working dir on startup
time_init();
// Many variables are in `params` so that we can pass them around easily.

View File

@ -44,6 +44,7 @@ static struct termios termios_default;
/// @param tty_fd TTY file descriptor, or -1 if not in a terminal.
void pty_process_save_termios(int tty_fd)
{
DLOG("tty_fd=%d", tty_fd);
if (tty_fd == -1 || tcgetattr(tty_fd, &termios_default) != 0) {
return;
}

View File

@ -17,11 +17,6 @@ For some failures, `.nvimlog` (or `$NVIM_LOG_FILE`) may provide insight.
Running tests
-------------
Neovim uses third-party tooling to execute tests. So be sure, from the
repository directory, to build the tools before testing:
make cmake
## Executing Tests
To run all _non-legacy_ (unit + functional) tests:
@ -89,6 +84,7 @@ To run only the tagged tests:
TEST_TAG=foo make functionaltest
**NOTES**:
* Tags are mainly used for testing issues (ex: `#1234`), so use the following
method.
* `TEST_FILE` is not a pattern string like `TEST_TAG` or `TEST_FILTER`. The