Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--
607
n-body h3 .mini-icon-link, .markdown-body h4 .mini-icon-link, .markdown-body h5 .mini-icon-link, .markdown-body h6 .mini-icon-link { display: none; color: #CCCAC2; } .markdown-body h1:hover a.anchor, .markdown-body h2:hover a.anchor, .markdown-body h3:hover a.anchor, .markdown-body h4:hover a.anchor, .markdown-body h5:hover a.anchor, .markdown-body h6:hover a.anchor { text-decoration: none; line-height: 1; padding-left: 0; margin-left: -22px; top: 15%; } .markdown-body h1:hover a.anchor .mini-icon-link, .markdown-body h2:hover a.anchor .mini-icon-link, .markdown-body h3:hover a.anchor .mini-icon-link, .markdown-body h4:hover a.anchor .mini-icon-link, .markdown-body h5:hover a.anchor .mini-icon-link, .markdown-body h6:hover a.anchor .mini-icon-link { display: inline-block; } div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#cgit .markdown-body h3 a.toclink, div#cgit .markdown-body h4 a.toclink, div#cgit .markdown-body h5 a.toclink, div#cgit .markdown-body h6 a.toclink { color: #CCCAC2; } .markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code { font-size: inherit; } .markdown-body h1 { font-size: 28px; color: #CCCAC2; } .markdown-body h2 { font-size: 24px; border-bottom: 1px solid #8A9199; color: #CCCAC2; } .markdown-body h3 { font-size: 18px; color: #CCCAC2; } .markdown-body h4 { font-size: 16px; color: #CCCAC2; } .markdown-body h5 { font-size: 14px; color: #CCCAC2; } .markdown-body h6 { color: #CCCAC2; font-size: 14px; } .markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin: 15px 0; } .markdown-body hr { border: 2px solid #8A9199; } .markdown-body>h2:first-child, .markdown-body>h1:first-child, .markdown-body>h1:first-child+h2, .markdown-body>h3:first-child, .markdown-body>h4:first-child, .markdown-body>h5:first-child, .markdown-body>h6:first-child { margin-top: 0; padding-top: 0; } .markdown-body a:first-child h1, .markdown-body a:first-child h2, .markdown-body a:first-child h3, .markdown-body a:first-child h4, .markdown-body a:first-child h5, .markdown-body a:first-child h6 { margin-top: 0; padding-top: 0; } .markdown-body h1+p, .markdown-body h2+p, .markdown-body h3+p, .markdown-body h4+p, .markdown-body h5+p, .markdown-body h6+p { margin-top: 0; } .markdown-body li p.first { display: inline-block; } .markdown-body ul, .markdown-body ol { padding-left: 30px; } .markdown-body ul.no-list, .markdown-body ol.no-list { list-style-type: none; padding: 0; } .markdown-body ul li>:first-child, .markdown-body ul li ul:first-of-type, .markdown-body ul li ol:first-of-type, .markdown-body ol li>:first-child, .markdown-body ol li ul:first-of-type, .markdown-body ol li ol:first-of-type { margin-top: 0px; } .markdown-body ul li p:last-of-type, .markdown-body ol li p:last-of-type { margin-bottom: 0; } .markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul { margin-bottom: 0; } .markdown-body dl { padding: 0; } .markdown-body dl dt { font-size: 14px; font-weight: bold; font-style: italic; padding: 0; margin: 15px 0 5px; } .markdown-body dl dt:first-child { padding: 0; } .markdown-body dl dt>:first-child { margin-top: 0px; } .markdown-body dl dt>:last-child { margin-bottom: 0px; } .markdown-body dl dd { margin: 0 0 15px; padding: 0 15px; } .markdown-body dl dd>:first-child { margin-top: 0px; } .markdown-body dl dd>:last-child { margin-bottom: 0px; } .markdown-body blockquote { border-left: 4px solid #FFAD66; padding: 0 15px; color: #B8CFE6; } .markdown-body blockquote>:first-child { margin-top: 0px; } .markdown-body blockquote>:last-child { margin-bottom: 0px; } .markdown-body table th { font-weight: bold; } .markdown-body table th, .markdown-body table td { border: 1px solid #8A9199; padding: 6px 13px; } .markdown-body table tr { border-top: 1px solid #8A9199; background-color: #242936; } .markdown-body table tr:nth-child(2n) { background-color: #1A1F29; } .markdown-body img { max-width: 100%; -moz-box-sizing: border-box; box-sizing: border-box; } .markdown-body span.frame { display: block; overflow: hidden; } .markdown-body span.frame>span { border: 1px solid #8A9199; display: block; float: left; overflow: hidden; margin: 13px 0 0; padding: 7px; width: auto; } .markdown-body span.frame span img { display: block; float: left; } .markdown-body span.frame span span { clear: both; color: #CCCAC2; display: block; padding: 5px 0 0; } .markdown-body span.align-center { display: block; overflow: hidden; clear: both; } .markdown-body span.align-center>span { display: block; overflow: hidden; margin: 13px auto 0; text-align: center; } .markdown-body span.align-center span img { margin: 0 auto; text-align: center; } .markdown-body span.align-right { display: block; overflow: hidden; clear: both; } .markdown-body span.align-right>span { display: block; overflow: hidden; margin: 13px 0 0; text-align: right; } .markdown-body span.align-right span img { margin: 0; text-align: right; } .markdown-body span.float-left { display: block; margin-right: 13px; overflow: hidden; float: left; } .markdown-body span.float-left span { margin: 13px 0 0; } .markdown-body span.float-right { display: block; margin-left: 13px; overflow: hidden; float: right; } .markdown-body span.float-right>span { display: block; overflow: hidden; margin: 13px auto 0; text-align: right; } .markdown-body code, .markdown-body tt { margin: 0 2px; padding: 0px 5px; border: 1px solid #8A9199; background-color: #282E3B; border-radius: 3px; color: #CCCAC2; } .markdown-body code { white-space: nowrap; } .markdown-body pre>code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } .markdown-body .highlight pre, .markdown-body pre { background-color: #282E3B; border: 1px solid #8A9199; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px; } .markdown-body pre code, .markdown-body pre tt { margin: 0; padding: 0; background-color: transparent; border: none; } pre { line-height: 125%; } td.linenos .normal { color: #8a919966; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: #8a919966; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #363C48 } .highlight .c { color: #6E7C8E } /* Comment */ .highlight .err { color: #FF6666 } /* Error */ .highlight .g { color: #CCCAC2 } /* Generic */ .highlight .k { color: #FFAD66 } /* Keyword */ .highlight .o { color: #F29E74 } /* Operator */ .highlight .ch { color: #6E7C8E } /* Comment.Hashbang */ .highlight .cm { color: #6E7C8E; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #FFAD66 } /* Comment.Preproc */ .highlight .cpf { color: #D5FF80 } /* Comment.PreprocFile */ .highlight .c1 { color: #6E7C8E; font-style: italic } /* Comment.Single */ .highlight .cs { color: #6E7C8E } /* Comment.Special */ .highlight .gd { color: #F27983 } /* Generic.Deleted */ .highlight .ge { color: #FFD173; font-style: italic } /* Generic.Emph */ .highlight .gr { color: #FF6666 } /* Generic.Error */ .highlight .gh { color: #FFD173; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #87D96C } /* Generic.Inserted */ .highlight .go { color: #D5FF80 } /* Generic.Output */ .highlight .gp { color: #F29E74 } /* Generic.Prompt */ .highlight .gs { color: #FFD173; font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #CCCAC2 } /* Generic.Subheading */ .highlight .gt { color: #FF6666 } /* Generic.Traceback */ .highlight .kc { color: #DFBFFF } /* Keyword.Constant */ .highlight .kd { color: #FFCC66 } /* Keyword.Declaration */ .highlight .kn { color: #FFAD66 } /* Keyword.Namespace */ .highlight .kp { color: #FFAD66 } /* Keyword.Pseudo */ .highlight .kr { color: #FFAD66 } /* Keyword.Reserved */ .highlight .kt { color: #73D0FF } /* Keyword.Type */ .highlight .m { color: #DFBFFF } /* Literal.Number */ .highlight .s { color: #D5FF80 } /* Literal.String */ .highlight .na { color: #FFD173 } /* Name.Attribute */ .highlight .nb { color: #F28779 } /* Name.Builtin */ .highlight .nc { color: #5CCFE6 } /* Name.Class */ .highlight .no { color: #DFBFFF } /* Name.Constant */ .highlight .nd { color: #FFDFB3 } /* Name.Decorator */ .highlight .nf { color: #FFD173 } /* Name.Function */ .highlight .nt { color: #5CCFE6 } /* Name.Tag */ .highlight .ow { color: #F29E74 } /* Operator.Word */ .highlight .w { color: #CCCAC2 } /* Text.Whitespace */ .highlight .mb { color: #DFBFFF } /* Literal.Number.Bin */ .highlight .mf { color: #DFBFFF } /* Literal.Number.Float */ .highlight .mh { color: #DFBFFF } /* Literal.Number.Hex */ .highlight .mi { color: #DFBFFF } /* Literal.Number.Integer */ .highlight .mo { color: #DFBFFF } /* Literal.Number.Oct */ .highlight .sa { color: #D5FF80 } /* Literal.String.Affix */ .highlight .sb { color: #F29E74 } /* Literal.String.Backtick */ .highlight .sc { color: #D5FF80 } /* Literal.String.Char */ .highlight .dl { color: #D5FF80 } /* Literal.String.Delimiter */ .highlight .sd { color: #95E6CB; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #D5FF80 } /* Literal.String.Double */ .highlight .se { color: #D5FF80 } /* Literal.String.Escape */ .highlight .sh { color: #D5FF80 } /* Literal.String.Heredoc */ .highlight .si { color: #D5FF80 } /* Literal.String.Interpol */ .highlight .sx { color: #D5FF80 } /* Literal.String.Other */ .highlight .sr { color: #95E6CB } /* Literal.String.Regex */ .highlight .s1 { color: #D5FF80 } /* Literal.String.Single */ .highlight .ss { color: #D5FF80 } /* Literal.String.Symbol */ .highlight .bp { color: #F28779 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #FFD173 } /* Name.Function.Magic */ .highlight .vi { color: #FFCC66 } /* Name.Variable.Instance */ .highlight .vm { color: #5CCFE6; font-style: italic } /* Name.Variable.Magic */ .highlight .il { color: #DFBFFF } /* Literal.Number.Integer.Long */

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_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 record_macro
Q Play back a recorded macro from the selected register play_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

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