Unnamed repository; edit this file 'description' to name the repository.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252

Keymap

Normal mode

Movement

NOTE: Unlike vim, f, F, t and T are not confined to the current line.

Key Description Command
h, Left Move left move_char_left
j, Down Move down move_char_right
k, Up Move up move_line_up
l, Right Move right move_line_down
w Move next word start move_next_word_start
b Move previous word start move_prev_word_start
e Move next word end move_next_word_end
W Move next WORD start move_next_long_word_start
B Move previous WORD start move_prev_long_word_start
E Move next WORD end move_next_long_word_end
t Find 'till next char find_till_char
f Find next char find_next_char
T Find 'till previous char till_prev_char
F Find previous char find_prev_char
Home Move to the start of the line goto_line_start
End Move to the end of the line goto_line_end
PageUp Move page up page_up
PageDown Move page down page_down
Ctrl-u Move half page up half_page_up
Ctrl-d Move half page down half_page_down
Ctrl-i Jump forward on the jumplist jump_forward
Ctrl-o Jump backward on the jumplist jump_backward
v Enter select (extend) mode select_mode
g Enter goto mode N/A
m Enter match mode N/A
: Enter command mode command_mode
z Enter view mode N/A
Z Enter sticky view mode N/A
Ctrl-w Enter window mode N/A
Space Enter space mode N/A
K Show documentation for the item under the cursor hover

Changes

Key Description Command
r Replace with a character replace
R Replace with yanked text replace_with_yanked
~ Switch case of the selected text switch_case
` Set the selected text to lower case switch_to_lowercase
Alt-` Set the selected text to upper case switch_to_uppercase
i Insert before selection insert_mode
a Insert after selection (append) append_mode
I Insert at the start of the line prepend_to_line
A Insert at the end of the line append_to_line
o Open new line below selection open_below
O Open new line above selection open_above
u Undo change undo
U Redo change redo
y Yank selection yank
p Paste after selection paste_after
P Paste before selection paste_before
" <reg> Select a register to yank to or paste from select_register
> Indent selection indent
< Unindent selection unindent
= Format selection format_selections
d Delete selection delete_selection
c Change selection (delete and enter insert mode) change_selection

Shell

Key Description Command
| Pipe each selection through shell command, replacing with output shell_pipe
A-| Pipe each selection into shell command, ignoring output shell_pipe_to
! Run shell command, inserting output before each selection shell_insert_output
A-! Run shell command, appending output after each selection shell_append_output

Selection manipulation

Key Description Command
s Select all regex matches inside selections select_regex
S Split selection into subselections on regex matches split_selection
Alt-s Split selection on newlines split_selection_on_newline
; Collapse selection onto a single cursor collapse_selection
Alt-; Flip selection cursor and anchor flip_selections
C Copy selection onto the next line copy_selection_on_next_line
Alt-C Copy selection onto the previous line copy_selection_on_prev_line
( Rotate main selection forward rotate_selections_backward
) Rotate main selection backward rotate_selections_forward
Alt-( Rotate selection contents forward rotate_selection_contents_backward
Alt-) Rotate selection contents backward rotate_selection_contents_forward
% Select entire file select_all
x Select current line, if already selected, extend to next line extend_line
X Extend selection to line bounds (line-wise selection) extend_to_line_bounds
Expand selection to parent syntax node TODO: pick a key expand_selection
J Join lines inside selection join_selections
K Keep selections matching the regex TODO: overlapped by hover help keep_selections
$ Pipe each selection into shell command, keep selections where command returned 0 shell_keep_pipe
Space Keep only the primary selection TODO: overlapped by space mode keep_primary_selection
Ctrl-c Comment/uncomment the selections toggle_comments

TODO: The search implementation isn't ideal yet -- we don't support searching in reverse.

Key Description Command
/ Search for regex pattern search
n Select next search match search_next
N Add next search match to selection extend_search_next
* Use current selection as the search pattern search_selection

Minor modes

These sub-modes are accessible from normal mode and typically switch back to normal mode after a command.

View mode

View mode is intended for scrolling and manipulating the view without changing the selection. The "sticky" variant of this mode is persistent; use the Escape key to return to normal mode after usage (useful when you're simply looking over text and not actively editing it).

Key Description Command
z , c Vertically center the line align_view_center
t Align the line to the top of the screen align_view_top
b Align the line to the bottom of the screen align_view_bottom
m Align the line to the middle of the screen (horizontally) align_view_middle
j Scroll the view downwards scroll_down
k Scroll the view upwards scroll_up
f Move page down page_down
b Move page up page_up
d Move half page down half_page_down
u Move half page up half_page_up

Goto mode

Jumps to various locations.

NOTE: Some of these features are only available with the LSP present.

Key Description Command
g Go to the start of the file goto_file_start
e Go to the end of the file goto_last_line
h Go to the start of the line goto_line_start
l Go to the end of the line goto_line_end
s Go to first non-whitespace character of the line goto_first_nonwhitespace
t Go to the top of the screen goto_window_top
m Go to the middle of the screen goto_window_middle
b Go to the bottom of the screen goto_window_bottom
d Go to definition goto_definition
y Go to type definition goto_type_definition
r Go to references goto_reference
i Go to implementation goto_implementation
a Go to the last accessed/alternate file goto_last_accessed_file

Match mode

Enter this mode using m from normal mode. See the relavant section in Usage for an explanation about surround and textobject usage.

Key Description Command
m Goto matching bracket match_brackets
s <char> Surround current selection with <char> surround_add
r <from><to> Replace surround character <from> with <to> surround_replace
d <char> Delete surround character <char> surround_delete
a <object> Select around textobject select_textobject_around
i <object> Select inside textobject select_textobject_inner

TODO: Mappings for selecting syntax nodes (a superset of [).

Window mode

This layer is similar to vim keybindings as kakoune does not support window.

Key Description Command
w, Ctrl-w Switch to next window rotate_view
v, Ctrl-v Vertical right split vsplit
h, Ctrl-h Horizontal bottom split hsplit
q, Ctrl-q Close current window wclose

Space mode

This layer is a kludge of mappings, mostly pickers.

Key Description Command
f Open file picker file_picker
b Open buffer picker buffer_picker
s Open symbol picker (current document) symbol_picker
a Apply code action code_action
' Open last fuzzy picker last_picker
w Enter window mode N/A
space Keep primary selection TODO: it's here because space mode replaced it keep_primary_selection
p Paste system clipboard after selections paste_clipboard_after
P Paste system clipboard before selections paste_clipboard_before
y Join and yank selections to clipboard yank_joined_to_clipboard
Y Yank main selection to clipboard yank_main_selection_to_clipboard
R Replace selections by clipboard contents replace_selections_with_clipboard

Unimpaired

Mappings in the style of vim-unimpaired.

Key Description Command
[d Go to previous diagnostic goto_prev_diag
]d Go to next diagnostic goto_next_diag
[D Go to first diagnostic in document goto_first_diag
]D Go to last diagnostic in document goto_last_diag
[space Add newline above add_newline_above
]space Add newline below add_newline_below

Insert Mode

Key Description Command
Escape Switch to normal mode normal_mode
Ctrl-x Autocomplete completion
Ctrl-w Delete previous word delete_word_backward

Select / extend mode

I'm still pondering whether to keep this mode or not. It changes movement commands (including goto) to extend the existing selection instead of replacing it.

NOTE: It's a bit confusing at the moment because extend hasn't been implemented for all movement commands yet.

Picker

Keys to use within picker. Remapping currently not supported.

Key Description
Up, Ctrl-p Previous entry
Down, Ctrl-n Next entry
Ctrl-space Filter options
Enter Open selected
Ctrl-h Open horizontally
Ctrl-v Open vertically
Escape, Ctrl-c Close picker