diff --git a/meta.ts b/meta.ts index 5b0dfbbc..c6db3888 100644 --- a/meta.ts +++ b/meta.ts @@ -519,6 +519,9 @@ export function parseKeys(keys: string) { const remainingKeybinding = keybinding.replace(/[csa]-/g, ""), whenClauses = ["editorTextFocus"]; + if (category !== "core") { + whenClauses.push(`dance.behavior == '${category}'`); + } for (let tag of tags.split(", ")) { const negate = tag.startsWith("!"); if (negate) { diff --git a/package.build.ts b/package.build.ts index 1bb2577c..76489367 100644 --- a/package.build.ts +++ b/package.build.ts @@ -206,6 +206,12 @@ export const pkg = (modules: Builder.ParsedModule[]) => ({ description: "Controls which mode is set by default when an editor is opened.", ...modeNamePattern, }, + "dance.behavior": { + enum: ["kakoune", "helix"], + enumItemLabels: ["Kakoune", "Helix"], + description: "Controls which base set of editor keybinds to use", + default: "kakoune", + }, "dance.modes": { type: "object", scope: "language-overridable", @@ -765,32 +771,28 @@ export const pkg = (modules: Builder.ParsedModule[]) => ({ ...symbols.map((x) => `Shift+${x}`), ]); - const keysToAssignForNormal = new Set(keysToAssign); - const keysToAssignForVisual = new Set(keysToAssign); - - for (const keybinding of keybindings) { - if (keybinding.when.includes("dance.mode == 'normal'")) { - keysToAssignForNormal.delete(keybinding.key); + for (const [category, mode] of [ + ["kakoune", "normal"], + ["helix", "normal"], + ["helix", "select"], + ]) { + const unassignedKeys = new Set(keysToAssign); + for (const keybinding of keybindings) { + const isInCategory = + keybinding.when.includes(`dance.behavior == '${category}'`) || !keybinding.when.includes("dance.behavior"); + const isMode = keybinding.when.includes(`dance.mode == '${mode}'`); + if (isMode && isInCategory) { + unassignedKeys.delete(keybinding.key); + } } - if (keybinding.when.includes("dance.mode == 'select'")) { - keysToAssignForVisual.delete(keybinding.key); - } - } - for (const keyToAssign of keysToAssignForNormal) { - keybindings.push({ - command: "dance.ignore", - key: keyToAssign, - when: "editorTextFocus && dance.mode == 'normal'", - }); - } - - for (const keyToAssign of keysToAssignForVisual) { - keybindings.push({ - command: "dance.ignore", - key: keyToAssign, - when: "editorTextFocus && dance.mode == 'select'", - }); + for (const unassignedKey of unassignedKeys) { + keybindings.push({ + key: unassignedKey, + command: "dance.ignore", + when: `dance.mode == '${mode}' && dance.behavior == '${category}'`, + }); + } } return keybindings; diff --git a/package.json b/package.json index e705a67b..c6debb29 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,18 @@ "pattern": "^[a-zA-Z]\\w*$", "patternErrorMessage": "" }, + "dance.behavior": { + "enum": [ + "kakoune", + "helix" + ], + "enumItemLabels": [ + "Kakoune", + "Helix" + ], + "description": "Controls which base set of editor keybinds to use", + "default": "kakoune" + }, "dance.modes": { "type": "object", "scope": "language-overridable", @@ -2783,7 +2795,19 @@ }, { "key": "Alt+`", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Swap case", + "command": "dance.edit.case.swap" + }, + { + "key": "Shift+`", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Swap case", + "command": "dance.edit.case.swap" + }, + { + "key": "Shift+`", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Swap case", "command": "dance.edit.case.swap" }, @@ -2793,21 +2817,39 @@ "title": "Transform to lower case", "command": "dance.edit.case.toLower" }, + { + "key": "`", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Transform to lower case", + "command": "dance.edit.case.toLower" + }, { "key": "Shift+`", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Transform to upper case", + "command": "dance.edit.case.toUpper" + }, + { + "key": "Alt+`", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Transform to upper case", + "command": "dance.edit.case.toUpper" + }, + { + "key": "Alt+`", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Transform to upper case", "command": "dance.edit.case.toUpper" }, { "key": "Shift+Alt+7", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Copy indentation", "command": "dance.edit.copyIndentation" }, { "key": "Shift+Alt+,", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Deindent selected lines", "command": "dance.edit.deindent" }, @@ -2817,15 +2859,27 @@ "title": "Deindent selected lines (including incomplete indent)", "command": "dance.edit.deindent.withIncomplete" }, + { + "key": "Shift+,", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Deindent selected lines (including incomplete indent)", + "command": "dance.edit.deindent.withIncomplete" + }, { "key": "Alt+D", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Delete", "command": "dance.edit.delete" }, + { + "key": "Alt+D", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Delete", + "command": "dance.edit.delete" + }, { "key": "Alt+C", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Delete and switch to Insert", "command": "dance.edit.delete-insert" }, @@ -2835,15 +2889,21 @@ "title": "Indent selected lines", "command": "dance.edit.indent" }, + { + "key": "Shift+.", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Indent selected lines", + "command": "dance.edit.indent" + }, { "key": "Shift+Alt+.", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Indent selected lines (including empty lines)", "command": "dance.edit.indent.withEmpty" }, { "key": "Shift+Alt+R", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Insert contents of register", "command": "dance.edit.insert" }, @@ -2853,15 +2913,27 @@ "title": "Join lines", "command": "dance.edit.join" }, + { + "key": "Shift+J", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Join lines", + "command": "dance.edit.join" + }, { "key": "Shift+Alt+J", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Join lines and select inserted separators", "command": "dance.edit.join.select" }, + { + "key": "Shift+Alt+J", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Join lines and select inserted separators", + "command": "dance.edit.join.select" + }, { "key": "Shift+Alt+O", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Insert new line above each selection", "command": "dance.edit.newLine.above" }, @@ -2871,9 +2943,15 @@ "title": "Insert new line above and switch to insert", "command": "dance.edit.newLine.above.insert" }, + { + "key": "Shift+O", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert new line above and switch to insert", + "command": "dance.edit.newLine.above.insert" + }, { "key": "Alt+O", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Insert new line below each selection", "command": "dance.edit.newLine.below" }, @@ -2883,12 +2961,30 @@ "title": "Insert new line below and switch to insert", "command": "dance.edit.newLine.below.insert" }, + { + "key": "O", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert new line below and switch to insert", + "command": "dance.edit.newLine.below.insert" + }, + { + "key": "P", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Paste after", + "command": "dance.edit.paste.after" + }, { "key": "P", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Paste after and select", "command": "dance.edit.paste.after.select" }, + { + "key": "Shift+P", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Paste before", + "command": "dance.edit.paste.before" + }, { "key": "Shift+P", "when": "editorTextFocus && dance.mode == 'normal'", @@ -2897,13 +2993,13 @@ }, { "key": "Alt+P", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Paste all after and select", "command": "dance.edit.pasteAll.after.select" }, { "key": "Shift+Alt+P", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Paste all before and select", "command": "dance.edit.pasteAll.before.select" }, @@ -2915,13 +3011,13 @@ }, { "key": "Ctrl+R", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Pick register and replace", "command": "dance.edit.selectRegister-insert" }, { "key": "Ctrl+R", - "when": "editorTextFocus && dance.mode == 'insert'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'", "title": "Pick register and replace", "command": "dance.edit.selectRegister-insert" }, @@ -2933,7 +3029,7 @@ }, { "key": "D", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Copy and delete", "command": "dance.edit.yank-delete" }, @@ -2945,37 +3041,37 @@ }, { "key": "C", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Copy, delete and switch to Insert", "command": "dance.edit.yank-delete-insert" }, { "key": "Shift+R", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Copy and replace", "command": "dance.edit.yank-replace" }, { "key": "Q", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Replay recording", "command": "dance.history.recording.play" }, { "key": "Shift+Q", - "when": "editorTextFocus && dance.mode == 'normal' && !dance.isRecording", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && !dance.isRecording", "title": "Start recording", "command": "dance.history.recording.start" }, { "key": "Escape", - "when": "editorTextFocus && dance.mode == 'normal' && dance.isRecording", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording", "title": "Stop recording", "command": "dance.history.recording.stop" }, { "key": "Shift+Q", - "when": "editorTextFocus && dance.mode == 'normal' && dance.isRecording", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording", "title": "Stop recording", "command": "dance.history.recording.stop" }, @@ -2987,13 +3083,13 @@ }, { "key": "Shift+U", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Redo", "command": "dance.history.redo" }, { "key": "Shift+Alt+U", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Redo a change of selections", "command": "dance.history.redo.selections" }, @@ -3015,6 +3111,12 @@ "title": "Repeat last seek", "command": "dance.history.repeat.seek" }, + { + "key": "Alt+.", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Repeat last seek", + "command": "dance.history.repeat.seek" + }, { "key": "U", "when": "editorTextFocus && dance.mode == 'normal'", @@ -3023,13 +3125,13 @@ }, { "key": "U", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Undo", "command": "dance.history.undo" }, { "key": "Alt+U", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Undo a change of selections", "command": "dance.history.undo.selections" }, @@ -3261,24 +3363,48 @@ "title": "Insert after", "command": "dance.modes.insert.after" }, + { + "key": "A", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert after", + "command": "dance.modes.insert.after" + }, { "key": "I", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Insert before", "command": "dance.modes.insert.before" }, + { + "key": "I", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert before", + "command": "dance.modes.insert.before" + }, { "key": "Shift+A", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Insert at line end", "command": "dance.modes.insert.lineEnd" }, + { + "key": "Shift+A", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert at line end", + "command": "dance.modes.insert.lineEnd" + }, { "key": "Shift+I", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Insert at line start", "command": "dance.modes.insert.lineStart" }, + { + "key": "Shift+I", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Insert at line start", + "command": "dance.modes.insert.lineStart" + }, { "key": "Escape", "when": "editorTextFocus && dance.mode == 'insert'", @@ -3287,19 +3413,31 @@ }, { "key": "Escape", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Set mode to Normal", + "command": "dance.modes.set.normal" + }, + { + "key": "V", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Set mode to Normal", "command": "dance.modes.set.normal" }, + { + "key": "V", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Set mode to Select", + "command": "dance.modes.set.select" + }, { "key": "Ctrl+V", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Temporary Insert mode", "command": "dance.modes.set.temporarily.insert" }, { "key": "Ctrl+V", - "when": "editorTextFocus && dance.mode == 'insert'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'", "title": "Temporary Normal mode", "command": "dance.modes.set.temporarily.normal" }, @@ -3317,19 +3455,37 @@ }, { "key": "Alt+/", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Search backward", + "command": "dance.search.backward" + }, + { + "key": "Shift+/", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Search backward", "command": "dance.search.backward" }, { "key": "Shift+Alt+/", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Search backward (extend)", "command": "dance.search.backward.extend" }, { "key": "Shift+/", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Search backward (extend)", + "command": "dance.search.backward.extend" + }, + { + "key": "Shift+/", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Search (extend)", + "command": "dance.search.extend" + }, + { + "key": "/", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Search (extend)", "command": "dance.search.extend" }, @@ -3341,19 +3497,37 @@ }, { "key": "Shift+N", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Add next match", + "command": "dance.search.next.add" + }, + { + "key": "N", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Add next match", "command": "dance.search.next.add" }, { "key": "Alt+N", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Select previous match", + "command": "dance.search.previous" + }, + { + "key": "Shift+N", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Select previous match", "command": "dance.search.previous" }, { "key": "Shift+Alt+N", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Add previous match", + "command": "dance.search.previous.add" + }, + { + "key": "Shift+N", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Add previous match", "command": "dance.search.previous.add" }, @@ -3389,127 +3563,133 @@ }, { "key": "Alt+A", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select whole object", "command": "dance.seek.askObject" }, { "key": "Alt+A", - "when": "editorTextFocus && dance.mode == 'insert'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'", "title": "Select whole object", "command": "dance.seek.askObject" }, { "key": "]", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to whole object end", "command": "dance.seek.askObject.end" }, { "key": "Shift+]", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to whole object end", "command": "dance.seek.askObject.end.extend" }, { "key": "Alt+I", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select inner object", "command": "dance.seek.askObject.inner" }, { "key": "Alt+I", - "when": "editorTextFocus && dance.mode == 'insert'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'", "title": "Select inner object", "command": "dance.seek.askObject.inner" }, { "key": "Alt+]", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to inner object end", "command": "dance.seek.askObject.inner.end" }, { "key": "Shift+Alt+]", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to inner object end", "command": "dance.seek.askObject.inner.end.extend" }, { "key": "Alt+[", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to inner object start", "command": "dance.seek.askObject.inner.start" }, { "key": "Shift+Alt+[", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to inner object start", "command": "dance.seek.askObject.inner.start.extend" }, { "key": "[", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to whole object start", "command": "dance.seek.askObject.start" }, { "key": "Shift+[", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to whole object start", "command": "dance.seek.askObject.start.extend" }, { "key": "Alt+T", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Select to character (excluded, backward)", + "command": "dance.seek.backward" + }, + { + "key": "Shift+T", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Select to character (excluded, backward)", "command": "dance.seek.backward" }, { "key": "M", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to next enclosing character", "command": "dance.seek.enclosing" }, { "key": "Alt+M", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to previous enclosing character", "command": "dance.seek.enclosing.backward" }, { "key": "Shift+M", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to next enclosing character", "command": "dance.seek.enclosing.extend" }, { "key": "Shift+Alt+M", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to previous enclosing character", "command": "dance.seek.enclosing.extend.backward" }, { "key": "Shift+T", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to character (excluded)", "command": "dance.seek.extend" }, { "key": "T", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to character (excluded)", "command": "dance.seek.extend" }, { "key": "Shift+Alt+T", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to character (excluded, backward)", "command": "dance.seek.extend.backward" }, { "key": "Shift+T", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to character (excluded, backward)", "command": "dance.seek.extend.backward" }, @@ -3521,31 +3701,37 @@ }, { "key": "Alt+F", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to character (included, backward)", "command": "dance.seek.included.backward" }, { "key": "Shift+F", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Select to character (included, backward)", + "command": "dance.seek.included.backward" + }, + { + "key": "Shift+F", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to character (included)", "command": "dance.seek.included.extend" }, { "key": "F", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to character (included)", "command": "dance.seek.included.extend" }, { "key": "Shift+Alt+F", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to character (included, backward)", "command": "dance.seek.included.extend.backward" }, { "key": "Shift+F", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to character (included, backward)", "command": "dance.seek.included.extend.backward" }, @@ -3563,61 +3749,73 @@ }, { "key": "Shift+W", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to next word start", "command": "dance.seek.word.extend" }, { "key": "W", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to next word start", "command": "dance.seek.word.extend" }, { "key": "Shift+B", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to previous word start", "command": "dance.seek.word.extend.backward" }, { "key": "B", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to previous word start", "command": "dance.seek.word.extend.backward" }, { "key": "Alt+W", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Select to next non-whitespace word start", + "command": "dance.seek.word.ws" + }, + { + "key": "Shift+W", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Select to next non-whitespace word start", "command": "dance.seek.word.ws" }, { "key": "Alt+B", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Select to previous non-whitespace word start", + "command": "dance.seek.word.ws.backward" + }, + { + "key": "Shift+B", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Select to previous non-whitespace word start", "command": "dance.seek.word.ws.backward" }, { "key": "Shift+Alt+W", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to next non-whitespace word start", "command": "dance.seek.word.ws.extend" }, { "key": "Shift+W", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to next non-whitespace word start", "command": "dance.seek.word.ws.extend" }, { "key": "Shift+Alt+B", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to previous non-whitespace word start", "command": "dance.seek.word.ws.extend.backward" }, { "key": "Shift+B", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to previous non-whitespace word start", "command": "dance.seek.word.ws.extend.backward" }, @@ -3629,61 +3827,67 @@ }, { "key": "Shift+E", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to next word end", "command": "dance.seek.wordEnd.extend" }, { "key": "E", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to next word end", "command": "dance.seek.wordEnd.extend" }, { "key": "Alt+E", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Select to next non-whitespace word end", + "command": "dance.seek.wordEnd.ws" + }, + { + "key": "Shift+E", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", "title": "Select to next non-whitespace word end", "command": "dance.seek.wordEnd.ws" }, { "key": "Shift+Alt+E", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to next non-whitespace word end", "command": "dance.seek.wordEnd.ws.extend" }, { "key": "Shift+E", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to next non-whitespace word end", "command": "dance.seek.wordEnd.ws.extend" }, { "key": "Shift+5", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select whole buffer", "command": "dance.select.buffer" }, { "key": "Shift+J", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend down", "command": "dance.select.down.extend" }, { "key": "Shift+Down", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend down", "command": "dance.select.down.extend" }, { "key": "J", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend down", "command": "dance.select.down.extend" }, { "key": "Down", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend down", "command": "dance.select.down.extend" }, @@ -3701,25 +3905,25 @@ }, { "key": "Shift+H", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend left", "command": "dance.select.left.extend" }, { "key": "Shift+Left", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend left", "command": "dance.select.left.extend" }, { "key": "H", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend left", "command": "dance.select.left.extend" }, { "key": "Left", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend left", "command": "dance.select.left.extend" }, @@ -3735,9 +3939,21 @@ "title": "Jump left", "command": "dance.select.left.jump" }, + { + "key": "X", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Extend to line below", + "command": "dance.select.line.below.extend" + }, + { + "key": "X", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Extend to line below", + "command": "dance.select.line.below.extend" + }, { "key": "Alt+L", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to line end", "command": "dance.select.lineEnd" }, @@ -3749,19 +3965,25 @@ }, { "key": "Shift+Alt+L", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to line end", "command": "dance.select.lineEnd.extend" }, { "key": "Shift+End", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Extend to line end", + "command": "dance.select.lineEnd.extend" + }, + { + "key": "End", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to line end", "command": "dance.select.lineEnd.extend" }, { "key": "Alt+H", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Select to line start", "command": "dance.select.lineStart" }, @@ -3773,37 +3995,43 @@ }, { "key": "Shift+Alt+H", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to line start", "command": "dance.select.lineStart.extend" }, { "key": "Shift+Home", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Extend to line start", + "command": "dance.select.lineStart.extend" + }, + { + "key": "Home", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to line start", "command": "dance.select.lineStart.extend" }, { "key": "Shift+L", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend right", "command": "dance.select.right.extend" }, { "key": "Shift+Right", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend right", "command": "dance.select.right.extend" }, { "key": "L", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend right", "command": "dance.select.right.extend" }, { "key": "Right", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend right", "command": "dance.select.right.extend" }, @@ -3821,13 +4049,13 @@ }, { "key": "Shift+G", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend to", "command": "dance.select.to.extend" }, { "key": "G", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend to", "command": "dance.select.to.extend" }, @@ -3839,25 +4067,25 @@ }, { "key": "Shift+K", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend up", "command": "dance.select.up.extend" }, { "key": "Shift+Up", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Extend up", "command": "dance.select.up.extend" }, { "key": "K", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend up", "command": "dance.select.up.extend" }, { "key": "Up", - "when": "editorTextFocus && dance.mode == 'select'", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Extend up", "command": "dance.select.up.extend" }, @@ -3954,10 +4182,56 @@ } }, { - "key": "Alt+;", - "when": "editorTextFocus && dance.mode == 'normal'", - "title": "Change direction of selections", - "command": "dance.selections.changeDirection" + "key": "Ctrl+F", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "command": "dance.select.vertically", + "args": { + "direction": 1, + "by": "page", + "shift": "extend" + } + }, + { + "key": "Ctrl+D", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "command": "dance.select.vertically", + "args": { + "direction": 1, + "by": "halfPage", + "shift": "extend" + } + }, + { + "key": "Ctrl+B", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "command": "dance.select.vertically", + "args": { + "direction": -1, + "by": "page", + "shift": "extend" + } + }, + { + "key": "Ctrl+U", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "command": "dance.select.vertically", + "args": { + "direction": -1, + "by": "halfPage", + "shift": "extend" + } + }, + { + "key": "Alt+;", + "when": "editorTextFocus && dance.mode == 'normal'", + "title": "Change direction of selections", + "command": "dance.selections.changeDirection" + }, + { + "key": "Alt+;", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Change direction of selections", + "command": "dance.selections.changeDirection" }, { "key": "Alt+,", @@ -3965,33 +4239,57 @@ "title": "Clear main selections", "command": "dance.selections.clear.main" }, + { + "key": "Alt+,", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Clear main selections", + "command": "dance.selections.clear.main" + }, { "key": ",", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Clear secondary selections", "command": "dance.selections.clear.secondary" }, + { + "key": ",", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Clear secondary selections", + "command": "dance.selections.clear.secondary" + }, { "key": "Shift+C", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Copy selections below", "command": "dance.selections.copy" }, { "key": "Shift+Alt+C", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Copy selections above", "command": "dance.selections.copy.above" }, { "key": "X", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Expand to lines", + "command": "dance.selections.expandToLines" + }, + { + "key": "Shift+X", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Expand to lines", + "command": "dance.selections.expandToLines" + }, + { + "key": "Shift+X", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Expand to lines", "command": "dance.selections.expandToLines" }, { "key": "Shift+Alt+;", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Forward selections", "command": "dance.selections.faceForward" }, @@ -4001,21 +4299,39 @@ "title": "Filter selections", "command": "dance.selections.filter" }, + { + "key": "Shift+4", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Filter selections", + "command": "dance.selections.filter" + }, { "key": "Alt+K", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Keep matching selections", "command": "dance.selections.filter.regexp" }, + { + "key": "Alt+K", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Keep matching selections", + "command": "dance.selections.filter.regexp" + }, { "key": "Shift+Alt+K", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Clear matching selections", "command": "dance.selections.filter.regexp.inverse" }, + { + "key": "Shift+Alt+K", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Clear matching selections", + "command": "dance.selections.filter.regexp.inverse" + }, { "key": "Shift+Alt+-", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Merge contiguous selections", "command": "dance.selections.merge" }, @@ -4025,51 +4341,81 @@ "title": "Pipe selections", "command": "dance.selections.pipe" }, + { + "key": "Shift+Alt+\\", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Pipe selections", + "command": "dance.selections.pipe" + }, { "key": "Shift+1", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Pipe and append", "command": "dance.selections.pipe.append" }, + { + "key": "Shift+1", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Pipe and append", + "command": "dance.selections.pipe.append" + }, { "key": "Shift+Alt+1", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Pipe and prepend", "command": "dance.selections.pipe.prepend" }, + { + "key": "Shift+Alt+1", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Pipe and prepend", + "command": "dance.selections.pipe.prepend" + }, { "key": "Shift+\\", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Pipe and replace", "command": "dance.selections.pipe.replace" }, + { + "key": "Shift+\\", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Pipe and replace", + "command": "dance.selections.pipe.replace" + }, { "key": ";", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Reduce selections to their cursor", "command": "dance.selections.reduce" }, + { + "key": ";", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Reduce selections to their cursor", + "command": "dance.selections.reduce" + }, { "key": "Shift+Alt+S", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Reduce selections to their ends", "command": "dance.selections.reduce.edges" }, { "key": "Z", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Restore selections", "command": "dance.selections.restore" }, { "key": "Alt+Z", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Combine register selections with current ones", "command": "dance.selections.restore.withCurrent" }, { "key": "Shift+Alt+Z", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "command": "dance.selections.restore.withCurrent", "args": { "reverse": true, @@ -4078,7 +4424,7 @@ }, { "key": "Shift+Z", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Save selections", "command": "dance.selections.save" }, @@ -4088,27 +4434,51 @@ "title": "Copy selections text", "command": "dance.selections.saveText" }, + { + "key": "Y", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Copy selections text", + "command": "dance.selections.saveText" + }, { "key": "S", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Leap or select", "command": "dance.selections.select.orLeap" }, + { + "key": "S", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Leap or select", + "command": "dance.selections.select.orLeap" + }, { "key": "Shift+S", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Split selections", "command": "dance.selections.split" }, + { + "key": "Shift+S", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Split selections", + "command": "dance.selections.split" + }, { "key": "Alt+S", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Leap or select backward", "command": "dance.selections.splitLines.orLeap.backward" }, + { + "key": "Alt+S", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Leap or select backward", + "command": "dance.selections.splitLines.orLeap.backward" + }, { "key": "Enter", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'dance' && dance.mode == 'normal'", "title": "Toggle selection indices", "command": "dance.selections.toggleIndices" }, @@ -4118,24 +4488,60 @@ "title": "Trim lines", "command": "dance.selections.trimLines" }, + { + "key": "Alt+X", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Trim lines", + "command": "dance.selections.trimLines" + }, { "key": "Shift+-", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Trim whitespace", "command": "dance.selections.trimWhitespace" }, + { + "key": "Shift+-", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Trim whitespace", + "command": "dance.selections.trimWhitespace" + }, { "key": "Shift+Alt+0", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Rotate selections clockwise", "command": "dance.selections.rotate.both" }, { "key": "Shift+Alt+9", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Rotate selections counter-clockwise", "command": "dance.selections.rotate.both.reverse" }, + { + "key": "Shift+Alt+0", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Rotate selections clockwise (contents only)", + "command": "dance.selections.rotate.contents" + }, + { + "key": "Shift+Alt+0", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Rotate selections clockwise (contents only)", + "command": "dance.selections.rotate.contents" + }, + { + "key": "Shift+Alt+9", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Rotate selections counter-clockwise (contents only)", + "command": "dance.selections.rotate.contents.reverse" + }, + { + "key": "Shift+Alt+9", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Rotate selections counter-clockwise (contents only)", + "command": "dance.selections.rotate.contents.reverse" + }, { "key": "Shift+0", "when": "editorTextFocus && dance.mode == 'normal'", @@ -4148,9 +4554,35 @@ "title": "Rotate selections counter-clockwise (selections only)", "command": "dance.selections.rotate.selections.reverse" }, + { + "key": "Shift+9", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Rotate selections counter-clockwise (selections only)", + "command": "dance.selections.rotate.selections.reverse" + }, { "key": "V", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", + "title": "Show view menu", + "command": "dance.openMenu", + "args": { + "menu": "view", + "$exclude": [] + } + }, + { + "key": "Z", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Show view menu", + "command": "dance.openMenu", + "args": { + "menu": "view", + "$exclude": [] + } + }, + { + "key": "Z", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", "title": "Show view menu", "command": "dance.openMenu", "args": { @@ -4160,7 +4592,7 @@ }, { "key": "Shift+V", - "when": "editorTextFocus && dance.mode == 'normal'", + "when": "editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'", "title": "Show view menu (locked)", "command": "dance.openMenu", "args": { @@ -4170,439 +4602,486 @@ } }, { - "command": "dance.ignore", - "key": "Shift+D", - "when": "editorTextFocus && dance.mode == 'normal'" + "key": "Shift+Z", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'", + "title": "Show view menu (locked)", + "command": "dance.openMenu", + "args": { + "menu": "view", + "locked": true, + "$exclude": [] + } }, { + "key": "Shift+Z", + "when": "editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'", + "title": "Show view menu (locked)", + "command": "dance.openMenu", + "args": { + "menu": "view", + "locked": true, + "$exclude": [] + } + }, + { + "key": "Shift+D", "command": "dance.ignore", - "key": "Shift+X", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+X", "command": "dance.ignore", - "key": "Shift+Y", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+Y", "command": "dance.ignore", - "key": "Shift+2", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+2", "command": "dance.ignore", - "key": "Shift+3", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+3", "command": "dance.ignore", - "key": "Shift+6", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+6", "command": "dance.ignore", - "key": "'", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "'", "command": "dance.ignore", - "key": "-", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "-", "command": "dance.ignore", - "key": "=", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "=", "command": "dance.ignore", - "key": "Tab", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Tab", "command": "dance.ignore", - "key": "Space", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Space", "command": "dance.ignore", - "key": "NumPad_Add", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "NumPad_Add", "command": "dance.ignore", - "key": "NumPad_Subtract", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "NumPad_Subtract", "command": "dance.ignore", - "key": "Shift+=", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+=", "command": "dance.ignore", - "key": "Shift+Tab", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+Tab", "command": "dance.ignore", - "key": "Shift+Space", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+Space", "command": "dance.ignore", - "key": "Shift+NumPad_Add", - "when": "editorTextFocus && dance.mode == 'normal'" + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "Shift+NumPad_Add", "command": "dance.ignore", + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" + }, + { "key": "Shift+NumPad_Subtract", - "when": "editorTextFocus && dance.mode == 'normal'" + "command": "dance.ignore", + "when": "dance.mode == 'normal' && dance.behavior == 'kakoune'" }, { + "key": "M", "command": "dance.ignore", - "key": "A", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Q", "command": "dance.ignore", - "key": "I", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+C", "command": "dance.ignore", - "key": "M", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+D", "command": "dance.ignore", - "key": "N", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+G", "command": "dance.ignore", - "key": "O", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+H", "command": "dance.ignore", - "key": "P", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+J", "command": "dance.ignore", - "key": "Q", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+K", "command": "dance.ignore", - "key": "R", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+L", "command": "dance.ignore", - "key": "S", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+M", "command": "dance.ignore", - "key": "V", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+Q", "command": "dance.ignore", - "key": "X", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+R", "command": "dance.ignore", - "key": "Y", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+V", "command": "dance.ignore", - "key": "Z", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+Y", "command": "dance.ignore", - "key": "0", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+2", "command": "dance.ignore", - "key": "1", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+3", "command": "dance.ignore", - "key": "2", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+5", "command": "dance.ignore", - "key": "3", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+6", "command": "dance.ignore", - "key": "4", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "'", "command": "dance.ignore", - "key": "5", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "-", "command": "dance.ignore", - "key": "6", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "=", "command": "dance.ignore", - "key": "7", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Tab", "command": "dance.ignore", - "key": "8", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Space", "command": "dance.ignore", - "key": "9", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "NumPad_Add", "command": "dance.ignore", - "key": "Shift+A", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "NumPad_Subtract", "command": "dance.ignore", - "key": "Shift+C", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+=", "command": "dance.ignore", - "key": "Shift+D", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+Tab", "command": "dance.ignore", - "key": "Shift+G", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+Space", "command": "dance.ignore", - "key": "Shift+H", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" + }, + { + "key": "Shift+NumPad_Add", + "command": "dance.ignore", + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "Shift+NumPad_Subtract", "command": "dance.ignore", - "key": "Shift+I", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'normal' && dance.behavior == 'helix'" }, { + "key": "M", "command": "dance.ignore", - "key": "Shift+J", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Q", "command": "dance.ignore", - "key": "Shift+K", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "R", "command": "dance.ignore", - "key": "Shift+L", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "0", "command": "dance.ignore", - "key": "Shift+M", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "1", "command": "dance.ignore", - "key": "Shift+N", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "2", "command": "dance.ignore", - "key": "Shift+O", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "3", "command": "dance.ignore", - "key": "Shift+P", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "4", "command": "dance.ignore", - "key": "Shift+Q", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "5", "command": "dance.ignore", - "key": "Shift+R", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "6", "command": "dance.ignore", - "key": "Shift+S", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "7", "command": "dance.ignore", - "key": "Shift+V", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "8", "command": "dance.ignore", - "key": "Shift+X", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "9", "command": "dance.ignore", - "key": "Shift+Y", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+C", "command": "dance.ignore", - "key": "Shift+Z", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+D", "command": "dance.ignore", - "key": "Shift+0", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+G", "command": "dance.ignore", - "key": "Shift+1", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+H", "command": "dance.ignore", - "key": "Shift+2", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+K", "command": "dance.ignore", - "key": "Shift+3", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+L", "command": "dance.ignore", - "key": "Shift+4", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+M", "command": "dance.ignore", - "key": "Shift+5", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+Q", "command": "dance.ignore", - "key": "Shift+6", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+R", "command": "dance.ignore", - "key": "Shift+7", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+V", "command": "dance.ignore", - "key": "Shift+8", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+Y", "command": "dance.ignore", - "key": "Shift+9", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+0", "command": "dance.ignore", - "key": ",", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+2", "command": "dance.ignore", - "key": "'", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+3", "command": "dance.ignore", - "key": "-", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+5", "command": "dance.ignore", - "key": "=", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+6", "command": "dance.ignore", - "key": "Tab", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+7", "command": "dance.ignore", - "key": "Space", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+8", "command": "dance.ignore", - "key": "NumPad_Add", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "'", "command": "dance.ignore", - "key": "NumPad_Subtract", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "-", "command": "dance.ignore", - "key": "Shift+,", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "=", "command": "dance.ignore", - "key": "Shift+'", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Tab", "command": "dance.ignore", - "key": "Shift+-", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Space", "command": "dance.ignore", - "key": "Shift+=", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "NumPad_Add", "command": "dance.ignore", - "key": "Shift+Tab", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "NumPad_Subtract", "command": "dance.ignore", - "key": "Shift+Space", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+'", "command": "dance.ignore", - "key": "Shift+NumPad_Add", - "when": "editorTextFocus && dance.mode == 'select'" + "when": "dance.mode == 'select' && dance.behavior == 'helix'" + }, + { + "key": "Shift+=", + "command": "dance.ignore", + "when": "dance.mode == 'select' && dance.behavior == 'helix'" }, { + "key": "Shift+Tab", + "command": "dance.ignore", + "when": "dance.mode == 'select' && dance.behavior == 'helix'" + }, + { + "key": "Shift+Space", + "command": "dance.ignore", + "when": "dance.mode == 'select' && dance.behavior == 'helix'" + }, + { + "key": "Shift+NumPad_Add", "command": "dance.ignore", + "when": "dance.mode == 'select' && dance.behavior == 'helix'" + }, + { "key": "Shift+NumPad_Subtract", - "when": "editorTextFocus && dance.mode == 'select'" + "command": "dance.ignore", + "when": "dance.mode == 'select' && dance.behavior == 'helix'" } ] } diff --git a/src/api/data/commands.yaml b/src/api/data/commands.yaml index 17f6d0f1..141edaaf 100644 --- a/src/api/data/commands.yaml +++ b/src/api/data/commands.yaml @@ -48,7 +48,7 @@ edit.align: keys: qwerty: |- - `&` (kakoune: normal) + `&` (core: normal) doc: en: |+ @@ -64,6 +64,8 @@ edit.case.swap: keys: qwerty: |- `` a-` `` (kakoune: normal) + `` s-` `` (helix: normal) + `` s-` `` (helix: select) doc: en: |+ @@ -75,7 +77,8 @@ edit.case.toLower: keys: qwerty: |- - `` ` `` (kakoune: normal) + `` ` `` (core: normal) + `` ` `` (helix: select) doc: en: |+ @@ -88,6 +91,8 @@ edit.case.toUpper: keys: qwerty: |- `` s-` `` (kakoune: normal) + `` a-` `` (helix: normal) + `` a-` `` (helix: select) doc: en: |+ @@ -126,7 +131,8 @@ edit.deindent.withIncomplete: keys: qwerty: |- - `<` (kakoune: normal) + `<` (core: normal) + `<` (helix: select) doc: en: |+ @@ -141,7 +147,8 @@ edit.delete: keys: qwerty: |- - `a-d` (kakoune: normal) + `a-d` (core: normal) + `a-d` (helix: select) edit.delete-insert: title: @@ -160,7 +167,8 @@ edit.indent: keys: qwerty: |- - `>` (kakoune: normal) + `>` (core: normal) + `>` (helix: select) doc: en: |+ @@ -206,18 +214,18 @@ edit.insert: | Title | Identifier | Keybinding | Commands | | ---------------------------------- | ------------------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | Pick register and replace | `selectRegister-insert` | `c-r` (kakoune: normal), `c-r` (kakoune: insert) | `[".selectRegister", { +register }], [".edit.insert", { ... }]` | - | Paste before | `paste.before` | | `[".edit.insert", { handleNewLine: true, where: "start", ... }]` | - | Paste after | `paste.after` | | `[".edit.insert", { handleNewLine: true, where: "end" , ... }]` | - | Paste before and select | `paste.before.select` | `s-p` (kakoune: normal) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | - | Paste after and select | `paste.after.select` | `p` (kakoune: normal) | `[".edit.insert", { handleNewLine: true, where: "end" , shift: "select", ... }]` | + | Paste before | `paste.before` | `s-p` (helix: select) | `[".edit.insert", { handleNewLine: true, where: "start", ... }]` | + | Paste after | `paste.after` | `p` (helix: select) | `[".edit.insert", { handleNewLine: true, where: "end" , ... }]` | + | Paste before and select | `paste.before.select` | `s-p` (core: normal) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | + | Paste after and select | `paste.after.select` | `p` (core: normal) | `[".edit.insert", { handleNewLine: true, where: "end" , shift: "select", ... }]` | | Paste all before | `pasteAll.before` | | `[".edit.insert", { handleNewLine: true, where: "start", all: true, ... }]` | | Paste all after | `pasteAll.after` | | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, ... }]` | | Paste all before and select | `pasteAll.before.select` | `s-a-p` (kakoune: normal) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | | Paste all after and select | `pasteAll.after.select` | `a-p` (kakoune: normal) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | - | Delete | `delete` | `a-d` (kakoune: normal) | `[".edit.insert", { register: "_", ... }]` | + | Delete | `delete` | `a-d` (core: normal), `a-d` (helix: select) | `[".edit.insert", { register: "_", ... }]` | | Delete and switch to Insert | `delete-insert` | `a-c` (kakoune: normal) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | - | Copy and delete | `yank-delete` | `d` (kakoune: normal), `d` (helix: select) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | - | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (kakoune: normal), `c` (helix: select) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | + | Copy and delete | `yank-delete` | `d` (core: normal), `d` (helix: select) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | + | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (core: normal), `c` (helix: select) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | | Copy and replace | `yank-replace` | `s-r` (kakoune: normal) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | edit.join: @@ -226,7 +234,8 @@ edit.join: keys: qwerty: |- - `a-j` (kakoune: normal) + `a-j` (core: normal) + `s-j` (helix: select) doc: en: |+ @@ -238,7 +247,8 @@ edit.join.select: keys: qwerty: |- - `s-a-j` (kakoune: normal) + `s-a-j` (core: normal) + `s-a-j` (helix: select) doc: en: |+ @@ -262,9 +272,9 @@ edit.newLine.above: #### Additional keybindings - | Title | Identifier | Keybinding | Commands | - | ------------------------------------------ | ---------------------- | ----------------------- | --------------------------------------------------------------------------------- | - | Insert new line above and switch to insert | `newLine.above.insert` | `s-o` (kakoune: normal) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | + | Title | Identifier | Keybinding | Commands | + | ------------------------------------------ | ---------------------- | ------------------------------------------- | --------------------------------------------------------------------------------- | + | Insert new line above and switch to insert | `newLine.above.insert` | `s-o` (core: normal), `s-o` (helix: select) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | edit.newLine.above.insert: title: @@ -275,7 +285,8 @@ edit.newLine.above.insert: keys: qwerty: |- - `s-o` (kakoune: normal) + `s-o` (core: normal) + `s-o` (helix: select) edit.newLine.below: title: @@ -295,9 +306,9 @@ edit.newLine.below: #### Additional keybindings - | Title | Identifier | Keybinding | Commands | - | ------------------------------------------ | ---------------------- | --------------------- | --------------------------------------------------------------------------------- | - | Insert new line below and switch to insert | `newLine.below.insert` | `o` (kakoune: normal) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | + | Title | Identifier | Keybinding | Commands | + | ------------------------------------------ | ---------------------- | --------------------------------------- | --------------------------------------------------------------------------------- | + | Insert new line below and switch to insert | `newLine.below.insert` | `o` (core: normal), `o` (helix: select) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | edit.newLine.below.insert: title: @@ -308,7 +319,8 @@ edit.newLine.below.insert: keys: qwerty: |- - `o` (kakoune: normal) + `o` (core: normal) + `o` (helix: select) edit.paste.after: title: @@ -318,7 +330,8 @@ edit.paste.after: [".edit.insert", { handleNewLine: true, where: "end" , $exclude: [] }] keys: - qwerty: "" + qwerty: |- + `p` (helix: select) edit.paste.after.select: title: @@ -329,7 +342,7 @@ edit.paste.after.select: keys: qwerty: |- - `p` (kakoune: normal) + `p` (core: normal) edit.paste.before: title: @@ -339,7 +352,8 @@ edit.paste.before: [".edit.insert", { handleNewLine: true, where: "start", $exclude: [] }] keys: - qwerty: "" + qwerty: |- + `s-p` (helix: select) edit.paste.before.select: title: @@ -350,7 +364,7 @@ edit.paste.before.select: keys: qwerty: |- - `s-p` (kakoune: normal) + `s-p` (core: normal) edit.pasteAll.after: title: @@ -400,7 +414,7 @@ edit.replaceCharacters: keys: qwerty: |- - `r` (kakoune: normal) + `r` (core: normal) doc: en: |+ @@ -427,7 +441,7 @@ edit.yank-delete: keys: qwerty: |- - `d` (kakoune: normal) + `d` (core: normal) `d` (helix: select) edit.yank-delete-insert: @@ -439,7 +453,7 @@ edit.yank-delete-insert: keys: qwerty: |- - `c` (kakoune: normal) + `c` (core: normal) `c` (helix: select) edit.yank-replace: @@ -496,7 +510,7 @@ history.redo: keys: qwerty: |- - `s-u` (kakoune: normal) + `s-u` (core: normal) `s-u` (helix: select) doc: @@ -524,10 +538,10 @@ history.repeat: Repeat last change. - | Title | Identifier | Keybinding | Commands | - | ---------------------------- | ------------------ | ----------------------- | ----------------------------------------------------------------------------- | - | Repeat last selection change | `repeat.selection` | | `[".history.repeat", { filter: "dance\\.(seek|select|selections)", +count }]` | - | Repeat last seek | `repeat.seek` | `a-.` (kakoune: normal) | `[".history.repeat", { filter: "dance\\.seek", +count }]` | + | Title | Identifier | Keybinding | Commands | + | ---------------------------- | ------------------ | ------------------------------------------- | ----------------------------------------------------------------------------- | + | Repeat last selection change | `repeat.selection` | | `[".history.repeat", { filter: "dance\\.(seek|select|selections)", +count }]` | + | Repeat last seek | `repeat.seek` | `a-.` (core: normal), `a-.` (helix: select) | `[".history.repeat", { filter: "dance\\.seek", +count }]` | history.repeat.edit: title: @@ -535,8 +549,8 @@ history.repeat.edit: keys: qwerty: |- - `.` (kakoune: normal) - `NumPad_Decimal` (kakoune: normal) + `.` (core: normal) + `NumPad_Decimal` (core: normal) doc: en: |+ @@ -551,7 +565,8 @@ history.repeat.seek: keys: qwerty: |- - `a-.` (kakoune: normal) + `a-.` (core: normal) + `a-.` (helix: select) history.repeat.selection: title: @@ -569,7 +584,7 @@ history.undo: keys: qwerty: |- - `u` (kakoune: normal) + `u` (core: normal) `u` (helix: select) doc: @@ -624,7 +639,8 @@ modes.insert.after: keys: qwerty: |- - `a` (kakoune: normal) + `a` (core: normal) + `a` (helix: select) modes.insert.before: title: @@ -635,7 +651,8 @@ modes.insert.before: keys: qwerty: |- - `i` (kakoune: normal) + `i` (core: normal) + `i` (helix: select) modes.insert.lineEnd: title: @@ -646,7 +663,8 @@ modes.insert.lineEnd: keys: qwerty: |- - `s-a` (kakoune: normal) + `s-a` (core: normal) + `s-a` (helix: select) modes.insert.lineStart: title: @@ -657,7 +675,8 @@ modes.insert.lineStart: keys: qwerty: |- - `s-i` (kakoune: normal) + `s-i` (core: normal) + `s-i` (helix: select) modes.set: title: @@ -669,20 +688,20 @@ modes.set: #### Variants - | Title | Identifier | Keybinding | Command | - | ------------------ | ------------ | ---------------------------------------------------- | ----------------------------------------------------------- | - | Set mode to Normal | `set.normal` | `escape` (kakoune: insert), `escape` (helix: select) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | - | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | - | Set mode to Select | `set.select` | | `[".modes.set", { mode: "select" }]` | + | Title | Identifier | Keybinding | Command | + | ------------------ | ------------ | ---------------------------------------------------------------------- | ----------------------------------------------------------- | + | Set mode to Normal | `set.normal` | `escape` (core: insert), `escape` (helix: select), `v` (helix: select) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | + | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | + | Set mode to Select | `set.select` | `v` (helix: normal) | `[".modes.set", { mode: "select" }]` | Other variants are provided to switch to insert mode: - | Title | Identifier | Keybinding | Commands | - | -------------------- | ------------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | Insert before | `insert.before` | `i` (kakoune: normal) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | - | Insert after | `insert.after` | `a` (kakoune: normal) | `[".selections.faceForward" , { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | - | Insert at line start | `insert.lineStart` | `s-i` (kakoune: normal) | `[".select.lineStart", { shift: "jump", skipBlank: true }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | - | Insert at line end | `insert.lineEnd` | `s-a` (kakoune: normal) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | + | Title | Identifier | Keybinding | Commands | + | -------------------- | ------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | Insert before | `insert.before` | `i` (core: normal), `i` (helix: select) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | + | Insert after | `insert.after` | `a` (core: normal), `a` (helix: select) | `[".selections.faceForward" , { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | + | Insert at line start | `insert.lineStart` | `s-i` (core: normal), `s-i` (helix: select) | `[".select.lineStart", { shift: "jump", skipBlank: true }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | + | Insert at line end | `insert.lineEnd` | `s-a` (core: normal), `s-a` (helix: select) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | modes.set.insert: title: @@ -703,8 +722,9 @@ modes.set.normal: keys: qwerty: |- - `escape` (kakoune: insert) + `escape` (core: insert) `escape` (helix: select) + `v` (helix: select) modes.set.select: title: @@ -714,7 +734,8 @@ modes.set.select: [".modes.set", { mode: "select" }] keys: - qwerty: "" + qwerty: |- + `v` (helix: normal) modes.set.temporarily: title: @@ -879,19 +900,19 @@ search: keys: qwerty: |- - `/` (kakoune: normal) - `NumPad_Divide` (kakoune: normal) + `/` (core: normal) + `NumPad_Divide` (core: normal) doc: en: | Search. - | Title | Identifier | Keybinding | Command | - | ------------------------ | ----------------- | ----------------------- | ------------------------------------------------------ | - | Search (extend) | `extend` | `?` (kakoune: normal) | `[".search", { shift: "extend", ... }]` | - | Search backward | `backward` | `a-/` (kakoune: normal) | `[".search", { direction: -1 , ... }]` | - | Search backward (extend) | `backward.extend` | `a-?` (kakoune: normal) | `[".search", { direction: -1, shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | ------------------------ | ----------------- | -------------------------------------------- | ------------------------------------------------------ | + | Search (extend) | `extend` | `?` (kakoune: normal), `/` (helix: select) | `[".search", { shift: "extend", ... }]` | + | Search backward | `backward` | `a-/` (kakoune: normal), `?` (helix: normal) | `[".search", { direction: -1 , ... }]` | + | Search backward (extend) | `backward.extend` | `a-?` (kakoune: normal), `?` (helix: select) | `[".search", { direction: -1, shift: "extend", ... }]` | search.backward: title: @@ -903,6 +924,7 @@ search.backward: keys: qwerty: |- `a-/` (kakoune: normal) + `?` (helix: normal) search.backward.extend: title: @@ -914,6 +936,7 @@ search.backward.extend: keys: qwerty: |- `a-?` (kakoune: normal) + `?` (helix: select) search.extend: title: @@ -925,6 +948,7 @@ search.extend: keys: qwerty: |- `?` (kakoune: normal) + `/` (helix: select) search.next: title: @@ -932,18 +956,18 @@ search.next: keys: qwerty: |- - `n` (kakoune: normal) + `n` (core: normal) doc: en: | Select next match. - | Title | Identifier | Keybinding | Command | - | --------------------- | -------------- | ------------------------- | ----------------------------------------------------- | - | Add next match | `next.add` | `s-n` (kakoune: normal) | `[".search.next", { add: true, ... }]` | - | Select previous match | `previous` | `a-n` (kakoune: normal) | `[".search.next", { direction: -1 , ... }]` | - | Add previous match | `previous.add` | `s-a-n` (kakoune: normal) | `[".search.next", { direction: -1, add: true, ... }]` | + | Title | Identifier | Keybinding | Command | + | --------------------- | -------------- | ------------------------------------------------ | ----------------------------------------------------- | + | Add next match | `next.add` | `s-n` (kakoune: normal), `n` (helix: select) | `[".search.next", { add: true, ... }]` | + | Select previous match | `previous` | `a-n` (kakoune: normal), `s-n` (helix: normal) | `[".search.next", { direction: -1 , ... }]` | + | Add previous match | `previous.add` | `s-a-n` (kakoune: normal), `s-n` (helix: select) | `[".search.next", { direction: -1, add: true, ... }]` | search.next.add: title: @@ -955,6 +979,7 @@ search.next.add: keys: qwerty: |- `s-n` (kakoune: normal) + `n` (helix: select) search.previous: title: @@ -966,6 +991,7 @@ search.previous: keys: qwerty: |- `a-n` (kakoune: normal) + `s-n` (helix: normal) search.previous.add: title: @@ -977,6 +1003,7 @@ search.previous.add: keys: qwerty: |- `s-a-n` (kakoune: normal) + `s-n` (helix: select) search.selection: title: @@ -984,17 +1011,17 @@ search.selection: keys: qwerty: |- - `a-*` (kakoune: normal) - `a-NumPad_Multiply` (kakoune: normal) + `a-*` (core: normal) + `a-NumPad_Multiply` (core: normal) doc: en: | Search current selection. - | Title | Identifier | Keybinding | Command | - | -------------------------------- | ----------------- | ---------------------------------------------------------- | --------------------------------------------------- | - | Search current selection (smart) | `selection.smart` | `*` (kakoune: normal), `NumPad_Multiply` (kakoune: normal) | `[".search.selection", { smart: true, +register }]` | + | Title | Identifier | Keybinding | Command | + | -------------------------------- | ----------------- | ---------------------------------------------------- | --------------------------------------------------- | + | Search current selection (smart) | `selection.smart` | `*` (core: normal), `NumPad_Multiply` (core: normal) | `[".search.selection", { smart: true, +register }]` | search.selection.smart: title: @@ -1005,8 +1032,8 @@ search.selection.smart: keys: qwerty: |- - `*` (kakoune: normal) - `NumPad_Multiply` (kakoune: normal) + `*` (core: normal) + `NumPad_Multiply` (core: normal) seek: title: @@ -1014,7 +1041,7 @@ seek: keys: qwerty: |- - `t` (kakoune: normal) + `t` (core: normal) doc: en: | @@ -1026,11 +1053,11 @@ seek: | Title | Identifier | Keybinding | Command | | ---------------------------------------- | -------------------------- | ------------------------------------------------ | ------------------------------------------------------------------- | | Extend to character (excluded) | `extend` | `s-t` (kakoune: normal), `t` (helix: select) | `[".seek", { shift: "extend" , ... }]` | - | Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal) | `[".seek", { direction: -1, ... }]` | + | Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal), `s-t` (helix: normal) | `[".seek", { direction: -1, ... }]` | | Extend to character (excluded, backward) | `extend.backward` | `s-a-t` (kakoune: normal), `s-t` (helix: select) | `[".seek", { shift: "extend", direction: -1, ... }]` | - | Select to character (included) | `included` | `f` (kakoune: normal) | `[".seek", { include: true , ... }]` | + | Select to character (included) | `included` | `f` (core: normal) | `[".seek", { include: true , ... }]` | | Extend to character (included) | `included.extend` | `s-f` (kakoune: normal), `f` (helix: select) | `[".seek", { include: true, shift: "extend" , ... }]` | - | Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal) | `[".seek", { include: true, direction: -1, ... }]` | + | Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal), `s-f` (helix: normal) | `[".seek", { include: true, direction: -1, ... }]` | | Extend to character (included, backward) | `included.extend.backward` | `s-a-f` (kakoune: normal), `s-f` (helix: select) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | seek.askObject: @@ -1155,6 +1182,7 @@ seek.backward: keys: qwerty: |- `a-t` (kakoune: normal) + `s-t` (helix: normal) seek.enclosing: title: @@ -1243,7 +1271,7 @@ seek.included: keys: qwerty: |- - `f` (kakoune: normal) + `f` (core: normal) seek.included.backward: title: @@ -1255,6 +1283,7 @@ seek.included.backward: keys: qwerty: |- `a-f` (kakoune: normal) + `s-f` (helix: normal) seek.included.extend: title: @@ -1391,7 +1420,7 @@ seek.word: keys: qwerty: |- - `w` (kakoune: normal) + `w` (core: normal) doc: en: | @@ -1405,15 +1434,15 @@ seek.word: | Title | Identifier | Keybinding | Command | | -------------------------------------------- | ------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------- | | Extend to next word start | `word.extend` | `s-w` (kakoune: normal), `w` (helix: select) | `[".seek.word", { shift: "extend" , ... }]` | - | Select to previous word start | `word.backward` | `b` (kakoune: normal) | `[".seek.word", { direction: -1, ... }]` | + | Select to previous word start | `word.backward` | `b` (core: normal) | `[".seek.word", { direction: -1, ... }]` | | Extend to previous word start | `word.extend.backward` | `s-b` (kakoune: normal), `b` (helix: select) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | - | Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal) | `[".seek.word", { ws: true , ... }]` | + | Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal), `s-w` (helix: normal) | `[".seek.word", { ws: true , ... }]` | | Extend to next non-whitespace word start | `word.ws.extend` | `s-a-w` (kakoune: normal), `s-w` (helix: select) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | - | Select to previous non-whitespace word start | `word.ws.backward` | `a-b` (kakoune: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | + | Select to previous non-whitespace word start | `word.ws.backward` | `a-b` (kakoune: normal), `s-b` (helix: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | | Extend to previous non-whitespace word start | `word.ws.extend.backward` | `s-a-b` (kakoune: normal), `s-b` (helix: select) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | - | Select to next word end | `wordEnd` | `e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | + | Select to next word end | `wordEnd` | `e` (core: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | | Extend to next word end | `wordEnd.extend` | `s-e` (kakoune: normal), `e` (helix: select) | `[".seek.word", { stopAtEnd: true , shift: "extend" , ... }]` | - | Select to next non-whitespace word end | `wordEnd.ws` | `a-e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ws: true , ... }]` | + | Select to next non-whitespace word end | `wordEnd.ws` | `a-e` (kakoune: normal), `s-e` (helix: normal) | `[".seek.word", { stopAtEnd: true , ws: true , ... }]` | | Extend to next non-whitespace word end | `wordEnd.ws.extend` | `s-a-e` (kakoune: normal), `s-e` (helix: select) | `[".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , ... }]` | seek.word.backward: @@ -1425,7 +1454,7 @@ seek.word.backward: keys: qwerty: |- - `b` (kakoune: normal) + `b` (core: normal) seek.word.extend: title: @@ -1461,6 +1490,7 @@ seek.word.ws: keys: qwerty: |- `a-w` (kakoune: normal) + `s-w` (helix: normal) seek.word.ws.backward: title: @@ -1472,6 +1502,7 @@ seek.word.ws.backward: keys: qwerty: |- `a-b` (kakoune: normal) + `s-b` (helix: normal) seek.word.ws.extend: title: @@ -1506,7 +1537,7 @@ seek.wordEnd: keys: qwerty: |- - `e` (kakoune: normal) + `e` (core: normal) seek.wordEnd.extend: title: @@ -1530,6 +1561,7 @@ seek.wordEnd.ws: keys: qwerty: |- `a-e` (kakoune: normal) + `s-e` (helix: normal) seek.wordEnd.ws.extend: title: @@ -1598,7 +1630,7 @@ select.down.jump: keys: qwerty: |- - `j` (kakoune: normal) , `down` (kakoune: normal) + `j` (core: normal) , `down` (core: normal) select.firstLine.extend: title: @@ -1662,9 +1694,9 @@ select.horizontally: | Title | Identifier | Keybinding | Command | | ------------ | -------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | - | Jump right | `right.jump` | `l` (kakoune: normal) , `right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | + | Jump right | `right.jump` | `l` (core: normal) , `right` (core: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | | Extend right | `right.extend` | `s-l` (kakoune: normal), `s-right` (kakoune: normal), `l` (helix: select), `right` (helix: select) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | - | Jump left | `left.jump` | `h` (kakoune: normal) , `left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | + | Jump left | `left.jump` | `h` (core: normal) , `left` (core: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | | Extend left | `left.extend` | `s-h` (kakoune: normal), `s-left` (kakoune: normal), `h` (helix: select), `left` (helix: select) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | select.lastLine: @@ -1748,7 +1780,7 @@ select.left.jump: keys: qwerty: |- - `h` (kakoune: normal) , `left` (kakoune: normal) + `h` (core: normal) , `left` (core: normal) select.line.above: title: @@ -1782,6 +1814,11 @@ select.line.below.extend: en: | Extend to line below. + keys: + qwerty: |- + `x` (helix: normal) + `x` (helix: select) + select.lineEnd: title: en: Select to line end @@ -1789,7 +1826,7 @@ select.lineEnd: keys: qwerty: |- `a-l` (kakoune: normal) - `end` (kakoune: normal) + `end` (core: normal) doc: en: | @@ -1799,11 +1836,11 @@ select.lineEnd: #### Variants - | Title | Identifier | Keybinding | Command | - | ------------------------ | -------------------- | ---------------------------------------------------- | --------------------------------------------------------------- | - | Extend to line end | `lineEnd.extend` | `s-a-l` (kakoune: normal), `s-end` (kakoune: normal) | `[".select.lineEnd", { shift: "extend", ... }]` | - | Jump to last character | `documentEnd.jump` | | `[".select.lineEnd", { count: MAX_INT, shift: "jump" , ... }]` | - | Extend to last character | `documentEnd.extend` | | `[".select.lineEnd", { count: MAX_INT, shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | ------------------------ | -------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------- | + | Extend to line end | `lineEnd.extend` | `s-a-l` (kakoune: normal), `s-end` (kakoune: normal), `end` (helix: select) | `[".select.lineEnd", { shift: "extend", ... }]` | + | Jump to last character | `documentEnd.jump` | | `[".select.lineEnd", { count: MAX_INT, shift: "jump" , ... }]` | + | Extend to last character | `documentEnd.extend` | | `[".select.lineEnd", { count: MAX_INT, shift: "extend", ... }]` | select.lineEnd.extend: title: @@ -1816,6 +1853,7 @@ select.lineEnd.extend: qwerty: |- `s-a-l` (kakoune: normal) `s-end` (kakoune: normal) + `end` (helix: select) select.lineStart: title: @@ -1824,7 +1862,7 @@ select.lineStart: keys: qwerty: |- `a-h` (kakoune: normal) - `home` (kakoune: normal) + `home` (core: normal) doc: en: | @@ -1833,14 +1871,14 @@ select.lineStart: #### Variants - | Title | Identifier | Keybinding | Command | - | -------------------- | ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------ | - | Jump to line start | `lineStart.jump` | | `[".select.lineStart", { shift: "jump" , ... }]` | - | Extend to line start | `lineStart.extend` | `s-a-h` (kakoune: normal), `s-home` (kakoune: normal) | `[".select.lineStart", { shift: "extend", ... }]` | - | Jump to line start (skip blank) | `lineStart.skipBlank.jump` | | `[".select.lineStart", { skipBlank: true, shift: "jump" , ... }]` | - | Extend to line start (skip blank) | `lineStart.skipBlank.extend` | | `[".select.lineStart", { skipBlank: true, shift: "extend", ... }]` | - | Jump to first line | `firstLine.jump` | | `[".select.lineStart", { count: 0, shift: "jump" , ... }]` | - | Extend to first line | `firstLine.extend` | | `[".select.lineStart", { count: 0, shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | -------------------- | ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------ | + | Jump to line start | `lineStart.jump` | | `[".select.lineStart", { shift: "jump" , ... }]` | + | Extend to line start | `lineStart.extend` | `s-a-h` (kakoune: normal), `s-home` (kakoune: normal), `home` (helix: select) | `[".select.lineStart", { shift: "extend", ... }]` | + | Jump to line start (skip blank) | `lineStart.skipBlank.jump` | | `[".select.lineStart", { skipBlank: true, shift: "jump" , ... }]` | + | Extend to line start (skip blank) | `lineStart.skipBlank.extend` | | `[".select.lineStart", { skipBlank: true, shift: "extend", ... }]` | + | Jump to first line | `firstLine.jump` | | `[".select.lineStart", { count: 0, shift: "jump" , ... }]` | + | Extend to first line | `firstLine.extend` | | `[".select.lineStart", { count: 0, shift: "extend", ... }]` | select.lineStart.extend: title: @@ -1853,6 +1891,7 @@ select.lineStart.extend: qwerty: |- `s-a-h` (kakoune: normal) `s-home` (kakoune: normal) + `home` (helix: select) select.lineStart.jump: title: @@ -1936,7 +1975,7 @@ select.right.jump: keys: qwerty: |- - `l` (kakoune: normal) , `right` (kakoune: normal) + `l` (core: normal) , `right` (core: normal) select.to: title: @@ -1953,7 +1992,7 @@ select.to: | Title | Identifier | Keybinding | Command | | --------- | ----------- | -------------------------------------------- | ------------------------------------------ | - | Go to | `to.jump` | `g` (kakoune: normal) | `[".select.to", { shift: "jump" , ... }]` | + | Go to | `to.jump` | `g` (core: normal) | `[".select.to", { shift: "jump" , ... }]` | | Extend to | `to.extend` | `s-g` (kakoune: normal), `g` (helix: select) | `[".select.to", { shift: "extend", ... }]` | select.to.extend: @@ -1977,7 +2016,7 @@ select.to.jump: keys: qwerty: |- - `g` (kakoune: normal) + `g` (core: normal) select.up.extend: title: @@ -2001,7 +2040,7 @@ select.up.jump: keys: qwerty: |- - `k` (kakoune: normal) , `up` (kakoune: normal) + `k` (core: normal) , `up` (core: normal) select.vertically: title: @@ -2014,21 +2053,25 @@ select.vertically: #### Variants - | Title | Identifier | Keybinding | Command | + | Title | Identifier | Keybinding | Command | | ----------- | ------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | - | Jump down | `down.jump` | `j` (kakoune: normal) , `down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | + | Jump down | `down.jump` | `j` (core: normal) , `down` (core: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | | Extend down | `down.extend` | `s-j` (kakoune: normal), `s-down` (kakoune: normal), `j` (helix: select), `down` (helix: select) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | - | Jump up | `up.jump` | `k` (kakoune: normal) , `up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | + | Jump up | `up.jump` | `k` (core: normal) , `up` (core: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | | Extend up | `up.extend` | `s-k` (kakoune: normal), `s-up` (kakoune: normal) , `k` (helix: select), `up` (helix: select) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | The following keybindings are also defined: - | Keybinding | Command | - | ------------------------------------------------ | -------------------------------------------------------------------------- | - | `c-f` (kakoune: normal), `c-f` (kakoune: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | - | `c-d` (kakoune: normal), `c-d` (kakoune: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | - | `c-b` (kakoune: normal), `c-b` (kakoune: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | - | `c-u` (kakoune: normal), `c-u` (kakoune: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | + | Keybinding | Command | + | -------------------------------------------| ---------------------------------------------------------------------------- | + | `c-f` (core: normal), `c-f` (core: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | + | `c-d` (core: normal), `c-d` (core: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | + | `c-b` (core: normal), `c-b` (core: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | + | `c-u` (core: normal), `c-u` (core: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | + | `c-f` (helix: select) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | + | `c-d` (helix: select) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | + | `c-b` (helix: select) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | + | `c-u` (helix: select) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | selections.changeDirection: title: @@ -2036,7 +2079,8 @@ selections.changeDirection: keys: qwerty: |- - `a-;` (kakoune: normal) + `a-;` (core: normal) + `a-;` (helix: select) doc: en: | @@ -2076,7 +2120,8 @@ selections.clear.main: keys: qwerty: |- - `a-,` (kakoune: normal) + `a-,` (core: normal) + `a-,` (helix: select) selections.clear.secondary: title: @@ -2087,7 +2132,8 @@ selections.clear.secondary: keys: qwerty: |- - `,` (kakoune: normal) + `,` (core: normal) + `,` (helix: select) selections.copy: title: @@ -2126,6 +2172,8 @@ selections.expandToLines: keys: qwerty: |- `x` (kakoune: normal) + `s-x` (helix: normal) + `s-x` (helix: select) doc: en: |+ @@ -2160,21 +2208,21 @@ selections.filter: keys: qwerty: |- - `$` (kakoune: normal) + `$` (core: normal) + `$` (helix: select) doc: en: | Filter selections. - #### Variants - | Title | Identifier | Keybinding | Commands | - | -------------------------- | ----------------------- | --------------------------| ------------------------------------------------------------------------ | - | Keep matching selections | `filter.regexp` | `a-k` (kakoune: normal) | `[".selections.filter", { defaultExpression: "/" , ... }]` | - | Clear matching selections | `filter.regexp.inverse` | `s-a-k` (kakoune: normal) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | - | Clear secondary selections | `clear.secondary` | `,` (kakoune: normal) | `[".selections.filter", { expression: "i === count" , ... }]` | - | Clear main selections | `clear.main` | `a-,` (kakoune: normal) | `[".selections.filter", { expression: "i !== count" , ... }]` | + | Title | Identifier | Keybinding | Commands | + | -------------------------- | ----------------------- | ----------------------------------------------- | ------------------------------------------------------------------------ | + | Keep matching selections | `filter.regexp` | `a-k` (core: normal), `a-k` (helix: select) | `[".selections.filter", { defaultExpression: "/" , ... }]` | + | Clear matching selections | `filter.regexp.inverse` | `s-a-k` (core: normal), `s-a-k` (helix: select) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | + | Clear secondary selections | `clear.secondary` | `,` (core: normal), `,` (helix: select) | `[".selections.filter", { expression: "i === count" , ... }]` | + | Clear main selections | `clear.main` | `a-,` (core: normal), `a-,` (helix: select) | `[".selections.filter", { expression: "i !== count" , ... }]` | selections.filter.regexp: title: @@ -2185,18 +2233,20 @@ selections.filter.regexp: keys: qwerty: |- - `a-k` (kakoune: normal) + `a-k` (core: normal) + `a-k` (helix: select) selections.filter.regexp.inverse: title: en: Clear matching selections - commands: |- - [".selections.filter", { defaultExpression: "/", inverse: true, $exclude: [] }] - keys: qwerty: |- - `s-a-k` (kakoune: normal) + `s-a-k` (core: normal) + `s-a-k` (helix: select) + + commands: |- + [".selections.filter", { defaultExpression: "/", inverse: true, $exclude: [] }] selections.hideIndices: title: @@ -2245,7 +2295,8 @@ selections.pipe: keys: qwerty: |- - `a-|` (kakoune: normal) + `a-|` (core: normal) + `a-|` (helix: select) doc: en: | @@ -2254,16 +2305,15 @@ selections.pipe: Run the specified command or code with the contents of each selection, and save the result to a register. - See https://github.com/mawww/kakoune/blob/master/doc/pages/keys.asciidoc#changes-through-external-programs #### Additional commands - | Title | Identifier | Keybinding | Commands | - | ------------------- | -------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------- | - | Pipe and replace | `pipe.replace` | `|` (kakoune: normal) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", ... }]` | - | Pipe and append | `pipe.append` | `!` (kakoune: normal) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", where: "end" , shift: "select", ... }]` | - | Pipe and prepend | `pipe.prepend` | `a-!` (kakoune: normal) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", where: "start", shift: "select", ... }]` | + | Title | Identifier | Keybinding | Commands | + | ------------------- | -------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | + | Pipe and replace | `pipe.replace` | `|` (core: normal), `|` (helix: select) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", ... }]` | + | Pipe and append | `pipe.append` | `!` (core: normal), `!` (helix: select) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", where: "end" , shift: "select", ... }]` | + | Pipe and prepend | `pipe.prepend` | `a-!` (core: normal), `a-!` (helix: select) | `[".selections.pipe", { +expression,register }], [".edit.insert", { register: "|", where: "start", shift: "select", ... }]` | selections.pipe.append: title: @@ -2274,7 +2324,8 @@ selections.pipe.append: keys: qwerty: |- - `!` (kakoune: normal) + `!` (core: normal) + `!` (helix: select) selections.pipe.prepend: title: @@ -2285,7 +2336,8 @@ selections.pipe.prepend: keys: qwerty: |- - `a-!` (kakoune: normal) + `a-!` (core: normal) + `a-!` (helix: select) selections.pipe.replace: title: @@ -2296,7 +2348,8 @@ selections.pipe.replace: keys: qwerty: |- - `|` (kakoune: normal) + `|` (core: normal) + `|` (helix: select) selections.reduce: title: @@ -2304,7 +2357,8 @@ selections.reduce: keys: qwerty: |- - `;` (kakoune: normal) + `;` (core: normal) + `;` (helix: select) doc: en: | @@ -2400,16 +2454,27 @@ selections.rotate.contents: en: | Rotate selections clockwise (contents only). + The following command is also available: - | Title | Identifier | Command | - | --------------------------------------------------- | ------------------ | ---------------------------------------------------- | - | Rotate selections counter-clockwise (contents only) | `contents.reverse` | `[".selections.rotate.contents", { reverse: true }]` | + | Title | Identifier | Keybinding | Command | + | --------------------------------------------------- | ------------------ | -------------------------------------------- | ---------------------------------------------------- | + | Rotate selections counter-clockwise (contents only) | `contents.reverse` | `a-(` (helix: normal), `a-(` (helix: select) | `[".selections.rotate.contents", { reverse: true }]` | + + keys: + qwerty: |- + `a-)` (helix: normal) + `a-)` (helix: select) selections.rotate.contents.reverse: title: en: Rotate selections counter-clockwise (contents only) + keys: + qwerty: |- + `a-(` (helix: normal) + `a-(` (helix: select) + commands: |- [".selections.rotate.contents", { reverse: true }] @@ -2419,7 +2484,7 @@ selections.rotate.selections: keys: qwerty: |- - `)` (kakoune: normal) + `)` (core: normal) doc: en: | @@ -2428,9 +2493,9 @@ selections.rotate.selections: The following keybinding is also available: - | Title | Identifier | Keybinding | Command | - | ----------------------------------------------------- | -------------------- | --------------------- | ------------------------------------------------------ | - | Rotate selections counter-clockwise (selections only) | `selections.reverse` | `(` (kakoune: normal) | `[".selections.rotate.selections", { reverse: true }]` | + | Title | Identifier | Keybinding | Command | + | ----------------------------------------------------- | -------------------- | --------------------------------------- | ------------------------------------------------------ | + | Rotate selections counter-clockwise (selections only) | `selections.reverse` | `(` (core: normal), `(` (helix: select) | `[".selections.rotate.selections", { reverse: true }]` | selections.rotate.selections.reverse: title: @@ -2441,7 +2506,8 @@ selections.rotate.selections.reverse: keys: qwerty: |- - `(` (kakoune: normal) + `(` (core: normal) + `(` (helix: select) selections.save: title: @@ -2461,7 +2527,8 @@ selections.saveText: keys: qwerty: |- - `y` (kakoune: normal) + `y` (core: normal) + `y` (helix: select) doc: en: |+ @@ -2477,9 +2544,9 @@ selections.select: #### Variants - | Title | Identifier | Keybinding | Command | - | -------------- | --------------- | --------------------- | ------------------------------------------------------------------------------------------------- | - | Leap or select | `select.orLeap` | `s` (kakoune: normal) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | + | Title | Identifier | Keybinding | Command | + | -------------- | --------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------- | + | Leap or select | `select.orLeap` | `s` (core: normal), `s` (helix: select) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | selections.select.orLeap: title: @@ -2490,7 +2557,8 @@ selections.select.orLeap: keys: qwerty: |- - `s` (kakoune: normal) + `s` (core: normal) + `s` (helix: select) selections.showIndices: title: @@ -2514,7 +2582,8 @@ selections.split: keys: qwerty: |- - `s-s` (kakoune: normal) + `s-s` (core: normal) + `s-s` (helix: select) doc: en: |+ @@ -2530,9 +2599,9 @@ selections.splitLines: #### Variants - | Title | Identifier | Keybinding | Command | - | ----------------------- | ---------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------- | - | Leap or select backward | `splitLines.orLeap.backward` | `a-s` (kakoune: normal) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | + | Title | Identifier | Keybinding | Command | + | ----------------------- | ---------------------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | + | Leap or select backward | `splitLines.orLeap.backward` | `a-s` (core: normal), `a-s` (helix: select) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | selections.splitLines.orLeap.backward: title: @@ -2543,7 +2612,8 @@ selections.splitLines.orLeap.backward: keys: qwerty: |- - `a-s` (kakoune: normal) + `a-s` (core: normal) + `a-s` (helix: select) selections.toggleIndices: title: @@ -2571,7 +2641,8 @@ selections.trimLines: keys: qwerty: |- - `a-x` (kakoune: normal) + `a-x` (core: normal) + `a-x` (helix: select) doc: en: |+ @@ -2585,7 +2656,8 @@ selections.trimWhitespace: keys: qwerty: |- - `_` (kakoune: normal) + `_` (core: normal) + `_` (helix: select) doc: en: |+ @@ -2599,7 +2671,7 @@ selectRegister: keys: qwerty: |- - `"` (kakoune: normal) + `"` (core: normal) doc: en: |+ @@ -2676,6 +2748,8 @@ anonymous: keys: qwerty: |- `v` (kakoune: normal) + `z` (helix: normal) + `z` (helix: select) - title: en: Show view menu (locked) @@ -2686,38 +2760,68 @@ anonymous: keys: qwerty: |- `s-v` (kakoune: normal) + `s-z` (helix: normal) + `s-z` (helix: select) + + - commands: |- + [".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }] + + keys: + qwerty: |- + `c-u` (helix: select) - commands: |- [".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }] keys: qwerty: |- - `c-u` (kakoune: normal) - `c-u` (kakoune: insert) + `c-u` (core: normal) + `c-u` (core: insert) + + - commands: |- + [".select.vertically", { direction: -1, by: "page" , shift: "extend" }] + + keys: + qwerty: |- + `c-b` (helix: select) - commands: |- [".select.vertically", { direction: -1, by: "page" , shift: "jump" }] keys: qwerty: |- - `c-b` (kakoune: normal) - `c-b` (kakoune: insert) + `c-b` (core: normal) + `c-b` (core: insert) + + - commands: |- + [".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }] + + keys: + qwerty: |- + `c-d` (helix: select) - commands: |- [".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }] keys: qwerty: |- - `c-d` (kakoune: normal) - `c-d` (kakoune: insert) + `c-d` (core: normal) + `c-d` (core: insert) + + - commands: |- + [".select.vertically", { direction: 1, by: "page" , shift: "extend" }] + + keys: + qwerty: |- + `c-f` (helix: select) - commands: |- [".select.vertically", { direction: 1, by: "page" , shift: "jump" }] keys: qwerty: |- - `c-f` (kakoune: normal) - `c-f` (kakoune: insert) + `c-f` (core: normal) + `c-f` (core: insert) - commands: |- [".selections.restore.withCurrent", { reverse: true, $exclude: [] }] diff --git a/src/commands/README.md b/src/commands/README.md index 823a062c..ab733b6a 100644 --- a/src/commands/README.md +++ b/src/commands/README.md @@ -27,47 +27,47 @@ depending on the keyboard layout. The following layouts _will be_\* supported:
dev
dev.copyLastErrorMessage
dev.setSelectionBehavior
edit
edit.align
Shift+7
(editorTextFocus && dance.mode == 'normal'
)edit.case.swap
Alt+`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.mode == 'normal'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)edit.paste.after
edit.case.swap
Alt+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)Shift+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)Alt+D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)Shift+O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after
P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after.select
P
(editorTextFocus && dance.mode == 'normal'
)edit.paste.before
edit.paste.before
Shift+P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.before.select
Shift+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after
edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.pasteAll.before
edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)Shift+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.replaceCharacters
R
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)Alt+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.repeat.selection
history.recording.play
Q
(editorTextFocus && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.recording.play
Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.repeat
history.repeat.edit
.
(editorTextFocus && dance.mode == 'normal'
)NumPad_Decimal
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)keybindings
keybindings.setup
misc
cancel
Escape
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible
)Escape
(editorTextFocus && dance.mode == 'input'
)changeInput
selectRegister
Shift+'
(editorTextFocus && dance.mode == 'normal'
)updateCount
updateRegister
modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)Shift+A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)Shift+I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.insert
modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.mode == 'select'
)modes.set.select
modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.mode == 'insert'
)modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.select
V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)modes.set
modes.set.temporarily
search
search.next
N
(editorTextFocus && dance.mode == 'normal'
)search.search
/
(editorTextFocus && dance.mode == 'normal'
)NumPad_Divide
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.extend
Shift+/
(editorTextFocus && dance.mode == 'normal'
)search.next.add
Shift+N
(editorTextFocus && dance.mode == 'normal'
)search.previous
Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.extend
Shift+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.next.add
Shift+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.previous
Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.selection.smart
Shift+8
(editorTextFocus && dance.mode == 'normal'
)NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)search.selection
Shift+Alt+8
(editorTextFocus && dance.mode == 'normal'
)Alt+NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.leap
seek.object
seek.seek
T
(editorTextFocus && dance.mode == 'normal'
)seek.askObject
Alt+A
(editorTextFocus && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.mode == 'normal'
)T
(editorTextFocus && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.mode == 'select'
)seek.askObject
Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included
F
(editorTextFocus && dance.mode == 'normal'
)seek.included.backward
Alt+F
(editorTextFocus && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.mode == 'normal'
)F
(editorTextFocus && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.mode == 'select'
)seek.included.backward
Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.leap.backward
seek.syntax.child.experimental
seek.syntax.next.experimental
seek.syntax.parent.experimental
seek.syntax.previous.experimental
seek.word.backward
B
(editorTextFocus && dance.mode == 'normal'
)seek.word.extend
Shift+W
(editorTextFocus && dance.mode == 'normal'
)W
(editorTextFocus && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.mode == 'normal'
)B
(editorTextFocus && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.mode == 'select'
)seek.word.extend
Shift+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd
E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.mode == 'normal'
)E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.syntax.experimental
seek.word
W
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)select.firstVisibleLine
select.horizontally
select.lastLine
select.line.above
select.line.above.extend
select.line.below
select.line.below.extend
select.lineEnd
Alt+L
(editorTextFocus && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.line.below.extend
X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineEnd
Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.middleVisibleLine
select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.mode == 'normal'
)J
(editorTextFocus && dance.mode == 'select'
)Down
(editorTextFocus && dance.mode == 'select'
)select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Down
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.down.jump
J
(editorTextFocus && dance.mode == 'normal'
)Down
(editorTextFocus && dance.mode == 'normal'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.mode == 'normal'
)H
(editorTextFocus && dance.mode == 'select'
)Left
(editorTextFocus && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.mode == 'normal'
)L
(editorTextFocus && dance.mode == 'select'
)Right
(editorTextFocus && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.mode == 'normal'
)G
(editorTextFocus && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.mode == 'normal'
)K
(editorTextFocus && dance.mode == 'select'
)Up
(editorTextFocus && dance.mode == 'select'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)H
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Left
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)L
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Right
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)G
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Up
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.up.jump
K
(editorTextFocus && dance.mode == 'normal'
)Up
(editorTextFocus && dance.mode == 'normal'
)select.to
select.vertically
selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)Alt+;
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.changeOrder
selections.copy
Shift+C
(editorTextFocus && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.mode == 'normal'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.mode == 'normal'
)selections.copy
Shift+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)Shift+4
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.open
selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
)selections.restore
Z
(editorTextFocus && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
);
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.restore
Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)Y
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.select
selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)Alt+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
),
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)Shift+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)Shift+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)Alt+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.sort
selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)Shift+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.splitLines
selections.toggleIndices
Enter
(editorTextFocus && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents
selections.toggleIndices
Enter
(editorTextFocus && dance.behavior == 'dance' && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)Alt+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)Shift+-
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents
Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections
Shift+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents.reverse
selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)Shift+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)view
view.line
dev
dev.copyLastErrorMessage
dev.setSelectionBehavior
edit
edit.align
Shift+7
(editorTextFocus && dance.mode == 'normal'
)edit.case.swap
Alt+`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.mode == 'normal'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)edit.paste.after
edit.case.swap
Alt+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)Shift+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)Alt+D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)Shift+O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after
P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after.select
P
(editorTextFocus && dance.mode == 'normal'
)edit.paste.before
edit.paste.before
Shift+P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.before.select
Shift+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after
edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.pasteAll.before
edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)Shift+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.replaceCharacters
R
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)Alt+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.repeat.selection
history.recording.play
Q
(editorTextFocus && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.recording.play
Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.repeat
history.repeat.edit
.
(editorTextFocus && dance.mode == 'normal'
)NumPad_Decimal
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)keybindings
keybindings.setup
misc
cancel
Escape
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible
)Escape
(editorTextFocus && dance.mode == 'input'
)changeInput
selectRegister
Shift+'
(editorTextFocus && dance.mode == 'normal'
)updateCount
updateRegister
modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)Shift+A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)Shift+I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.insert
modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.mode == 'select'
)modes.set.select
modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.mode == 'insert'
)modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.select
V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)modes.set
modes.set.temporarily
search
search.next
N
(editorTextFocus && dance.mode == 'normal'
)search.search
/
(editorTextFocus && dance.mode == 'normal'
)NumPad_Divide
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.extend
Shift+/
(editorTextFocus && dance.mode == 'normal'
)search.next.add
Shift+N
(editorTextFocus && dance.mode == 'normal'
)search.previous
Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.extend
Shift+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.next.add
Shift+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.previous
Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.selection.smart
Shift+8
(editorTextFocus && dance.mode == 'normal'
)NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)search.selection
Shift+Alt+8
(editorTextFocus && dance.mode == 'normal'
)Alt+NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.leap
seek.object
seek.seek
T
(editorTextFocus && dance.mode == 'normal'
)seek.askObject
Alt+A
(editorTextFocus && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.mode == 'normal'
)T
(editorTextFocus && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.mode == 'select'
)seek.askObject
Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included
F
(editorTextFocus && dance.mode == 'normal'
)seek.included.backward
Alt+F
(editorTextFocus && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.mode == 'normal'
)F
(editorTextFocus && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.mode == 'select'
)seek.included.backward
Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.leap.backward
seek.syntax.child.experimental
seek.syntax.next.experimental
seek.syntax.parent.experimental
seek.syntax.previous.experimental
seek.word.backward
B
(editorTextFocus && dance.mode == 'normal'
)seek.word.extend
Shift+W
(editorTextFocus && dance.mode == 'normal'
)W
(editorTextFocus && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.mode == 'normal'
)B
(editorTextFocus && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.mode == 'select'
)seek.word.extend
Shift+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd
E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.mode == 'normal'
)E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.syntax.experimental
seek.word
W
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)select.firstVisibleLine
select.horizontally
select.lastLine
select.line.above
select.line.above.extend
select.line.below
select.line.below.extend
select.lineEnd
Alt+L
(editorTextFocus && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.line.below.extend
X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineEnd
Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.middleVisibleLine
select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.mode == 'normal'
)J
(editorTextFocus && dance.mode == 'select'
)Down
(editorTextFocus && dance.mode == 'select'
)select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Down
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.down.jump
J
(editorTextFocus && dance.mode == 'normal'
)Down
(editorTextFocus && dance.mode == 'normal'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.mode == 'normal'
)H
(editorTextFocus && dance.mode == 'select'
)Left
(editorTextFocus && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.mode == 'normal'
)L
(editorTextFocus && dance.mode == 'select'
)Right
(editorTextFocus && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.mode == 'normal'
)G
(editorTextFocus && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.mode == 'normal'
)K
(editorTextFocus && dance.mode == 'select'
)Up
(editorTextFocus && dance.mode == 'select'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)H
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Left
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)L
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Right
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)G
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Up
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.up.jump
K
(editorTextFocus && dance.mode == 'normal'
)Up
(editorTextFocus && dance.mode == 'normal'
)select.to
select.vertically
selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)Alt+;
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.changeOrder
selections.copy
Shift+C
(editorTextFocus && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.mode == 'normal'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.mode == 'normal'
)selections.copy
Shift+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)Shift+4
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.open
selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
)selections.restore
Z
(editorTextFocus && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
);
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.restore
Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)Y
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.select
selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)Alt+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
),
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)Shift+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)Shift+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)Alt+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.sort
selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)Shift+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.splitLines
selections.toggleIndices
Enter
(editorTextFocus && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents
selections.toggleIndices
Enter
(editorTextFocus && dance.behavior == 'dance' && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)Alt+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)Shift+-
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents
Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections
Shift+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents.reverse
selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)Shift+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)view
view.line
dev
dev.copyLastErrorMessage
dev.setSelectionBehavior
edit
edit.align
Shift+7
(editorTextFocus && dance.mode == 'normal'
)edit.case.swap
Alt+`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.mode == 'normal'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)edit.paste.after
edit.case.swap
Alt+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toLower
`
(editorTextFocus && dance.mode == 'normal'
)`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.case.toUpper
Shift+`
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Alt+`
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.copyIndentation
Shift+Alt+7
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent
Shift+Alt+,
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.deindent.withIncomplete
Shift+,
(editorTextFocus && dance.mode == 'normal'
)Shift+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete
Alt+D
(editorTextFocus && dance.mode == 'normal'
)Alt+D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.delete-insert
Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.above.insert
Shift+O
(editorTextFocus && dance.mode == 'normal'
)Shift+O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.below.insert
O
(editorTextFocus && dance.mode == 'normal'
)O
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after
P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.after.select
P
(editorTextFocus && dance.mode == 'normal'
)edit.paste.before
edit.paste.before
Shift+P
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.paste.before.select
Shift+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after
edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.after.select
Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.pasteAll.before
edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.mode == 'normal'
)edit.pasteAll.before.select
Shift+Alt+P
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.selectRegister-insert
Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Ctrl+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)edit.yank-delete
D
(editorTextFocus && dance.mode == 'normal'
)D
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-delete-insert
C
(editorTextFocus && dance.mode == 'normal'
)C
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.yank-replace
Shift+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.indent
Shift+.
(editorTextFocus && dance.mode == 'normal'
)Shift+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.indent.withEmpty
Shift+Alt+.
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.insert
Shift+Alt+R
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.join
Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.join.select
Shift+Alt+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)edit.newLine.above
Shift+Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.newLine.below
Alt+O
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)edit.replaceCharacters
R
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)history
history.repeat.seek
Alt+.
(editorTextFocus && dance.mode == 'normal'
)Alt+.
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.repeat.selection
history.recording.play
Q
(editorTextFocus && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.recording.play
Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.recording.start
Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && !dance.isRecording
)history.recording.stop
Escape
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)Shift+Q
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal' && dance.isRecording
)history.redo
Shift+U
(editorTextFocus && dance.mode == 'normal'
)Shift+U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.redo.selections
Shift+Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)history.repeat
history.repeat.edit
.
(editorTextFocus && dance.mode == 'normal'
)NumPad_Decimal
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.mode == 'normal'
)history.undo
U
(editorTextFocus && dance.mode == 'normal'
)U
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)history.undo.selections
Alt+U
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)keybindings
keybindings.setup
misc
cancel
Escape
(editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible
)Escape
(editorTextFocus && dance.mode == 'input'
)changeInput
selectRegister
Shift+'
(editorTextFocus && dance.mode == 'normal'
)updateCount
updateRegister
modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)modes
modes.insert.after
A
(editorTextFocus && dance.mode == 'normal'
)A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.before
I
(editorTextFocus && dance.mode == 'normal'
)I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineEnd
Shift+A
(editorTextFocus && dance.mode == 'normal'
)Shift+A
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.insert.lineStart
Shift+I
(editorTextFocus && dance.mode == 'normal'
)Shift+I
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.insert
modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.mode == 'select'
)modes.set.select
modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.mode == 'insert'
)modes.set.normal
Escape
(editorTextFocus && dance.mode == 'insert'
)Escape
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)modes.set.select
V
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)modes.set.temporarily.insert
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)modes.set.temporarily.normal
Ctrl+V
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)modes.set
modes.set.temporarily
search
search.next
N
(editorTextFocus && dance.mode == 'normal'
)search.search
/
(editorTextFocus && dance.mode == 'normal'
)NumPad_Divide
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.mode == 'normal'
)search.extend
Shift+/
(editorTextFocus && dance.mode == 'normal'
)search.next.add
Shift+N
(editorTextFocus && dance.mode == 'normal'
)search.previous
Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.mode == 'normal'
)search.backward
Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.backward.extend
Shift+Alt+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.extend
Shift+/
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)/
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.next.add
Shift+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.previous
Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)search.previous.add
Shift+Alt+N
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+N
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)search.selection.smart
Shift+8
(editorTextFocus && dance.mode == 'normal'
)NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)search.selection
Shift+Alt+8
(editorTextFocus && dance.mode == 'normal'
)Alt+NumPad_Multiply
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.mode == 'normal'
)seek
seek.enclosing
M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.leap
seek.object
seek.seek
T
(editorTextFocus && dance.mode == 'normal'
)seek.askObject
Alt+A
(editorTextFocus && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.mode == 'normal'
)T
(editorTextFocus && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.mode == 'select'
)seek.askObject
Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+A
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.end
]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.end.extend
Shift+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner
Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Alt+I
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'insert'
)seek.askObject.inner.end
Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.end.extend
Shift+Alt+]
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start
Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.inner.start.extend
Shift+Alt+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start
[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.askObject.start.extend
Shift+[
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.backward
Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.enclosing.backward
Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend
Shift+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.enclosing.extend.backward
Shift+Alt+M
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)seek.extend
Shift+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.extend.backward
Shift+Alt+T
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+T
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included
F
(editorTextFocus && dance.mode == 'normal'
)seek.included.backward
Alt+F
(editorTextFocus && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.mode == 'normal'
)F
(editorTextFocus && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.mode == 'select'
)seek.included.backward
Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.included.extend
Shift+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.included.extend.backward
Shift+Alt+F
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+F
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.leap.backward
seek.syntax.child.experimental
seek.syntax.next.experimental
seek.syntax.parent.experimental
seek.syntax.previous.experimental
seek.word.backward
B
(editorTextFocus && dance.mode == 'normal'
)seek.word.extend
Shift+W
(editorTextFocus && dance.mode == 'normal'
)W
(editorTextFocus && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.mode == 'normal'
)B
(editorTextFocus && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.mode == 'select'
)seek.word.extend
Shift+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.extend.backward
Shift+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws
Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.backward
Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.word.ws.extend
Shift+Alt+W
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+W
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.word.ws.extend.backward
Shift+Alt+B
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+B
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd
E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.mode == 'normal'
)E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.mode == 'select'
)seek.wordEnd.extend
Shift+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.wordEnd.ws
Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)seek.wordEnd.ws.extend
Shift+Alt+E
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+E
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)seek.syntax.experimental
seek.word
W
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.mode == 'normal'
)select
select.buffer
Shift+5
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)select.firstVisibleLine
select.horizontally
select.lastLine
select.line.above
select.line.above.extend
select.line.below
select.line.below.extend
select.lineEnd
Alt+L
(editorTextFocus && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.line.below.extend
X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineEnd
Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart
Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.mode == 'normal'
)select.middleVisibleLine
select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.mode == 'normal'
)J
(editorTextFocus && dance.mode == 'select'
)Down
(editorTextFocus && dance.mode == 'select'
)select.documentEnd.extend
select.documentEnd.jump
select.down.extend
Shift+J
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Down
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)J
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Down
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.down.jump
J
(editorTextFocus && dance.mode == 'normal'
)Down
(editorTextFocus && dance.mode == 'normal'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.mode == 'normal'
)H
(editorTextFocus && dance.mode == 'select'
)Left
(editorTextFocus && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.mode == 'normal'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.mode == 'normal'
)L
(editorTextFocus && dance.mode == 'select'
)Right
(editorTextFocus && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.mode == 'normal'
)G
(editorTextFocus && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.mode == 'normal'
)K
(editorTextFocus && dance.mode == 'select'
)Up
(editorTextFocus && dance.mode == 'select'
)select.firstLine.extend
select.firstLine.jump
select.firstVisibleLine.extend
select.firstVisibleLine.jump
select.lastLine.extend
select.lastLine.jump
select.lastVisibleLine.extend
select.lastVisibleLine.jump
select.left.extend
Shift+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Left
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)H
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Left
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.left.jump
H
(editorTextFocus && dance.mode == 'normal'
)Left
(editorTextFocus && dance.mode == 'normal'
)select.lineEnd.extend
Shift+Alt+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+End
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)End
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.extend
Shift+Alt+H
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Home
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Home
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.lineStart.jump
select.lineStart.skipBlank.extend
select.lineStart.skipBlank.jump
select.middleVisibleLine.extend
select.middleVisibleLine.jump
select.right.extend
Shift+L
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Right
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)L
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Right
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.right.jump
L
(editorTextFocus && dance.mode == 'normal'
)Right
(editorTextFocus && dance.mode == 'normal'
)select.to.extend
Shift+G
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)G
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.to.jump
G
(editorTextFocus && dance.mode == 'normal'
)select.up.extend
Shift+K
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+Up
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)Up
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)select.up.jump
K
(editorTextFocus && dance.mode == 'normal'
)Up
(editorTextFocus && dance.mode == 'normal'
)select.to
select.vertically
selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections
selections.changeDirection
Alt+;
(editorTextFocus && dance.mode == 'normal'
)Alt+;
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.changeOrder
selections.copy
Shift+C
(editorTextFocus && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.mode == 'normal'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.mode == 'normal'
)selections.copy
Shift+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.expandToLines
X
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter
Shift+4
(editorTextFocus && dance.mode == 'normal'
)Shift+4
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.merge
Shift+Alt+-
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.open
selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
)selections.restore
Z
(editorTextFocus && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)selections.pipe
Shift+Alt+\
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce
;
(editorTextFocus && dance.mode == 'normal'
);
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.restore
Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.restore.withCurrent
Alt+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.save
Shift+Z
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.saveText
Y
(editorTextFocus && dance.mode == 'normal'
)Y
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.select
selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)selections.clear.main
Alt+,
(editorTextFocus && dance.mode == 'normal'
)Alt+,
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.clear.secondary
,
(editorTextFocus && dance.mode == 'normal'
),
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.copy.above
Shift+Alt+C
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.faceBackward
selections.faceForward
Shift+Alt+;
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.filter.regexp
Alt+K
(editorTextFocus && dance.mode == 'normal'
)Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.filter.regexp.inverse
Shift+Alt+K
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+K
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.hideIndices
selections.orderAscending
selections.orderDescending
selections.pipe.append
Shift+1
(editorTextFocus && dance.mode == 'normal'
)Shift+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.prepend
Shift+Alt+1
(editorTextFocus && dance.mode == 'normal'
)Shift+Alt+1
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.pipe.replace
Shift+\
(editorTextFocus && dance.mode == 'normal'
)Shift+\
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.reduce.edges
Shift+Alt+S
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.select.orLeap
S
(editorTextFocus && dance.mode == 'normal'
)S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.showIndices
selections.splitLines.orLeap.backward
Alt+S
(editorTextFocus && dance.mode == 'normal'
)Alt+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.sort
selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)selections.split
Shift+S
(editorTextFocus && dance.mode == 'normal'
)Shift+S
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.splitLines
selections.toggleIndices
Enter
(editorTextFocus && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents
selections.toggleIndices
Enter
(editorTextFocus && dance.behavior == 'dance' && dance.mode == 'normal'
)selections.trimLines
Alt+X
(editorTextFocus && dance.mode == 'normal'
)Alt+X
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.trimWhitespace
Shift+-
(editorTextFocus && dance.mode == 'normal'
)Shift+-
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate
selections.rotate.both
Shift+Alt+0
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents
Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+0
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections
Shift+0
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.contents.reverse
selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)selections.rotate.both.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'kakoune' && dance.mode == 'normal'
)selections.rotate.contents.reverse
Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'normal'
)Shift+Alt+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)selections.rotate.selections.reverse
Shift+9
(editorTextFocus && dance.mode == 'normal'
)Shift+9
(editorTextFocus && dance.behavior == 'helix' && dance.mode == 'select'
)view
view.line