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
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336

Keymap

  • Mappings marked (LSP) require an active language server for the file.
  • Mappings marked (TS) require a tree-sitter grammar for the filetype.

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_line_down
k/Up Move up move_line_up
l/Right Move right move_char_right
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
Alt-. Repeat last motion (f, t or m) repeat_last_motion
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
Ctrl-s Save the current selection to the jumplist save_selection
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

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
. Repeat last change N/A
u Undo change undo
U Redo change redo
Alt-u Move backward in history earlier
Alt-U Move forward in history later
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 (currently nonfunctional/disabled) (LSP) format_selections
d Delete selection delete_selection
Alt-d Delete selection, without yanking delete_selection_noyank
c Change selection (delete and enter insert mode) change_selection
Alt-c Change selection (delete and enter insert mode, without yanking) change_selection_noyank
Ctrl-a Increment object (number) under cursor increment
Ctrl-x Decrement object (number) under cursor decrement
Q Start/stop macro recording to the selected register (experimental) record_macro
q Play back a recorded macro from the selected register (experimental) replay_macro

Shell

Key Description Command
| Pipe each selection through shell command, replacing with output shell_pipe
Alt-| Pipe each selection into shell command, ignoring output shell_pipe_to
! Run shell command, inserting output before each selection shell_insert_output
Alt-! 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
& Align selection in columns align_selections
_ Trim whitespace from the selection trim_selections
; Collapse selection onto a single cursor collapse_selection
Alt-; Flip selection cursor and anchor flip_selections
, Keep only the primary selection keep_primary_selection
Alt-, Remove the primary selection remove_primary_selection
C Copy selection onto the next line (Add cursor below) copy_selection_on_next_line
Alt-C Copy selection onto the previous line (Add cursor above) copy_selection_on_prev_line
( Rotate main selection backward rotate_selections_backward
) Rotate main selection forward rotate_selections_forward
Alt-( Rotate selection contents backward rotate_selection_contents_backward
Alt-) Rotate selection contents forward 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 (TS) expand_selection
J Join lines inside selection join_selections
K Keep selections matching the regex keep_selections
Alt-K Remove selections matching the regex remove_selections
$ Pipe each selection into shell command, keep selections where command returned 0 shell_keep_pipe
Ctrl-c Comment/uncomment the selections toggle_comments
Key Description Command
/ Search for regex pattern search
? Search for previous pattern rsearch
n Select next search match search_next
N Select previous search match search_prev
* 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 , down Scroll the view downwards scroll_down
k , up 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.

Key Description Command
g Go to line number <n> else start of file goto_file_start
e Go to the end of the file goto_last_line
f Go to files in the selection goto_file
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
c Go to the middle of the screen goto_window_center
b Go to the bottom of the screen goto_window_bottom
d Go to definition (LSP) goto_definition
y Go to type definition (LSP) goto_type_definition
r Go to references (LSP) goto_reference
i Go to implementation (LSP) goto_implementation
a Go to the last accessed/alternate file goto_last_accessed_file
m Go to the last modified/alternate file goto_last_modified_file
n Go to next buffer goto_next_buffer
p Go to previous buffer goto_previous_buffer
. Go to last modification in current file goto_last_modification

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 (TS) 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
s, Ctrl-s Horizontal bottom split hsplit
h, Ctrl-h, left Move to left split jump_view_left
f Go to files in the selection in horizontal splits goto_file
F Go to files in the selection in vertical splits goto_file
j, Ctrl-j, down Move to split below jump_view_down
k, Ctrl-k, up Move to split above jump_view_up
l, Ctrl-l, right Move to right split jump_view_right
q, Ctrl-q Close current window wclose
o, Ctrl-o Only keep the current window, closing all the others wonly

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
k Show documentation for item under cursor in a popup (LSP) hover
s Open document symbol picker (LSP) symbol_picker
S Open workspace symbol picker (LSP) workspace_symbol_picker
r Rename symbol (LSP) rename_symbol
a Apply code action (LSP) code_action
' Open last fuzzy picker last_picker
w Enter window mode N/A
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
/ Global search in workspace folder global_search

TIP: Global search displays results in a fuzzy picker, use space + ' to bring it back up after opening a file.

Displays documentation for item under cursor.

Key Description
Ctrl-u Scroll up
Ctrl-d Scroll down

Unimpaired

Mappings in the style of vim-unimpaired.

Key Description Command
[d Go to previous diagnostic (LSP) goto_prev_diag
]d Go to next diagnostic (LSP) goto_next_diag
[D Go to first diagnostic in document (LSP) goto_first_diag
]D Go to last diagnostic in document (LSP) goto_last_diag
[space Add newline above add_newline_above
]space Add newline below add_newline_below
]o Expand syntax tree object selection. expand_selection
[o Shrink syntax tree object selection. shrink_selection

Insert Mode

Key Description Command
Escape Switch to normal mode normal_mode
Ctrl-x Autocomplete completion
Ctrl-r Insert a register content insert_register
Ctrl-w Delete previous word delete_word_backward
Alt-d Delete next word delete_word_forward
Alt-b, Alt-Left Backward a word move_prev_word_end
Ctrl-b, Left Backward a char move_char_left
Alt-f, Alt-Right Forward a word move_next_word_start
Ctrl-f, Right Forward a char move_char_right
Ctrl-e, End move to line end goto_line_end_newline
Ctrl-a, Home move to line start goto_line_start
Ctrl-u delete to start of line kill_to_line_start
Ctrl-k delete to end of line kill_to_line_end
backspace, Ctrl-h delete previous char delete_char_backward
delete, Ctrl-d delete previous char delete_char_forward
Ctrl-p, Up move to previous line move_line_up
Ctrl-n, Down move to next line move_line_down

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-k, Ctrl-p Previous entry
Down, Ctrl-j, Ctrl-n Next entry
Ctrl-space Filter options
Enter Open selected
Ctrl-s Open horizontally
Ctrl-v Open vertically
Escape, Ctrl-c Close picker

Prompt

Keys to use within prompt, Remapping currently not supported.

Key Description
Escape, Ctrl-c Close prompt
Alt-b, Alt-Left Backward a word
Ctrl-b, Left Backward a char
Alt-f, Alt-Right Forward a word
Ctrl-f, Right Forward a char
Ctrl-e, End Move prompt end
Ctrl-a, Home Move prompt start
Ctrl-w Delete previous word
Alt-d Delete next word
Ctrl-u Delete to start of line
Ctrl-k Delete to end of line
backspace, Ctrl-h Delete previous char
delete, Ctrl-d Delete next char
Ctrl-s Insert a word under doc cursor, may be changed to Ctrl-r Ctrl-w later
Ctrl-p, Up Select previous history
Ctrl-n, Down Select next history
Tab Select next completion item
BackTab Select previous completion item
Enter Open selected