docs(term.txt): reorder paragraphs about TUI input (#24367)

Make |tui-modifyOtherKeys| and |tui-csiu| tags appear at a better place.
Also adapt the |<Tab>| help update from dad4473f02
This commit is contained in:
zeertzjq 2023-07-16 18:39:45 +08:00 committed by GitHub
parent 251ca45ac9
commit 047c22a28c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 25 deletions

View File

@ -372,6 +372,7 @@ notation meaning equivalent decimal value(s) ~
<C-…> control-key *control* *ctrl* *<C-*
<M-…> alt-key or meta-key *META* *ALT* *<M-*
<A-…> same as <M-…> *<A-*
<T-…> meta-key when it's not alt *<T-*
<D-…> command-key or "super" key *<D-*
----------------------------------------------------------------------- ~

View File

@ -1026,6 +1026,12 @@ CTRL-O Go to [count] Older cursor position in jump list
CTRL-I Go to [count] newer cursor position in jump list
(not a motion command).
NOTE: In the GUI and in a terminal supporting
|tui-modifyOtherKeys| or |tui-csiu|, CTRL-I can be
mapped separately from <Tab>, on the condition that
both keys are mapped, otherwise the mapping applies to
both.
*:ju* *:jumps*
:ju[mps] Print the jump list (not a motion command).

View File

@ -104,6 +104,9 @@ The following new APIs and features were added.
• |nvim_set_keymap()| and |nvim_del_keymap()| now support abbreviations.
• Builtin TUI can now recognize "super" (|<D-|) and "meta" (|<T-|) modifiers in a
terminal emulator that supports |tui-csiu|.
• Implemented LSP inlay hints: |vim.lsp.inlay_hint()|
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_inlayHint

View File

@ -109,9 +109,21 @@ it will make use of this ability to speed up scrolling that is not the full
width of the terminal.
*tui-input*
Historically, terminal emulators could not distinguish between certain control
key modifiers and other keys. For example, <C-I> and <Tab> are represented in
the same way, as are <Esc> and <C-[>, <CR> and <C-M>, and <NL> and <C-J>.
Modern terminal emulators are able to distinguish between these pairs of keys
by encoding control modifiers differently. There are two common but distinct
ways of doing this, known as "modifyOtherKeys" and "CSI u". Nvim supports both
encoding methods and at startup will tell the terminal emulator that it
understands these key encodings. If your terminal emulator supports it then
this will allow you to map the key pairs listed above separately. |<Tab>|
Nvim uses libtermkey to convert terminal escape sequences to key codes.
|terminfo| is used first, and CSI sequences not in |terminfo| (including
extended keys a.k.a. modifyOtherKeys or "CSI u") can also be parsed.
extended keys a.k.a. "modifyOtherKeys" or "CSI u") can also be parsed.
For example, when running Nvim in tmux, this makes Nvim leave Insert mode and
go to the window below: >
tmux send-keys 'Escape' [ 2 7 u 'C-W' j
@ -124,42 +136,22 @@ For example, this sequence is recognized by Nvim as <C-kEnter>: >
and can be used differently from <C-CR> in mappings.
*tui-modifyOtherKeys* *tui-csiu*
Historically, terminal emulators could not distinguish between certain control
key modifiers and other keys. For example, <C-I> and <Tab> are represented the
same way, as are <Esc> and <C-[>, <CR> and <C-M>, and <NL> and <C-J>. This
meant that Nvim also could not map these keys separately.
Modern terminal emulators are able to distinguish between these pairs of keys
by encoding control modifiers differently. There are two common but distinct
ways of doing this, known as "modifyOtherKeys" and "CSI u". Nvim supports both
encoding methods and at startup will tell the terminal emulator that it
understands these key encodings. If your terminal emulator supports it then
this will allow you to map the key pairs listed above separately.
At startup Nvim will query your terminal to see if it supports the CSI u
At startup Nvim will query your terminal to see if it supports the "CSI u"
encoding by writing the sequence >
CSI ? u CSI c
If your terminal emulator responds with >
CSI ? <flags> u
this means your terminal supports the CSI u encoding and Nvim will tell your
this means your terminal supports the "CSI u" encoding and Nvim will tell your
terminal to enable it by writing the sequence >
CSI > 1 u
If your terminal does not support CSI u then Nvim will instead enable the
If your terminal does not support "CSI u" then Nvim will instead enable the
"modifyOtherKeys" encoding by writing the sequence >
CSI > 4 ; 2 m
When Nvim exits cleanly it will send the corresponding sequence to disable the
special key encoding. If Nvim does not exit cleanly then your terminal
emulator could be in a bad state. If this happens, simply run "reset".
*tui-colors*
Nvim uses 256 colours by default, ignoring |terminfo| for most terminal types,
including "linux" (whose virtual terminals have had 256-colour support since