kakoune/doc/pages/registers.asciidoc
Johannes Altmanninger c335712e4e doc registers: document prompt history registers
So far they have only been talked about in source code
(HistoryRegister), not in documentation.

Let's give them an official name so users can find them better;
"prompt history register" seems better than "history register" since
the former gives more context. OTOH, in future other registers (like @)
could grow into history registers, so I'm not sure.

State that the history registers are only changed by _interactive_
prompts; that's not quite true yet for user modes but I'll push a
separate fix for that.
2022-08-01 10:15:52 +02:00

115 lines
3.5 KiB
Plaintext

= Registers
== Description
Registers are named lists of text -instead of simply text- in order to interact
well with multiselection. They are used for various purposes, like storing
yanked text, the locations of selections in a buffer, or groups captured by a
regular expression.
== Interacting
*<c-r><c>*::
when in insert mode or in a prompt, insert the value stored in the
*c* register (single character)
*"<c>*::
in normal mode, select the *<c>* register (single character)
== Alternate names
Non alphanumeric registers have an alternative name that can be used
in contexts where only alphanumeric identifiers are possible.
== Default registers
All normal-mode commands using a register default to a specific one if not specified:
*"* (dquote)::
default delete / copy / paste / replace register, used by:
*c*, *d*, *y*, *p*, *<a-p>*, *<P>*, *<a-P>*, *R* and *<a-R>*
(see <<keys#changes, `:doc keys changes`>>)
*/* (slash)::
default search / regex register, used by:
*/*, *<a-/>*, *?*, *<a-?>*, *n*, *<a-n>*, *N*, *<a-N>*, ***, *<a-*>*,
*s*, *S*, *<a-k>* and *<a-K>*
(see <<keys#searching, `:doc keys searching`>>).
This is a prompt history register, holding the last 100 commands entered
at an interactive regex prompt.
*@* (arobase)::
default macro register, used by:
*q* and *Q*
(see <<keys#macros, `:doc keys macros`>>)
*^* (caret)::
default mark register, used by:
*z*, *<a-z>*, *Z* and *<a-Z>*
(see <<keys#marks, `:doc keys marks`>>
and <<registers#marks, `:doc registers marks`>>)
*|* (pipe)::
default shell command register, used by commands that spawn a subshell:
*|*, *<a-|>*, *!* and *<a-!>*
(see <<keys#changes-through-external-programs, `:doc keys changes-through-external-programs`>>).
This is a prompt history register, holding the last 100 commands entered
at interactive shell command prompts, except for commands starting with
a space.
== Special registers
Some registers are not general purposes, they cannot be written to, but they
contain some special data
*%* (percent)::
current buffer name
*.* (dot)::
current selection contents
*#* (hash)::
selection indices (first selection has 1, second has 2, ...)
*_* (underscore)::
null register, always empty
*:* (colon)::
prompt history register holding the last 100 commands entered at the
interactive prompt, except for commands starting with a space.
== Integer registers
Registers *1* to *9* hold the grouped sub-matches of the regular
expression used to make the last selection. Example: applying the
following regular expression to the date of the day would put the day of
the week in register *1*, the month in register *2*, and the day of the
month in register *3*, but select the entire date:
--------------------
(\w+) (\w+) (\d+) .+
--------------------
== Marks
When a register is used to store a set of selections with the *Z* key (see
<<keys#marks, `:doc keys marks`>>), the selections are stored as a list of
spans, in a format similar to `%val{selections_desc}` (see
<<expansions#value-expansions, `:doc expansions value-expansions`>>). However,
the very first item of the list is of the form:
------------------------------------------
<buffer name>@<timestamp>@<main sel index>
------------------------------------------
with:
*buffer name*::
`%val{buffile}` of the buffer selections relate to
*timestamp*::
`%val{timestamp}` at which the selection applies to
*main sel index*::
0-based index of the main selection