2017-11-02 03:03:24 +01:00
|
|
|
= Keys
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Key Syntax
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-01-25 01:14:11 +01:00
|
|
|
Usual keys are written using their ascii character, including capital
|
|
|
|
keys. Non printable keys use an alternate name, written between *<*
|
|
|
|
and *>*, such as *<esc>* or *<del>*. Modified keys are written between
|
|
|
|
*<* and *>* as well, with the modifier specified as either *c* for
|
2018-03-15 13:02:27 +01:00
|
|
|
Control, *a* for Alt, or *s* for Shift, followed by a *-* and the key (either
|
|
|
|
its name or ascii character), for example *<c-x>*, *<a-space>*, *<c-a-w>*.
|
2017-01-25 01:14:11 +01:00
|
|
|
|
2017-11-06 10:08:59 +01:00
|
|
|
In order to bind some keys to arbitrary ones, refer to <<mapping#,`:doc mapping`>>
|
2017-03-07 15:39:40 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Insert mode
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<esc>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
leave insert mode
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<backspace>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
delete characters before cursors
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<del>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
delete characters under cursors
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<left>*, *<right>*, *<up>*, *<down>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move the cursors in given direction
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<home>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move cursors to line begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<end>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move cursors to end of line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-03-05 08:47:28 +01:00
|
|
|
*<c-r>*::
|
|
|
|
insert contents of the register given by next key
|
|
|
|
|
|
|
|
*<c-v>*::
|
|
|
|
insert next keystroke directly into the buffer, without interpreting it
|
|
|
|
|
|
|
|
*<c-u>*::
|
|
|
|
commit changes up to now as a single undo group
|
|
|
|
|
2019-10-28 22:18:55 +01:00
|
|
|
*<a-;>*, *<a-semicolon>*::
|
2018-03-05 08:47:28 +01:00
|
|
|
escape to normal mode for a single command
|
|
|
|
|
|
|
|
== Insert mode completion
|
|
|
|
|
|
|
|
The `completers` option controls automatic completion, which kicks in when
|
|
|
|
the value specified in the `idle_timeout` option is reached.
|
|
|
|
|
|
|
|
*<c-o>*::
|
2018-08-27 22:02:15 +02:00
|
|
|
toggle automatic completion
|
2018-03-05 08:47:28 +01:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<c-n>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select next completion candidate
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-p>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select previous completion candidate
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-x>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
explicit insert completion query, followed by:
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*f*:::
|
|
|
|
explicit file completion
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*w*:::
|
|
|
|
explicit word completion (current buffer)
|
2017-10-24 22:41:13 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*W*:::
|
|
|
|
explicit word completion (all buffers)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*l*:::
|
2018-03-05 08:47:28 +01:00
|
|
|
explicit line completion (current buffer)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-03-05 08:47:28 +01:00
|
|
|
*L*:::
|
|
|
|
explicit line completion (all buffers)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Using Counts
|
2017-02-19 14:18:00 +01:00
|
|
|
|
2019-02-01 18:19:50 +01:00
|
|
|
In normal mode, commands can be prefixed with a numeric `count`, which can control
|
2017-02-19 14:18:00 +01:00
|
|
|
the command behaviour.
|
|
|
|
|
2017-04-21 12:32:47 +02:00
|
|
|
For example, *3W* selects 3 consecutive words and *3w* select the third word on
|
2018-05-07 09:33:17 +02:00
|
|
|
the right of the end of each selection.
|
2017-02-19 14:18:00 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Disabling Hooks
|
2017-02-19 14:18:00 +01:00
|
|
|
|
2020-10-22 14:39:10 +02:00
|
|
|
Any normal mode command can be prefixed with `\` which will disable hook execution
|
2017-02-19 14:18:00 +01:00
|
|
|
for the duration for the command (including the duration of modes the command could
|
2020-10-22 14:39:10 +02:00
|
|
|
move to, so `\i` will disable hooks for the whole insert session) (see
|
|
|
|
<<hooks#,`:doc hooks`>>).
|
2017-02-19 14:18:00 +01:00
|
|
|
|
|
|
|
As autoindentation is implemented in terms of hooks, this can be used to disable
|
|
|
|
it when pasting text.
|
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Movement
|
|
|
|
|
2021-06-09 09:50:03 +02:00
|
|
|
'word' is a sequence of alphanumeric characters, or those in the `extra_word_chars`
|
|
|
|
option (see <<options#builtin-options,`:doc options builtin-options`>>).
|
|
|
|
'WORD' is a sequence of non whitespace characters. Generally, a movement on its own
|
2018-05-07 09:33:17 +02:00
|
|
|
will move each selection to cover the text moved over, while holding down
|
|
|
|
the Shift modifier and moving will extend each selection instead.
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*h*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the character on the left of the end of each selection
|
2019-09-15 11:40:38 +02:00
|
|
|
`<left>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*j*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the character below the end of each selection
|
2019-09-15 11:40:38 +02:00
|
|
|
`<down>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*k*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the character above the end of each selection
|
2019-09-15 11:40:38 +02:00
|
|
|
`<up>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*l*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the character on the right of the end of each selection
|
2019-09-15 11:40:38 +02:00
|
|
|
`<right>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*w*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the word and following whitespaces on the right of the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*b*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select preceding whitespaces and the word on the left of the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*e*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select preceding whitespaces and the word on the right of the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-[wbe]>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
same as [wbe] but select WORD instead of word
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*f*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select to the next occurrence of given character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*t*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select until the next occurrence of given character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-[ft]>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
same as [ft] but in the other direction
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-06-02 17:16:32 +02:00
|
|
|
*<a-.>*::
|
|
|
|
repeat last object or *f*/*t* selection command
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*m*::
|
2020-05-28 18:37:26 +02:00
|
|
|
select to the next sequence enclosed by matching characters, see the
|
2018-09-23 18:43:22 +02:00
|
|
|
`matching_pairs` option in <<options#,`:doc options`>>
|
2018-09-30 08:41:17 +02:00
|
|
|
|
|
|
|
*M*::
|
|
|
|
extend the current selection to the next sequence enclosed by matching
|
|
|
|
character, see the `matching_pairs` option in <<options#,`:doc options`>>
|
|
|
|
|
|
|
|
*<a-m>*::
|
2020-05-28 18:37:26 +02:00
|
|
|
select to the previous sequence enclosed by matching characters, see the
|
2018-09-30 08:41:17 +02:00
|
|
|
`matching_pairs` option in <<options#,`:doc options`>>
|
|
|
|
|
|
|
|
*<a-M>*::
|
|
|
|
extend the current selection to the previous sequence enclosed by matching
|
2020-05-28 18:37:26 +02:00
|
|
|
characters, see the `matching_pairs` option in <<options#,`:doc options`>>
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*x*::
|
2017-11-02 10:37:39 +01:00
|
|
|
expand selections to contain full lines (including end-of-lines)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2022-03-16 23:20:07 +01:00
|
|
|
*<a-x>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
trim selections to only contain full lines (not including last
|
|
|
|
end-of-line)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-06-03 14:17:32 +02:00
|
|
|
*%*, *<percent>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select whole buffer
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*<a-h>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select to line begin
|
2019-09-15 11:40:38 +02:00
|
|
|
`<home>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-09-15 11:40:38 +02:00
|
|
|
*<a-l>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select to line end
|
2019-09-15 11:40:38 +02:00
|
|
|
`<end>` maps to this by default.
|
|
|
|
(See <<mapping#default-mappings,`:doc mapping default-mappings`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-07-11 18:23:10 +02:00
|
|
|
*<pageup>, <c-b>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
scroll one page up
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-07-11 18:23:10 +02:00
|
|
|
*<pagedown>, <c-f>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
scroll one page down
|
2017-10-04 12:47:56 +02:00
|
|
|
|
|
|
|
*<c-u>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
scroll half a page up
|
2017-10-04 12:47:56 +02:00
|
|
|
|
|
|
|
*<c-d>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
scroll half a page down
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-10-28 22:18:55 +01:00
|
|
|
*;*, *<semicolon>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
reduce selections to their cursor
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-10-28 22:18:55 +01:00
|
|
|
*<a-;>*, *<a-semicolon>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
flip the direction of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-:>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
ensure selections are in forward direction (cursor after anchor)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Changes
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-05-24 16:04:06 +02:00
|
|
|
Yanking (copying) and pasting use the *"* register by default (See <<registers#,`:doc registers`>>)
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*i*::
|
2018-05-07 09:33:17 +02:00
|
|
|
enter insert mode before selections
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*a*::
|
2018-05-07 09:33:17 +02:00
|
|
|
enter insert mode after selections
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*d*::
|
2018-05-07 09:33:17 +02:00
|
|
|
yank and delete selections
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*c*::
|
2018-05-07 09:33:17 +02:00
|
|
|
yank and delete selections and enter insert mode
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*.*::
|
2017-11-02 10:37:39 +01:00
|
|
|
repeat last insert mode change (*i*, *a*, or *c*, including the
|
|
|
|
inserted text)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-07-11 06:49:29 +02:00
|
|
|
*<a-d>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
delete selections (not yanking)
|
2017-07-11 06:49:29 +02:00
|
|
|
|
|
|
|
*<a-c>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
delete selections and enter insert mode (not yanking)
|
2017-07-11 06:49:29 +02:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*I*::
|
2018-05-07 09:33:17 +02:00
|
|
|
enter insert mode at the beginning of the lines containing
|
|
|
|
the start of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*A*::
|
2018-05-07 09:33:17 +02:00
|
|
|
enter insert mode at the end of the lines containing
|
|
|
|
the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*o*::
|
2019-02-01 18:19:50 +01:00
|
|
|
enter insert mode in a new line (or in a given `count` of new lines)
|
2018-05-07 09:33:17 +02:00
|
|
|
below the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*O*::
|
2019-02-01 18:19:50 +01:00
|
|
|
enter insert mode in a new line (or in a given `count` of new lines)
|
2018-05-07 09:33:17 +02:00
|
|
|
above the beginning of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-07-10 11:55:19 +02:00
|
|
|
*<a-o>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
add an empty line below cursor
|
2017-07-10 11:55:19 +02:00
|
|
|
|
|
|
|
*<a-O>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
add an empty line above cursor
|
2017-07-10 11:55:19 +02:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*y*::
|
2017-11-02 10:37:39 +01:00
|
|
|
yank selections
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*p*::
|
2018-05-07 09:33:17 +02:00
|
|
|
paste after the end of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*P*::
|
2018-05-07 09:33:17 +02:00
|
|
|
paste before the beginning of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-p>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
paste all after the end of each selection, and select each pasted string
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-P>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
paste all before the start of each selection, and select each pasted string
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*R*::
|
2018-05-07 09:33:17 +02:00
|
|
|
replace selections with yanked text
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-07-09 12:00:28 +02:00
|
|
|
*<a-R>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
replace selections with every yanked text
|
2017-07-09 12:00:28 +02:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*r*::
|
2017-11-02 10:37:39 +01:00
|
|
|
replace each character with the next entered one
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-j>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
join selected lines
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-J>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
join selected lines and select spaces inserted in place of line breaks
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-29 19:41:41 +02:00
|
|
|
*<a-_>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
merge contiguous selections together (works across lines as well)
|
2016-08-29 10:48:40 +02:00
|
|
|
|
2021-02-14 23:01:14 +01:00
|
|
|
*<+>*, *<plus>*::
|
|
|
|
duplicate each selection (generating overlapping selections)
|
|
|
|
|
|
|
|
*<a-+>*, *<a-plus>*::
|
|
|
|
merge overlapping selections
|
|
|
|
|
2020-07-19 20:55:09 +02:00
|
|
|
*>*, *<gt>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
indent selected lines
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-07-19 20:55:09 +02:00
|
|
|
*<a\->>*, *<a-gt>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
indent selected lines, including empty lines
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-07-19 20:55:09 +02:00
|
|
|
*<*, *<lt>*::
|
2020-05-28 18:37:26 +02:00
|
|
|
unindent selected lines
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-07-19 20:55:09 +02:00
|
|
|
*<a-<>*, *<a-lt>*::
|
2020-05-28 18:37:26 +02:00
|
|
|
unindent selected lines, do not remove incomplete indent (3 leading
|
2017-11-02 10:37:39 +01:00
|
|
|
spaces when indent is 4)
|
2016-02-10 22:03:49 +01:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*u*::
|
2017-11-02 10:37:39 +01:00
|
|
|
undo last change
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2016-07-26 08:26:13 +02:00
|
|
|
*<a-u>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move backward in history
|
2016-07-26 08:26:13 +02:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*U*::
|
2017-11-02 10:37:39 +01:00
|
|
|
redo last change
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2016-07-26 08:26:13 +02:00
|
|
|
*<a-U>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move forward in history
|
2016-07-26 08:26:13 +02:00
|
|
|
|
2022-08-15 22:21:53 +02:00
|
|
|
*<c-h>*::
|
|
|
|
undo last selection change
|
|
|
|
|
|
|
|
*<c-k>*::
|
|
|
|
redo last selection change
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*&*::
|
2018-05-07 09:33:17 +02:00
|
|
|
align selections, align the cursor of each selection by inserting spaces
|
|
|
|
before the first character of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-&>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
copy indent, copy the indentation of the main selection (or the
|
2019-02-01 18:19:50 +01:00
|
|
|
`count` one if a `count` is given) to all other ones
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*`*::
|
2017-11-02 10:37:39 +01:00
|
|
|
to lower case
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*~*::
|
2017-11-02 10:37:39 +01:00
|
|
|
to upper case
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-`>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
swap case
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*@*::
|
2018-05-07 09:33:17 +02:00
|
|
|
convert tabs to spaces in each selection, uses the buffer tabstop
|
2019-02-01 18:19:50 +01:00
|
|
|
option or the `count` parameter for tabstop
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-@>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
convert spaces to tabs in each selection, uses the buffer tabstop
|
2019-02-01 18:19:50 +01:00
|
|
|
option or the `count` parameter for tabstop
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-02-13 14:35:10 +01:00
|
|
|
*_*::
|
2018-09-24 15:39:18 +02:00
|
|
|
unselect whitespace surrounding each selection, drop those that only
|
|
|
|
contain whitespace
|
2018-02-13 14:35:10 +01:00
|
|
|
|
2018-03-25 01:34:38 +01:00
|
|
|
*<a-)>*::
|
2019-02-01 18:19:50 +01:00
|
|
|
rotate selections content, if specified, the `count` groups selections,
|
2017-11-02 10:37:39 +01:00
|
|
|
so the following command
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2016-03-12 10:13:49 +01:00
|
|
|
----------
|
2018-04-19 18:55:41 +02:00
|
|
|
3<a-)>
|
2016-03-12 10:13:49 +01:00
|
|
|
----------
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-05-28 18:37:26 +02:00
|
|
|
rotates (1, 2, 3) and (3, 4, 6) independently
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-03-25 01:34:38 +01:00
|
|
|
*<a-(>*::
|
|
|
|
rotate selections content backward
|
|
|
|
|
2018-05-24 16:04:06 +02:00
|
|
|
== Changes through external programs
|
|
|
|
|
|
|
|
Shell expansions are available, (See <<expansions#shell-expansions,`:doc expansions shell-expansions`>>)
|
2022-07-29 21:04:11 +02:00
|
|
|
The default command comes from the *|* register (See <<registers#,`:doc registers`>>)
|
2018-05-24 16:04:06 +02:00
|
|
|
|
|
|
|
*|*::
|
|
|
|
pipe each selection through the given external filter program and
|
|
|
|
replace the selection with its output.
|
|
|
|
|
|
|
|
*<a-|>*::
|
|
|
|
pipe each selection through the given external filter program and
|
|
|
|
ignore its output.
|
|
|
|
|
|
|
|
*!*::
|
2021-07-22 15:12:18 +02:00
|
|
|
insert and select command output before each selection.
|
2018-05-24 16:04:06 +02:00
|
|
|
|
|
|
|
*<a-!>*::
|
2021-07-22 15:12:18 +02:00
|
|
|
append and select command output after each selection.
|
2018-05-24 16:04:06 +02:00
|
|
|
|
|
|
|
== Searching
|
|
|
|
|
|
|
|
Searches use the */* register by default (See <<registers#,`:doc registers`>>)
|
|
|
|
|
|
|
|
*/*::
|
|
|
|
select next match after each selection
|
|
|
|
|
|
|
|
*<a-/>*::
|
|
|
|
select previous match before each selection
|
|
|
|
|
|
|
|
*?*::
|
|
|
|
extend to next match after each selection
|
|
|
|
|
|
|
|
*<a-?>*::
|
|
|
|
extend to previous match before each selection
|
|
|
|
|
|
|
|
*n*::
|
|
|
|
select next match after the main selection
|
|
|
|
|
|
|
|
*N*::
|
|
|
|
add a new selection with next match after the main selection
|
|
|
|
|
|
|
|
*<a-n>*::
|
|
|
|
select previous match before the main selection
|
|
|
|
|
|
|
|
*<a-N>*::
|
|
|
|
add a new selection with previous match before the main selection
|
|
|
|
|
|
|
|
***::
|
|
|
|
set the search pattern to the main selection (automatically
|
|
|
|
detects word boundaries)
|
|
|
|
|
|
|
|
*<a-***>*::
|
|
|
|
set the search pattern to the main selection (verbatim, no smart
|
|
|
|
detection)
|
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
== Goto commands
|
2017-01-23 00:53:08 +01:00
|
|
|
|
2017-06-15 14:14:05 +02:00
|
|
|
*g*, *G*::
|
2019-02-01 18:19:50 +01:00
|
|
|
When a `count` is specified, *G* only extends the selection to the given line,
|
2017-11-02 10:37:39 +01:00
|
|
|
*g* sends the anchor to the given line and a menu is then displayed which waits
|
|
|
|
for one of the following additional keys:
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*h*:::
|
|
|
|
go to line begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*l*:::
|
|
|
|
go to line end
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*i*:::
|
|
|
|
go to non blank line start
|
2017-01-23 00:53:08 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*g*, *k*:::
|
|
|
|
go to the first line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*j*:::
|
|
|
|
go to the last line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*e*:::
|
|
|
|
go to last char of last line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*t*:::
|
|
|
|
go to the first displayed line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*c*:::
|
|
|
|
go to the middle displayed line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*b*:::
|
|
|
|
go to the last displayed line
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*a*:::
|
|
|
|
go to the previous (alternate) buffer
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*f*:::
|
|
|
|
open the file whose name is selected
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*.*:::
|
|
|
|
go to last buffer modification position
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== View commands
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-06-15 14:14:05 +02:00
|
|
|
*v*, *V*::
|
2017-11-02 10:37:39 +01:00
|
|
|
*V* enters lock view mode (which will be left when the <esc> is hit),
|
|
|
|
and *v* modifies the current view; a menu is then displayed which waits
|
|
|
|
for one of the following additional keys:
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*v*, *c*:::
|
|
|
|
center the main selection in the window (vertically)
|
2017-10-06 17:49:13 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*m*:::
|
|
|
|
center the main selection in the window (horizontally)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*t*:::
|
|
|
|
scroll to put the main selection on the top line of the window
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*b*:::
|
|
|
|
scroll to put the main selection on the bottom line of the window
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*h*:::
|
2019-02-01 18:19:50 +01:00
|
|
|
scroll the window `count` columns left
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*j*:::
|
2019-02-01 18:19:50 +01:00
|
|
|
scroll the window `count` line downward
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*k*:::
|
2019-02-01 18:19:50 +01:00
|
|
|
scroll the window `count` line upward
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*l*:::
|
2019-02-01 18:19:50 +01:00
|
|
|
scroll the window `count` columns right
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Marks
|
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
Current selections position can be saved in a register and restored later on.
|
|
|
|
Marks use the *^* register by default (See <<registers#,`:doc registers`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*Z*::
|
2018-05-07 09:33:17 +02:00
|
|
|
save selections to the register
|
2016-11-09 14:57:05 +01:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*z*::
|
2018-05-07 09:33:17 +02:00
|
|
|
restore selections from the register
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-06-15 14:14:05 +02:00
|
|
|
*<a-z>*, *<a-Z>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
*<a-z>* combines selections from the register with the current ones, whereas
|
|
|
|
*<a-Z>* combines current selections with the ones in the register; a menu
|
|
|
|
is then displayed which waits for one of the following additional keys:
|
2017-05-20 11:31:49 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*a*:::
|
2018-05-07 09:33:17 +02:00
|
|
|
append selections
|
2017-05-20 11:31:49 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*u*:::
|
2018-05-07 09:33:17 +02:00
|
|
|
keep a union of selections
|
2017-06-15 14:14:05 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*i*:::
|
2018-05-07 09:33:17 +02:00
|
|
|
keep an intersection of selections
|
2017-06-15 14:14:05 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*<*:::
|
|
|
|
select the selection with the leftmost cursor for each pair
|
2017-06-15 14:14:05 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*>*:::
|
|
|
|
select the selection with the rightmost cursor for each pair
|
2017-06-15 14:14:05 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*+*:::
|
|
|
|
select the longest selection
|
2017-06-15 14:14:05 +02:00
|
|
|
|
2017-11-02 10:37:39 +01:00
|
|
|
*-*:::
|
|
|
|
select the shortest selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Macros
|
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
Macros use the *@* register by default (See <<registers#,`:doc registers`>>)
|
2017-05-17 14:22:27 +02:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*Q*::
|
2017-11-02 10:37:39 +01:00
|
|
|
start or end macro recording
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*q*::
|
2017-11-02 10:37:39 +01:00
|
|
|
play a recorded macro
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
*<esc>*::
|
|
|
|
end macro recording
|
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Jump list
|
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
Some commands, like the goto commands, buffer switch or search commands,
|
|
|
|
push the previous selections to the client's jump list. It is possible
|
|
|
|
to skim through the jump list using:
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<c-i>*::
|
2017-11-10 18:06:38 +01:00
|
|
|
jump forward
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-o>*::
|
2017-11-10 18:06:38 +01:00
|
|
|
jump backward
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-s>*::
|
2021-09-11 08:14:51 +02:00
|
|
|
create a jump step, but also save the current selection to have it be
|
|
|
|
restored when the step is subsequently cycled through
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Multiple selections
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-05-24 16:04:06 +02:00
|
|
|
*s*, *S*, *<a-k>* and *<a-K>* use the */* register by default (See <<registers#,`:doc registers`>>)
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*s*::
|
2018-05-07 09:33:17 +02:00
|
|
|
create a selection for each match of the given regex
|
2019-02-01 16:36:57 +01:00
|
|
|
(selects the count capture if it is given)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-13 10:36:04 +01:00
|
|
|
*S*::
|
2018-05-07 09:33:17 +02:00
|
|
|
split selections with the given regex
|
2019-02-01 16:36:57 +01:00
|
|
|
(selects the count capture if it is given)
|
2017-11-13 10:36:04 +01:00
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<a-s>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
split selections on line boundaries
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-13 10:36:04 +01:00
|
|
|
*<a-S>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select first and last characters of each selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*C*::
|
2022-10-06 14:28:37 +02:00
|
|
|
duplicate selections on the lines that follow them
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-C>*::
|
2022-10-06 14:28:37 +02:00
|
|
|
duplicate selections on the lines that precede them
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2022-04-15 00:14:17 +02:00
|
|
|
*,*::
|
2018-05-07 09:33:17 +02:00
|
|
|
clear selections to only keep the main one
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2022-04-15 00:14:17 +02:00
|
|
|
*<a-,>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
clear the main selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-k>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
keep selections that match the given regex
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<a-K>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
clear selections that match the given regex
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*$*::
|
2017-11-02 10:37:39 +01:00
|
|
|
pipe each selection to the given shell command and keep the ones
|
2018-01-23 05:59:46 +01:00
|
|
|
for which the shell returned 0. Shell expansions are available,
|
|
|
|
(See <<expansions#shell-expansions,`:doc expansions shell-expansions`>>)
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-05-07 09:33:17 +02:00
|
|
|
*)*::
|
|
|
|
rotate main selection (the main selection becomes the next one)
|
|
|
|
|
|
|
|
*(*::
|
|
|
|
rotate main selection backward (the main selection becomes the previous one)
|
|
|
|
|
2017-11-02 03:03:24 +01:00
|
|
|
== Object Selection
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-02-01 18:19:50 +01:00
|
|
|
For nestable objects, a `count` can be used in order to specify which surrounding
|
2018-05-24 16:04:06 +02:00
|
|
|
level to select. Object selections are repeatable using *<a-.>*.
|
2017-11-10 18:06:38 +01:00
|
|
|
|
2018-06-02 17:16:32 +02:00
|
|
|
=== Whole object
|
|
|
|
|
|
|
|
A 'whole object' is an object *including* its surrounding characters.
|
|
|
|
For example, for a quoted string this will select the quotes, and
|
|
|
|
for a word this will select trailing spaces.
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<a-a>*::
|
2018-05-07 09:33:17 +02:00
|
|
|
select the whole object
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*[*::
|
2018-06-02 17:16:32 +02:00
|
|
|
select to the whole object start
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*]*::
|
2018-06-02 17:16:32 +02:00
|
|
|
select to the whole object end
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*{*::
|
2018-06-02 17:16:32 +02:00
|
|
|
extend selections to the whole object start
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*}*::
|
2018-06-02 17:16:32 +02:00
|
|
|
extend selections to the whole object end
|
|
|
|
|
|
|
|
=== Inner object
|
|
|
|
|
|
|
|
An 'inner object' is an object *excluding* its surrounding characters.
|
|
|
|
For example, for a quoted string this will *not* select the quotes, and
|
|
|
|
for a word this will *not* select trailing spaces.
|
|
|
|
|
|
|
|
*<a-i>*::
|
|
|
|
select the inner object
|
|
|
|
|
|
|
|
*<a-[>*::
|
|
|
|
select to the inner object start
|
|
|
|
|
|
|
|
*<a-]>*::
|
|
|
|
select to the inner object end
|
|
|
|
|
|
|
|
*<a-{>*::
|
|
|
|
extend selections to the inner object start
|
|
|
|
|
|
|
|
*<a-}>*::
|
|
|
|
extend selections to the inner object end
|
|
|
|
|
|
|
|
=== Objects types
|
2016-02-02 20:15:12 +01:00
|
|
|
|
2018-06-02 17:16:32 +02:00
|
|
|
After the keys described above, a second key needs to be entered
|
|
|
|
in order to specify the wanted object:
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*b*, *(*, *)*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing parenthesis
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*B*, *{*, *}*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing {} block
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*r*, *[*, *]*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing [] block
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*a*, *<*, *>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing <> block
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
*Q*, *"*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing double quoted string
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
*q*, *'*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing single quoted string
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
*g*, *`*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the enclosing grave quoted string
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*w*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the whole word
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-03-09 14:25:19 +01:00
|
|
|
*<a-w>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the whole WORD
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*s*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the sentence
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*p*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the paragraph
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*␣*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the whitespaces
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*i*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the current indentation block
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*n*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the number
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2016-04-13 10:51:51 +02:00
|
|
|
*u*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select the argument
|
2016-04-13 10:51:51 +02:00
|
|
|
|
2017-10-06 17:49:13 +02:00
|
|
|
*c*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select user defined object, will prompt for open and close text
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2019-10-28 22:18:55 +01:00
|
|
|
*<a-;>*, *<a-semicolon>*::
|
2019-02-14 15:53:36 +01:00
|
|
|
run a command with additional expansions describing the selection
|
|
|
|
context (See <<expansions#,`:doc expansions`>>)
|
2019-02-13 20:14:10 +01:00
|
|
|
|
2020-05-06 23:02:29 +02:00
|
|
|
If a punctuation character is entered, it will act as the delimiter.
|
|
|
|
For instance, if the cursor is on the `o` of `/home/bar`, typing
|
|
|
|
`<a-a>/` will select `/home/`.
|
|
|
|
|
2017-11-10 18:06:38 +01:00
|
|
|
== Prompt commands
|
|
|
|
|
2018-09-03 23:55:56 +02:00
|
|
|
When pressing `:` in normal mode, Kakoune will open a prompt to enter
|
|
|
|
a command. The executed command line is stored in the *:* register
|
|
|
|
(See <<registers#,`:doc registers`>>).
|
2018-05-24 16:04:06 +02:00
|
|
|
|
2022-02-14 03:18:35 +01:00
|
|
|
During editing, a transient *clipboard* is available, its content is
|
2018-09-03 23:55:56 +02:00
|
|
|
empty at the start of prompt edition, and is not preserved afterwards.
|
|
|
|
|
|
|
|
The following keys are recognized by this mode to help with editing
|
|
|
|
(See <<commands#,`:doc commands`>>).
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<ret>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
validate prompt
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<esc>*::
|
2022-06-29 00:27:00 +02:00
|
|
|
abandon without validating prompt
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<left>*, *<c-b>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move cursor to previous character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<right>*, *<c-f>*::
|
2018-03-09 09:22:06 +01:00
|
|
|
move cursor to next character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<home>*, *<c-a>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move cursor to first character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-09 11:01:45 +02:00
|
|
|
*<end>*, *<c-e>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
move cursor past the last character
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<backspace>*, *<c-h>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
erase character before cursor
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<del>*, *<c-d>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
erase character under cursor
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-f>*::
|
2017-11-25 17:18:12 +01:00
|
|
|
advance to next word begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-F>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
advance to next WORD begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-b>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
go back to previous word begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-B>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
go back to previous WORD begin
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-e>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
advance to next word end
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 14:15:28 +02:00
|
|
|
*<a-E>*::
|
2018-09-09 11:01:45 +02:00
|
|
|
advance to next WORD end
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-09-03 23:55:56 +02:00
|
|
|
*<c-w>*::
|
|
|
|
erase to previous word begin, save erased content to *clipboard*
|
|
|
|
|
|
|
|
*<c-W>*::
|
|
|
|
erase to previous WORD begin, save erased content to *clipboard*
|
|
|
|
|
|
|
|
*<a-d>*::
|
2019-07-06 17:37:30 +02:00
|
|
|
erase to next word begin, save erased content to *clipboard*
|
2018-09-03 23:55:56 +02:00
|
|
|
|
|
|
|
*<a-D>*::
|
2019-07-06 17:37:30 +02:00
|
|
|
erase to next WORD begin, save erased content to *clipboard*
|
2018-09-03 23:55:56 +02:00
|
|
|
|
|
|
|
*<c-k>*::
|
|
|
|
erase to end of line, save erased content to *clipboard*
|
|
|
|
|
|
|
|
*<c-u>*::
|
|
|
|
erase to begin of line, save erased content to *clipboard*
|
|
|
|
|
|
|
|
*<c-y>*::
|
|
|
|
insert *clipboard* content before cursor
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<up>*, *<c-p>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select previous entry in history
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<down>*, *<c-n>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select next entry in history
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<tab>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select next completion candidate
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2018-03-15 13:02:27 +01:00
|
|
|
*<s-tab>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
select previous completion candidate
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-r>*::
|
2022-06-30 08:36:12 +02:00
|
|
|
insert then content of the register given by next key, if next key
|
|
|
|
has the Alt modifier, it will insert all values in the register
|
|
|
|
joined with spaces, else it will insert the main one
|
2016-02-03 18:15:35 +01:00
|
|
|
|
|
|
|
*<c-v>*::
|
2017-11-02 10:37:39 +01:00
|
|
|
insert next keystroke without interpreting it
|
2016-02-03 18:15:35 +01:00
|
|
|
|
2020-10-19 10:36:58 +02:00
|
|
|
*<c-x>*::
|
|
|
|
explicit completion query, followed by:
|
|
|
|
|
|
|
|
*f*:::
|
|
|
|
explicit file completion
|
|
|
|
|
|
|
|
*w*:::
|
|
|
|
explicit word completion (from current buffer)
|
|
|
|
|
2016-02-03 18:15:35 +01:00
|
|
|
*<c-o>*::
|
2018-08-27 22:02:15 +02:00
|
|
|
toggle automatic completion
|
2018-04-04 03:00:25 +02:00
|
|
|
|
|
|
|
*<a-!>*::
|
|
|
|
expand the typed expansions in currently entered text
|
2022-03-29 22:36:01 +02:00
|
|
|
(See <<expansions#,`:doc expansions`>>)
|
2018-07-15 02:39:25 +02:00
|
|
|
|
2019-10-28 22:18:55 +01:00
|
|
|
*<a-;>*, *<a-semicolon>*::
|
2018-07-15 02:39:25 +02:00
|
|
|
escape to normal mode for a single command
|
2020-10-04 13:34:57 +02:00
|
|
|
|
|
|
|
== User commands
|
|
|
|
|
2022-04-15 00:14:17 +02:00
|
|
|
*<space>*::
|
2020-10-04 13:34:57 +02:00
|
|
|
enter default `user mode` to access custom commands
|
|
|
|
(See <<modes#user-mode,`:doc modes user-mode`>>)
|