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 |
| 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 |
| 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 |
| 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 |
These sub-modes are accessible from normal mode and typically switch back to normal mode after a command.
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 |
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 |
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 [).
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 |
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 |
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 |
| Key |
Description |
Command |
Escape |
Switch to normal mode |
normal_mode |
Ctrl-x |
Autocomplete |
completion |
Ctrl-w |
Delete previous word |
delete_word_backward |
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.
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 |