kakoune/doc/pages/registers.asciidoc

115 lines
3.5 KiB
Plaintext
Raw Normal View History

= Registers
== Description
2016-02-10 22:03:49 +01:00
Registers are named lists of text -instead of simply text- in order to interact
2017-05-11 20:42:09 +02:00
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>*::
2017-11-02 10:37:39 +01:00
when in insert mode or in a prompt, insert the value stored in the
*c* register (single character)
*"<c>*::
2017-11-02 10:37:39 +01:00
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
2016-02-10 22:03:49 +01:00
Some registers are not general purposes, they cannot be written to, but they
contain some special data
*%* (percent)::
2017-11-02 10:37:39 +01:00
current buffer name
*.* (dot)::
2017-11-02 10:37:39 +01:00
current selection contents
*#* (hash)::
2017-11-02 10:37:39 +01:00
selection indices (first selection has 1, second has 2, ...)
*_* (underscore)::
2017-11-02 10:37:39 +01:00
null register, always empty
2016-03-31 10:19:33 +02:00
*:* (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
2020-04-12 14:26:14 +02:00
<<expansions#value-expansions, `:doc expansions value-expansions`>>). However,
the very first item of the list is of the form:
2019-12-10 11:14:03 +01:00
------------------------------------------
<buffer name>@<timestamp>@<main sel index>
------------------------------------------
2019-12-10 11:14:03 +01:00
with:
2019-12-10 11:14:03 +01:00
*buffer name*::
`%val{buffile}` of the buffer selections relate to
2019-12-10 11:14:03 +01:00
*timestamp*::
2020-05-28 18:37:26 +02:00
`%val{timestamp}` at which the selection applies to
2019-12-10 11:14:03 +01:00
*main sel index*::
0-based index of the main selection