diff --git a/meta.ts b/meta.ts
index 5b0dfbbc..35516cbf 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..2b3fa1bf 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",
diff --git a/package.json b/package.json
index e705a67b..3be5ed4f 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,13 +4602,30 @@
}
},
{
- "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": []
+ }
},
{
"command": "dance.ignore",
- "key": "Shift+X",
+ "key": "Shift+D",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
@@ -4259,36 +4708,11 @@
"key": "Shift+NumPad_Subtract",
"when": "editorTextFocus && dance.mode == 'normal'"
},
- {
- "command": "dance.ignore",
- "key": "A",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "I",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "M",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "N",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "O",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "P",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Q",
@@ -4299,31 +4723,6 @@
"key": "R",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "S",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "V",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "X",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "Y",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "Z",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "0",
@@ -4374,11 +4773,6 @@
"key": "9",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+A",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+C",
@@ -4399,16 +4793,6 @@
"key": "Shift+H",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+I",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "Shift+J",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+K",
@@ -4424,21 +4808,6 @@
"key": "Shift+M",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+N",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "Shift+O",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": "Shift+P",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+Q",
@@ -4449,41 +4818,21 @@
"key": "Shift+R",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+S",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+V",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+X",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+Y",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+Z",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+0",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+1",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+2",
@@ -4494,11 +4843,6 @@
"key": "Shift+3",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+4",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+5",
@@ -4519,16 +4863,6 @@
"key": "Shift+8",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+9",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
- {
- "command": "dance.ignore",
- "key": ",",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "'",
@@ -4564,21 +4898,11 @@
"key": "NumPad_Subtract",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+,",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+'",
"when": "editorTextFocus && dance.mode == 'select'"
},
- {
- "command": "dance.ignore",
- "key": "Shift+-",
- "when": "editorTextFocus && dance.mode == 'select'"
- },
{
"command": "dance.ignore",
"key": "Shift+=",
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..c1fcffca 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 | Copies the last encountered error message | |
dev.setSelectionBehavior | Set the selection behavior of the specified mode | |
edit | edit.align | Align selections | Shift+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.swap | Swap case | Alt+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toLower | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toUpper | Transform to upper case | Shift+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.copyIndentation | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.after | Paste after | |
+edit.case.swap | Swap case | 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 | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' )` (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.case.toUpper | Transform to upper case | 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 | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' )Shift+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' )Alt+D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' )Shift+O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' )O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.paste.after | Paste after | P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.after.select | Paste after and select | P (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.before | Paste before | |
+edit.paste.before | Paste before | Shift+P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.before.select | Paste before and select | Shift+P (editorTextFocus && dance.mode == 'normal' ) |
edit.pasteAll.after | Paste all after | |
-edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.pasteAll.before | Paste all before | |
-edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.mode == 'normal' ) |
-edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.mode == 'insert' ) |
-edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' )Shift+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+Alt+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.replaceCharacters | Replace characters | R (editorTextFocus && dance.mode == 'normal' ) |
-history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' ) |
+history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' )Alt+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
history.repeat.selection | Repeat last selection change | |
-history.recording.play | Replay recording | Q (editorTextFocus && dance.mode == 'normal' ) |
-history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording ) |
-history.recording.stop | Stop recording | Escape (editorTextFocus && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording ) |
-history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.mode == 'select' ) |
-history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.recording.play | Replay recording | Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && !dance.isRecording ) |
+history.recording.stop | Stop recording | Escape (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording ) |
+history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
history.repeat | Repeat last change | |
history.repeat.edit | Repeat last edit without a command | . (editorTextFocus && dance.mode == 'normal' )NumPad_Decimal (editorTextFocus && dance.mode == 'normal' ) |
-history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.mode == 'select' ) |
-history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
keybindings | keybindings.setup | Set up Dance keybindings | |
misc | cancel | Cancel Dance operation | Escape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible )Escape (editorTextFocus && dance.mode == 'input' ) |
changeInput | Change current input | |
@@ -79,70 +79,70 @@ selections are empty |
selectRegister | Select register for next command | Shift+' (editorTextFocus && dance.mode == 'normal' ) |
updateCount | Update Dance count | |
updateRegister | Update the contents of a register | |
-modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' ) |
+modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' )A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' )I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' )Shift+A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' )Shift+I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
modes.set.insert | Set mode to Insert | |
-modes.set.normal | Set mode to Normal | Escape (editorTextFocus && dance.mode == 'insert' )Escape (editorTextFocus && dance.mode == 'select' ) |
-modes.set.select | Set mode to Select | |
-modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.mode == 'normal' ) |
-modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.mode == 'insert' ) |
+modes.set.normal | Set mode to 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 | Set mode to Select | V (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
modes.set | Set Dance mode | |
modes.set.temporarily | Set Dance mode temporarily | |
search | search.next | Select next match | N (editorTextFocus && dance.mode == 'normal' ) |
search.search | Search | / (editorTextFocus && dance.mode == 'normal' )NumPad_Divide (editorTextFocus && dance.mode == 'normal' ) |
-search.backward | Search backward | Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.next.add | Add next match | Shift+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous | Select previous match | Alt+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.mode == 'normal' ) |
+search.backward | Search backward | Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.next.add | Add next match | Shift+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.previous | Select previous match | Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
search.selection.smart | Search current selection (smart) | Shift+8 (editorTextFocus && dance.mode == 'normal' )NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
search.selection | Search current selection | Shift+Alt+8 (editorTextFocus && dance.mode == 'normal' )Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
-seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.mode == 'normal' ) |
+seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
seek.leap | Leap forward | |
seek.object | Select object | |
seek.seek | Select to character (excluded) | T (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.mode == 'normal' )T (editorTextFocus && dance.mode == 'select' ) |
-seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.mode == 'select' ) |
+seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.included | Select to character (included) | F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.mode == 'normal' )F (editorTextFocus && dance.mode == 'select' ) |
-seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.mode == 'select' ) |
+seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.leap.backward | Leap backward | |
seek.syntax.child.experimental | Select child syntax object | |
seek.syntax.next.experimental | Select next syntax object | |
seek.syntax.parent.experimental | Select parent syntax object | |
seek.syntax.previous.experimental | Select previous syntax object | |
seek.word.backward | Select to previous word start | B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.mode == 'normal' )W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.mode == 'normal' )B (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.mode == 'select' ) |
+seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.wordEnd | Select to next word end | E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.mode == 'normal' )E (editorTextFocus && dance.mode == 'select' ) |
-seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.mode == 'select' ) |
+seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.syntax.experimental | Select syntax object | |
seek.word | Select to next word start | W (editorTextFocus && dance.mode == 'normal' ) |
-select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.mode == 'normal' ) |
+select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
select.firstVisibleLine | Select to first visible line | |
select.horizontally | Select horizontally | |
select.lastLine | Select to last line | |
@@ -150,82 +150,82 @@ selections are empty |
select.line.above | Select line above | |
select.line.above.extend | Extend to line above | |
select.line.below | Select line below | |
-select.line.below.extend | Extend to line below | |
-select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
+select.line.below.extend | Extend to line below | X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
+select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
select.middleVisibleLine | Select to middle visible line | |
-select.documentEnd.extend | Extend to last character | |
-select.documentEnd.jump | Jump to last character | |
-select.down.extend | Extend down | 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 | Extend to last character | |
+select.documentEnd.jump | Jump to last character | |
+select.down.extend | Extend down | 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 | Jump down | J (editorTextFocus && dance.mode == 'normal' )Down (editorTextFocus && dance.mode == 'normal' ) |
-select.firstLine.extend | Extend to first line | |
-select.firstLine.jump | Jump to first line | |
-select.firstVisibleLine.extend | Extend to first visible line | |
-select.firstVisibleLine.jump | Jump to first visible line | |
-select.lastLine.extend | Extend to last line | |
-select.lastLine.jump | Jump to last line | |
-select.lastVisibleLine.extend | Extend to last visible line | |
-select.lastVisibleLine.jump | Jump to last visible line | |
-select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
-select.lineEnd.extend | Extend to line end | Shift+Alt+L (editorTextFocus && dance.mode == 'normal' )Shift+End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.extend | Extend to line start | Shift+Alt+H (editorTextFocus && dance.mode == 'normal' )Shift+Home (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.jump | Jump to line start | |
-select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
-select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
-select.middleVisibleLine.extend | Extend to middle visible line | |
-select.middleVisibleLine.jump | Jump to middle visible line | |
-select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
-select.to.extend | Extend to | Shift+G (editorTextFocus && dance.mode == 'normal' )G (editorTextFocus && dance.mode == 'select' ) |
-select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
-select.up.extend | Extend up | 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 | Extend to first line | |
+select.firstLine.jump | Jump to first line | |
+select.firstVisibleLine.extend | Extend to first visible line | |
+select.firstVisibleLine.jump | Jump to first visible line | |
+select.lastLine.extend | Extend to last line | |
+select.lastLine.jump | Jump to last line | |
+select.lastVisibleLine.extend | Extend to last visible line | |
+select.lastVisibleLine.jump | Jump to last visible line | |
+select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
+select.lineEnd.extend | Extend to line end | 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 | Extend to line start | 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 | Jump to line start | |
+select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
+select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
+select.middleVisibleLine.extend | Extend to middle visible line | |
+select.middleVisibleLine.jump | Jump to middle visible line | |
+select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
+select.to.extend | Extend to | Shift+G (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )G (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
+select.up.extend | Extend up | 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 | Jump up | K (editorTextFocus && dance.mode == 'normal' )Up (editorTextFocus && dance.mode == 'normal' ) |
select.to | Select to | |
select.vertically | Select vertically | |
-selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' ) |
+selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' )Alt+; (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.changeOrder | Reverse selections | |
-selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.expandToLines | Expand to lines | X (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' ) |
-selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.mode == 'normal' ) |
+selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.expandToLines | Expand to lines | 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 | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' )Shift+4 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
selections.open | Open selected file | |
-selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore | Restore selections | Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.save | Save selections | Shift+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' ) |
+selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' )Shift+Alt+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ); (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.restore | Restore selections | Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.save | Save selections | Shift+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' )Y (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.select | Select within selections | |
-selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ) |
-selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.faceBackward | Backward selections | |
-selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.hideIndices | Hide selection indices | |
-selections.orderAscending | Order selections ascending | |
-selections.orderDescending | Order selections descending | |
-selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.mode == 'normal' ) |
-selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' ) |
-selections.showIndices | Show selection indices | |
-selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' )Alt+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ), (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.faceBackward | Backward selections | |
+selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' )Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' )Shift+Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.hideIndices | Hide selection indices | |
+selections.orderAscending | Order selections ascending | |
+selections.orderDescending | Order selections descending | |
+selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' )Shift+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' )Shift+Alt+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' )Shift+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' )S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.showIndices | Show selection indices | |
+selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' )Alt+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.sort | Sort selections | |
-selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' )Shift+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.splitLines | Split selections at line boundaries | |
-selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents | Rotate selections clockwise (contents only) | |
+selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.behavior=='dance' && dance.mode == 'normal' ) |
+selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' )Alt+X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' )Shift+- (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents | Rotate selections clockwise (contents only) | Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.rotate.selections | Rotate selections clockwise (selections only) | Shift+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | |
-selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' ) |
+selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' )Shift+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
view | view.line | Reveals a position based on the main cursor | |
@@ -283,18 +283,18 @@ Specify `all` to paste all contents next to each selection.
| 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", ... }]` |
This command:
@@ -319,7 +319,8 @@ Join lines.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `a-j` (kakoune: normal)
+Default keybinding: `a-j` (core: normal)
+`s-j` (helix: select)
@@ -331,7 +332,8 @@ Join lines and select inserted separators.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `s-a-j` (kakoune: normal)
+Default keybinding: `s-a-j` (core: normal)
+`s-a-j` (helix: select)
@@ -343,7 +345,8 @@ Indent selected lines.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `>` (kakoune: normal)
+Default keybinding: `>` (core: normal)
+`>` (helix: select)
@@ -379,7 +382,8 @@ Deindent selected lines (including incomplete indent).
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `<` (kakoune: normal)
+Default keybinding: `<` (core: normal)
+`<` (helix: select)
@@ -389,7 +393,8 @@ Transform to lower case.
-Default keybinding: `` ` `` (kakoune: normal)
+Default keybinding: `` ` `` (core: normal)
+`` ` `` (helix: select)
@@ -400,6 +405,8 @@ Transform to upper case.
Default keybinding: `` s-` `` (kakoune: normal)
+`` a-` `` (helix: normal)
+`` a-` `` (helix: select)
@@ -410,6 +417,8 @@ Swap case.
Default keybinding: `` a-` `` (kakoune: normal)
+`` s-` `` (helix: normal)
+`` s-` `` (helix: select)
@@ -422,7 +431,7 @@ This command:
- may be repeated with a given number of repetitions.
- takes an input `input` of type `string`.
-Default keybinding: `r` (kakoune: normal)
+Default keybinding: `r` (core: normal)
@@ -437,7 +446,7 @@ before the first character of each selection.
This command:
- takes an argument `fill` of type `string`.
-Default keybinding: `&` (kakoune: normal)
+Default keybinding: `&` (core: normal)
@@ -466,9 +475,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -488,9 +497,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -512,7 +521,7 @@ Undo.
This command:
- does not require an active text editor.
-Default keybinding: `u` (kakoune: normal)
+Default keybinding: `u` (core: normal)
`u` (helix: select)
@@ -525,7 +534,7 @@ Redo.
This command:
- does not require an active text editor.
-Default keybinding: `s-u` (kakoune: normal)
+Default keybinding: `s-u` (core: normal)
`s-u` (helix: select)
@@ -559,10 +568,10 @@ Default keybinding: `s-a-u` (kakoune: normal)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -578,8 +587,8 @@ Repeat last edit without a command.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `.` (kakoune: normal)
-`NumPad_Decimal` (kakoune: normal)
+Default keybinding: `.` (core: normal)
+`NumPad_Decimal` (core: normal)
@@ -791,7 +800,7 @@ current document.
This command:
- takes an input `register` of type `string | Register`.
-Default keybinding: `"` (kakoune: normal)
+Default keybinding: `"` (core: normal)
@@ -898,20 +907,20 @@ Set Dance mode.
#### 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, ... }]` |
This command:
@@ -946,11 +955,11 @@ Search for patterns and replace or add selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
@@ -959,8 +968,8 @@ This command:
- takes an argument `add` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `/` (kakoune: normal)
-`NumPad_Divide` (kakoune: normal)
+Default keybinding: `/` (core: normal)
+`NumPad_Divide` (core: normal)
@@ -969,16 +978,16 @@ Default keybinding: `/` (kakoune: normal)
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 }]` |
This command:
- accepts a register (by default, it uses `slash`).
- takes an argument `smart` of type `boolean`.
-Default keybinding: `a-*` (kakoune: normal)
-`a-NumPad_Multiply` (kakoune: normal)
+Default keybinding: `a-*` (core: normal)
+`a-NumPad_Multiply` (core: normal)
@@ -987,18 +996,18 @@ Default keybinding: `a-*` (kakoune: normal)
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, ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
- may be repeated with a given number of repetitions.
- takes an argument `add` of type `boolean`.
-Default keybinding: `n` (kakoune: normal)
+Default keybinding: `n` (core: normal)
## [`seek`](./seek.ts)
@@ -1016,11 +1025,11 @@ Select to character (excluded).
| 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, ... }]` |
This command:
@@ -1028,7 +1037,7 @@ This command:
- takes an argument `include` of type `boolean`.
- takes an input `input` of type `string`.
-Default keybinding: `t` (kakoune: normal)
+Default keybinding: `t` (core: normal)
@@ -1065,15 +1074,15 @@ Select the word and following whitespaces on the right of the end of each select
| 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" , ... }]` |
This command:
@@ -1081,7 +1090,7 @@ This command:
- takes an argument `stopAtEnd` of type `boolean`.
- takes an argument `ws` of type `boolean`.
-Default keybinding: `w` (kakoune: normal)
+Default keybinding: `w` (core: normal)
@@ -1174,28 +1183,32 @@ Default keybinding: `%` (kakoune: normal)
-### [`select.vertically`](./select.ts#L31-L64)
+### [`select.vertically`](./select.ts#L31-L68)
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" }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1204,7 +1217,7 @@ This command:
-### [`select.horizontally`](./select.ts#L217-L239)
+### [`select.horizontally`](./select.ts#L221-L243)
Select horizontally.
@@ -1213,9 +1226,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", ... }]` |
This command:
@@ -1224,7 +1237,7 @@ This command:
-### [`select.to`](./select.ts#L286-L304)
+### [`select.to`](./select.ts#L290-L308)
Select to.
@@ -1235,7 +1248,7 @@ line. If no count is specified, this command will shift open the `goto` menu.
| 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", ... }]` |
This command:
@@ -1244,7 +1257,7 @@ This command:
-### [`select.line.below`](./select.ts#L314-L317)
+### [`select.line.below`](./select.ts#L318-L321)
Select line below.
@@ -1253,16 +1266,19 @@ This command:
-### [`select.line.below.extend`](./select.ts#L342-L345)
+### [`select.line.below.extend`](./select.ts#L346-L350)
Extend to line below.
This command:
- may be repeated with a given number of repetitions.
+Default keybinding: `x` (helix: normal)
+`x` (helix: select)
+
-### [`select.line.above`](./select.ts#L372-L375)
+### [`select.line.above`](./select.ts#L377-L380)
Select line above.
@@ -1271,7 +1287,7 @@ This command:
-### [`select.line.above.extend`](./select.ts#L399-L402)
+### [`select.line.above.extend`](./select.ts#L404-L407)
Extend to line above.
@@ -1280,32 +1296,32 @@ This command:
-### [`select.lineStart`](./select.ts#L448-L470)
+### [`select.lineStart`](./select.ts#L453-L475)
Select to line start.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `skipBlank` of type `boolean`.
Default keybinding: `a-h` (kakoune: normal)
-`home` (kakoune: normal)
+`home` (core: normal)
-### [`select.lineEnd`](./select.ts#L495-L517)
+### [`select.lineEnd`](./select.ts#L500-L522)
Select to line end.
@@ -1313,22 +1329,22 @@ Select to line end.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `lineBreak` of type `boolean`.
Default keybinding: `a-l` (kakoune: normal)
-`end` (kakoune: normal)
+`end` (core: normal)
-### [`select.lastLine`](./select.ts#L545-L555)
+### [`select.lastLine`](./select.ts#L550-L560)
Select to last line.
@@ -1341,7 +1357,7 @@ Select to last line.
-### [`select.firstVisibleLine`](./select.ts#L566-L576)
+### [`select.firstVisibleLine`](./select.ts#L571-L581)
Select to first visible line.
@@ -1354,7 +1370,7 @@ Select to first visible line.
-### [`select.middleVisibleLine`](./select.ts#L583-L593)
+### [`select.middleVisibleLine`](./select.ts#L588-L598)
Select to middle visible line.
@@ -1367,7 +1383,7 @@ Select to middle visible line.
-### [`select.lastVisibleLine`](./select.ts#L600-L610)
+### [`select.lastVisibleLine`](./select.ts#L605-L615)
Select to last visible line.
@@ -1392,7 +1408,8 @@ Copy selections text.
This command:
- accepts a register (by default, it uses `dquote`).
-Default keybinding: `y` (kakoune: normal)
+Default keybinding: `y` (core: normal)
+`y` (helix: select)
@@ -1445,45 +1462,44 @@ Default keybinding: `a-z` (kakoune: normal)
-### [`selections.pipe`](./selections.ts#L241-L263)
+### [`selections.pipe`](./selections.ts#L241-L262)
Pipe selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `pipe`).
- takes an input `expression` of type `string`.
-Default keybinding: `a-|` (kakoune: normal)
+Default keybinding: `a-|` (core: normal)
+`a-|` (helix: select)
-### [`selections.filter`](./selections.ts#L291-L313)
+### [`selections.filter`](./selections.ts#L290-L311)
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" , ... }]` |
This command:
- accepts an argument of type `{ expression?: string }`.
@@ -1492,19 +1508,20 @@ This command:
- takes an argument `interactive` of type `boolean`.
- takes an argument `inverse` of type `boolean`.
-Default keybinding: `$` (kakoune: normal)
+Default keybinding: `$` (core: normal)
+`$` (helix: select)
-### [`selections.select`](./selections.ts#L346-L360)
+### [`selections.select`](./selections.ts#L344-L358)
Select within selections.
#### 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", { ... }]] }]` |
This command:
- accepts an argument of type `{ re?: string | RegExp }`.
@@ -1512,7 +1529,7 @@ This command:
-### [`selections.split`](./selections.ts#L379-L390)
+### [`selections.split`](./selections.ts#L377-L388)
Split selections.
@@ -1522,19 +1539,20 @@ This command:
- takes an argument `excludeEmpty` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `s-s` (kakoune: normal)
+Default keybinding: `s-s` (core: normal)
+`s-s` (helix: select)
-### [`selections.splitLines`](./selections.ts#L415-L431)
+### [`selections.splitLines`](./selections.ts#L413-L429)
Split selections at line boundaries.
#### 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", { ... }]] }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1542,7 +1560,7 @@ This command:
-### [`selections.expandToLines`](./selections.ts#L474-L481)
+### [`selections.expandToLines`](./selections.ts#L472-L479)
Expand to lines.
@@ -1551,10 +1569,12 @@ Expand selections to contain full lines (including end-of-line characters).
Default keybinding: `x` (kakoune: normal)
+`s-x` (helix: normal)
+`s-x` (helix: select)
-### [`selections.trimLines`](./selections.ts#L508-L515)
+### [`selections.trimLines`](./selections.ts#L506-L513)
Trim lines.
@@ -1562,11 +1582,12 @@ Trim selections to only contain full lines (from start to line break).
-Default keybinding: `a-x` (kakoune: normal)
+Default keybinding: `a-x` (core: normal)
+`a-x` (helix: select)
-### [`selections.trimWhitespace`](./selections.ts#L540-L547)
+### [`selections.trimWhitespace`](./selections.ts#L538-L545)
Trim whitespace.
@@ -1574,11 +1595,12 @@ Trim whitespace at beginning and end of selections.
-Default keybinding: `_` (kakoune: normal)
+Default keybinding: `_` (core: normal)
+`_` (helix: select)
-### [`selections.reduce`](./selections.ts#L566-L585)
+### [`selections.reduce`](./selections.ts#L564-L583)
Reduce selections to their cursor.
@@ -1594,11 +1616,12 @@ This command:
- takes an argument `empty` of type `boolean`.
- takes an argument `where` of type `"active" | "anchor" | "start" | "end" | "both"`.
-Default keybinding: `;` (kakoune: normal)
+Default keybinding: `;` (core: normal)
+`;` (helix: select)
-### [`selections.changeDirection`](./selections.ts#L647-L662)
+### [`selections.changeDirection`](./selections.ts#L645-L660)
Change direction of selections.
@@ -1612,11 +1635,12 @@ Change direction of selections.
| Backward selections | `faceBackward` | | `[".selections.changeDirection", { direction: -1 }]` |
-Default keybinding: `a-;` (kakoune: normal)
+Default keybinding: `a-;` (core: normal)
+`a-;` (helix: select)
-### [`selections.changeOrder`](./selections.ts#L687-L701)
+### [`selections.changeOrder`](./selections.ts#L685-L699)
Reverse selections.
@@ -1630,7 +1654,7 @@ Reverse selections.
-### [`selections.sort`](./selections.ts#L714-L726)
+### [`selections.sort`](./selections.ts#L712-L724)
Sort selections.
@@ -1641,7 +1665,7 @@ This command:
-### [`selections.copy`](./selections.ts#L799-L817)
+### [`selections.copy`](./selections.ts#L797-L815)
Copy selections below.
@@ -1659,7 +1683,7 @@ Default keybinding: `s-c` (kakoune: normal)
-### [`selections.merge`](./selections.ts#L851-L856)
+### [`selections.merge`](./selections.ts#L849-L854)
Merge contiguous selections.
@@ -1669,13 +1693,13 @@ Default keybinding: `a-_` (kakoune: normal)
-### [`selections.open`](./selections.ts#L860-L863)
+### [`selections.open`](./selections.ts#L858-L861)
Open selected file.
-### [`selections.toggleIndices`](./selections.ts#L876-L893)
+### [`selections.toggleIndices`](./selections.ts#L874-L891)
Toggle selection indices.
@@ -1718,38 +1742,42 @@ Default keybinding: `a-)` (kakoune: normal)
-### [`selections.rotate.contents`](./selections.rotate.ts#L28-L37)
+### [`selections.rotate.contents`](./selections.rotate.ts#L28-L39)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
+Default keybinding: `a-)` (helix: normal)
+`a-)` (helix: select)
+
-### [`selections.rotate.selections`](./selections.rotate.ts#L45-L56)
+### [`selections.rotate.selections`](./selections.rotate.ts#L47-L58)
Rotate selections clockwise (selections only).
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
-Default keybinding: `)` (kakoune: normal)
+Default keybinding: `)` (core: normal)
## [`view`](./view.ts)
@@ -1757,10 +1785,10 @@ Moving the editor view.
#### Predefined keybindings
-| Title | Keybinding | Command |
-| ----------------------- | ----------------------- | ---------------------------------------------------- |
-| Show view menu | `v` (kakoune: normal) | `[".openMenu", { menu: "view", ... }]` |
-| Show view menu (locked) | `s-v` (kakoune: normal) | `[".openMenu", { menu: "view", locked: true, ... }]` |
+| Title | Keybinding | Command |
+| ----------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| Show view menu | `v` (kakoune: normal), `z` (helix: normal), `z` (helix: select) | `[".openMenu", { menu: "view", ... }]` |
+| Show view menu (locked) | `s-v` (kakoune: normal), `s-z` (helix: normal), `s-z` (helix: select) | `[".openMenu", { menu: "view", locked: true, ... }]` |
diff --git a/src/commands/edit.ts b/src/commands/edit.ts
index 8e76a36f..24db4a16 100644
--- a/src/commands/edit.ts
+++ b/src/commands/edit.ts
@@ -32,18 +32,18 @@ declare module "./edit";
* | 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", ... }]` |
*/
export async function insert(
@@ -133,7 +133,7 @@ export async function insert(
/**
* Join lines.
*
- * @keys `a-j` (kakoune: normal)
+ * @keys `a-j` (core: normal), `s-j` (helix: select)
*/
export function join(_: Context, separator?: Argument) {
return joinLines(Selections.lines(), separator);
@@ -142,7 +142,7 @@ export function join(_: Context, separator?: Argument) {
/**
* Join lines and select inserted separators.
*
- * @keys `s-a-j` (kakoune: normal)
+ * @keys `s-a-j` (core: normal), `s-a-j` (helix: select)
*/
export async function join_select(_: Context, separator?: Argument) {
Selections.set(await joinLines(Selections.lines(), separator));
@@ -151,7 +151,7 @@ export async function join_select(_: Context, separator?: Argument) {
/**
* Indent selected lines.
*
- * @keys `>` (kakoune: normal)
+ * @keys `>` (core: normal), `>` (helix: select)
*/
export function indent(_: Context, repetitions: number) {
return indentLines(Selections.lines(), repetitions, /* indentEmpty= */ false);
@@ -178,7 +178,7 @@ export function deindent(_: Context, repetitions: number) {
/**
* Deindent selected lines (including incomplete indent).
*
- * @keys `<` (kakoune: normal)
+ * @keys `<` (core: normal), `<` (helix: select)
*/
export function deindent_withIncomplete(_: Context, repetitions: number) {
return deindentLines(Selections.lines(), repetitions, /* deindentIncomplete= */ true);
@@ -187,7 +187,7 @@ export function deindent_withIncomplete(_: Context, repetitions: number) {
/**
* Transform to lower case.
*
- * @keys `` ` `` (kakoune: normal)
+ * @keys `` ` `` (core: normal), `` ` `` (helix: select)
*/
export function case_toLower(_: Context) {
return replace((text) => text.toLocaleLowerCase());
@@ -196,7 +196,7 @@ export function case_toLower(_: Context) {
/**
* Transform to upper case.
*
- * @keys `` s-` `` (kakoune: normal)
+ * @keys `` s-` `` (kakoune: normal), `` a-` `` (helix: normal), `` a-` `` (helix: select)
*/
export function case_toUpper(_: Context) {
return replace((text) => text.toLocaleUpperCase());
@@ -205,7 +205,7 @@ export function case_toUpper(_: Context) {
/**
* Swap case.
*
- * @keys `` a-` `` (kakoune: normal)
+ * @keys `` a-` `` (kakoune: normal), `` s-` `` (helix: normal), `` s-` `` (helix: select)
*/
export function case_swap(_: Context) {
return replace((text) => {
@@ -225,7 +225,7 @@ export function case_swap(_: Context) {
/**
* Replace characters.
*
- * @keys `r` (kakoune: normal)
+ * @keys `r` (core: normal)
*/
export async function replaceCharacters(
_: Context,
@@ -280,7 +280,7 @@ export async function replaceCharacters(
* Align selections, aligning the cursor of each selection by inserting spaces
* before the first character of each selection.
*
- * @keys `&` (kakoune: normal)
+ * @keys `&` (core: normal)
*/
export function align(_: Context, fill: Argument = " ") {
return edit((builder, selections) => {
@@ -384,9 +384,9 @@ export function copyIndentation(
*
* #### 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", { ... }]` |
*/
export function newLine_above(
_: Context,
@@ -422,9 +422,9 @@ export function newLine_above(
*
* #### 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", { ... }]` |
*/
export function newLine_below(
_: Context,
diff --git a/src/commands/history.ts b/src/commands/history.ts
index 80a6742c..1a18670f 100644
--- a/src/commands/history.ts
+++ b/src/commands/history.ts
@@ -15,7 +15,7 @@ declare module "./history";
/**
* Undo.
*
- * @keys `u` (kakoune: normal), `u` (helix: select)
+ * @keys `u` (core: normal), `u` (helix: select)
*/
export function undo() {
return vscode.commands.executeCommand("undo");
@@ -24,7 +24,7 @@ export function undo() {
/**
* Redo.
*
- * @keys `s-u` (kakoune: normal), `s-u` (helix: select)
+ * @keys `s-u` (core: normal), `s-u` (helix: select)
*/
export function redo() {
return vscode.commands.executeCommand("redo");
@@ -53,10 +53,10 @@ export function redo_selections() {
*
* @noreplay
*
- * | 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 }]` |
*/
export async function repeat(
_: Context,
@@ -98,7 +98,7 @@ export async function repeat(
/**
* Repeat last edit without a command.
*
- * @keys `.` (kakoune: normal), `NumPad_Decimal` (kakoune: normal)
+ * @keys `.` (core: normal), `NumPad_Decimal` (core: normal)
* @noreplay
*/
export async function repeat_edit(_: Context, repetitions: number) {
diff --git a/src/commands/layouts/azerty.fr.md b/src/commands/layouts/azerty.fr.md
index c94c53ba..5ff9ce5b 100644
--- a/src/commands/layouts/azerty.fr.md
+++ b/src/commands/layouts/azerty.fr.md
@@ -12,47 +12,47 @@
dev | dev.copyLastErrorMessage | Copies the last encountered error message | |
dev.setSelectionBehavior | Set the selection behavior of the specified mode | |
edit | edit.align | Align selections | Shift+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.swap | Swap case | Alt+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toLower | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toUpper | Transform to upper case | Shift+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.copyIndentation | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.after | Paste after | |
+edit.case.swap | Swap case | 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 | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' )` (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.case.toUpper | Transform to upper case | 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 | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' )Shift+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' )Alt+D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' )Shift+O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' )O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.paste.after | Paste after | P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.after.select | Paste after and select | P (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.before | Paste before | |
+edit.paste.before | Paste before | Shift+P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.before.select | Paste before and select | Shift+P (editorTextFocus && dance.mode == 'normal' ) |
edit.pasteAll.after | Paste all after | |
-edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.pasteAll.before | Paste all before | |
-edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.mode == 'normal' ) |
-edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.mode == 'insert' ) |
-edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' )Shift+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+Alt+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.replaceCharacters | Replace characters | R (editorTextFocus && dance.mode == 'normal' ) |
-history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' ) |
+history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' )Alt+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
history.repeat.selection | Repeat last selection change | |
-history.recording.play | Replay recording | Q (editorTextFocus && dance.mode == 'normal' ) |
-history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording ) |
-history.recording.stop | Stop recording | Escape (editorTextFocus && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording ) |
-history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.mode == 'select' ) |
-history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.recording.play | Replay recording | Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && !dance.isRecording ) |
+history.recording.stop | Stop recording | Escape (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording ) |
+history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
history.repeat | Repeat last change | |
history.repeat.edit | Repeat last edit without a command | . (editorTextFocus && dance.mode == 'normal' )NumPad_Decimal (editorTextFocus && dance.mode == 'normal' ) |
-history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.mode == 'select' ) |
-history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
keybindings | keybindings.setup | Set up Dance keybindings | |
misc | cancel | Cancel Dance operation | Escape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible )Escape (editorTextFocus && dance.mode == 'input' ) |
changeInput | Change current input | |
@@ -64,70 +64,70 @@ selections are empty |
selectRegister | Select register for next command | Shift+' (editorTextFocus && dance.mode == 'normal' ) |
updateCount | Update Dance count | |
updateRegister | Update the contents of a register | |
-modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' ) |
+modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' )A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' )I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' )Shift+A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' )Shift+I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
modes.set.insert | Set mode to Insert | |
-modes.set.normal | Set mode to Normal | Escape (editorTextFocus && dance.mode == 'insert' )Escape (editorTextFocus && dance.mode == 'select' ) |
-modes.set.select | Set mode to Select | |
-modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.mode == 'normal' ) |
-modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.mode == 'insert' ) |
+modes.set.normal | Set mode to 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 | Set mode to Select | V (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
modes.set | Set Dance mode | |
modes.set.temporarily | Set Dance mode temporarily | |
search | search.next | Select next match | N (editorTextFocus && dance.mode == 'normal' ) |
search.search | Search | / (editorTextFocus && dance.mode == 'normal' )NumPad_Divide (editorTextFocus && dance.mode == 'normal' ) |
-search.backward | Search backward | Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.next.add | Add next match | Shift+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous | Select previous match | Alt+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.mode == 'normal' ) |
+search.backward | Search backward | Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.next.add | Add next match | Shift+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.previous | Select previous match | Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
search.selection.smart | Search current selection (smart) | Shift+8 (editorTextFocus && dance.mode == 'normal' )NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
search.selection | Search current selection | Shift+Alt+8 (editorTextFocus && dance.mode == 'normal' )Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
-seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.mode == 'normal' ) |
+seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
seek.leap | Leap forward | |
seek.object | Select object | |
seek.seek | Select to character (excluded) | T (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.mode == 'normal' )T (editorTextFocus && dance.mode == 'select' ) |
-seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.mode == 'select' ) |
+seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.included | Select to character (included) | F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.mode == 'normal' )F (editorTextFocus && dance.mode == 'select' ) |
-seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.mode == 'select' ) |
+seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.leap.backward | Leap backward | |
seek.syntax.child.experimental | Select child syntax object | |
seek.syntax.next.experimental | Select next syntax object | |
seek.syntax.parent.experimental | Select parent syntax object | |
seek.syntax.previous.experimental | Select previous syntax object | |
seek.word.backward | Select to previous word start | B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.mode == 'normal' )W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.mode == 'normal' )B (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.mode == 'select' ) |
+seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.wordEnd | Select to next word end | E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.mode == 'normal' )E (editorTextFocus && dance.mode == 'select' ) |
-seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.mode == 'select' ) |
+seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.syntax.experimental | Select syntax object | |
seek.word | Select to next word start | W (editorTextFocus && dance.mode == 'normal' ) |
-select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.mode == 'normal' ) |
+select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
select.firstVisibleLine | Select to first visible line | |
select.horizontally | Select horizontally | |
select.lastLine | Select to last line | |
@@ -135,82 +135,82 @@ selections are empty |
select.line.above | Select line above | |
select.line.above.extend | Extend to line above | |
select.line.below | Select line below | |
-select.line.below.extend | Extend to line below | |
-select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
+select.line.below.extend | Extend to line below | X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
+select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
select.middleVisibleLine | Select to middle visible line | |
-select.documentEnd.extend | Extend to last character | |
-select.documentEnd.jump | Jump to last character | |
-select.down.extend | Extend down | 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 | Extend to last character | |
+select.documentEnd.jump | Jump to last character | |
+select.down.extend | Extend down | 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 | Jump down | J (editorTextFocus && dance.mode == 'normal' )Down (editorTextFocus && dance.mode == 'normal' ) |
-select.firstLine.extend | Extend to first line | |
-select.firstLine.jump | Jump to first line | |
-select.firstVisibleLine.extend | Extend to first visible line | |
-select.firstVisibleLine.jump | Jump to first visible line | |
-select.lastLine.extend | Extend to last line | |
-select.lastLine.jump | Jump to last line | |
-select.lastVisibleLine.extend | Extend to last visible line | |
-select.lastVisibleLine.jump | Jump to last visible line | |
-select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
-select.lineEnd.extend | Extend to line end | Shift+Alt+L (editorTextFocus && dance.mode == 'normal' )Shift+End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.extend | Extend to line start | Shift+Alt+H (editorTextFocus && dance.mode == 'normal' )Shift+Home (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.jump | Jump to line start | |
-select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
-select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
-select.middleVisibleLine.extend | Extend to middle visible line | |
-select.middleVisibleLine.jump | Jump to middle visible line | |
-select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
-select.to.extend | Extend to | Shift+G (editorTextFocus && dance.mode == 'normal' )G (editorTextFocus && dance.mode == 'select' ) |
-select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
-select.up.extend | Extend up | 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 | Extend to first line | |
+select.firstLine.jump | Jump to first line | |
+select.firstVisibleLine.extend | Extend to first visible line | |
+select.firstVisibleLine.jump | Jump to first visible line | |
+select.lastLine.extend | Extend to last line | |
+select.lastLine.jump | Jump to last line | |
+select.lastVisibleLine.extend | Extend to last visible line | |
+select.lastVisibleLine.jump | Jump to last visible line | |
+select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
+select.lineEnd.extend | Extend to line end | 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 | Extend to line start | 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 | Jump to line start | |
+select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
+select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
+select.middleVisibleLine.extend | Extend to middle visible line | |
+select.middleVisibleLine.jump | Jump to middle visible line | |
+select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
+select.to.extend | Extend to | Shift+G (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )G (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
+select.up.extend | Extend up | 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 | Jump up | K (editorTextFocus && dance.mode == 'normal' )Up (editorTextFocus && dance.mode == 'normal' ) |
select.to | Select to | |
select.vertically | Select vertically | |
-selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' ) |
+selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' )Alt+; (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.changeOrder | Reverse selections | |
-selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.expandToLines | Expand to lines | X (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' ) |
-selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.mode == 'normal' ) |
+selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.expandToLines | Expand to lines | 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 | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' )Shift+4 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
selections.open | Open selected file | |
-selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore | Restore selections | Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.save | Save selections | Shift+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' ) |
+selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' )Shift+Alt+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ); (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.restore | Restore selections | Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.save | Save selections | Shift+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' )Y (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.select | Select within selections | |
-selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ) |
-selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.faceBackward | Backward selections | |
-selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.hideIndices | Hide selection indices | |
-selections.orderAscending | Order selections ascending | |
-selections.orderDescending | Order selections descending | |
-selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.mode == 'normal' ) |
-selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' ) |
-selections.showIndices | Show selection indices | |
-selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' )Alt+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ), (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.faceBackward | Backward selections | |
+selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' )Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' )Shift+Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.hideIndices | Hide selection indices | |
+selections.orderAscending | Order selections ascending | |
+selections.orderDescending | Order selections descending | |
+selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' )Shift+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' )Shift+Alt+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' )Shift+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' )S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.showIndices | Show selection indices | |
+selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' )Alt+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.sort | Sort selections | |
-selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' )Shift+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.splitLines | Split selections at line boundaries | |
-selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents | Rotate selections clockwise (contents only) | |
+selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.behavior=='dance' && dance.mode == 'normal' ) |
+selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' )Alt+X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' )Shift+- (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents | Rotate selections clockwise (contents only) | Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.rotate.selections | Rotate selections clockwise (selections only) | Shift+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | |
-selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' ) |
+selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' )Shift+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
view | view.line | Reveals a position based on the main cursor | |
@@ -268,18 +268,18 @@ Specify `all` to paste all contents next to each selection.
| 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", ... }]` |
This command:
@@ -304,7 +304,8 @@ Join lines.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `a-j` (kakoune: normal)
+Default keybinding: `a-j` (core: normal)
+`s-j` (helix: select)
@@ -316,7 +317,8 @@ Join lines and select inserted separators.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `s-a-j` (kakoune: normal)
+Default keybinding: `s-a-j` (core: normal)
+`s-a-j` (helix: select)
@@ -328,7 +330,8 @@ Indent selected lines.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `>` (kakoune: normal)
+Default keybinding: `>` (core: normal)
+`>` (helix: select)
@@ -364,7 +367,8 @@ Deindent selected lines (including incomplete indent).
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `<` (kakoune: normal)
+Default keybinding: `<` (core: normal)
+`<` (helix: select)
@@ -374,7 +378,8 @@ Transform to lower case.
-Default keybinding: `` ` `` (kakoune: normal)
+Default keybinding: `` ` `` (core: normal)
+`` ` `` (helix: select)
@@ -385,6 +390,8 @@ Transform to upper case.
Default keybinding: `` s-` `` (kakoune: normal)
+`` a-` `` (helix: normal)
+`` a-` `` (helix: select)
@@ -395,6 +402,8 @@ Swap case.
Default keybinding: `` a-` `` (kakoune: normal)
+`` s-` `` (helix: normal)
+`` s-` `` (helix: select)
@@ -407,7 +416,7 @@ This command:
- may be repeated with a given number of repetitions.
- takes an input `input` of type `string`.
-Default keybinding: `r` (kakoune: normal)
+Default keybinding: `r` (core: normal)
@@ -422,7 +431,7 @@ before the first character of each selection.
This command:
- takes an argument `fill` of type `string`.
-Default keybinding: `&` (kakoune: normal)
+Default keybinding: `&` (core: normal)
@@ -451,9 +460,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -473,9 +482,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -497,7 +506,7 @@ Undo.
This command:
- does not require an active text editor.
-Default keybinding: `u` (kakoune: normal)
+Default keybinding: `u` (core: normal)
`u` (helix: select)
@@ -510,7 +519,7 @@ Redo.
This command:
- does not require an active text editor.
-Default keybinding: `s-u` (kakoune: normal)
+Default keybinding: `s-u` (core: normal)
`s-u` (helix: select)
@@ -544,10 +553,10 @@ Default keybinding: `s-a-u` (kakoune: normal)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -563,8 +572,8 @@ Repeat last edit without a command.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `.` (kakoune: normal)
-`NumPad_Decimal` (kakoune: normal)
+Default keybinding: `.` (core: normal)
+`NumPad_Decimal` (core: normal)
@@ -776,7 +785,7 @@ current document.
This command:
- takes an input `register` of type `string | Register`.
-Default keybinding: `"` (kakoune: normal)
+Default keybinding: `"` (core: normal)
@@ -883,20 +892,20 @@ Set Dance mode.
#### 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, ... }]` |
This command:
@@ -931,11 +940,11 @@ Search for patterns and replace or add selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
@@ -944,8 +953,8 @@ This command:
- takes an argument `add` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `/` (kakoune: normal)
-`NumPad_Divide` (kakoune: normal)
+Default keybinding: `/` (core: normal)
+`NumPad_Divide` (core: normal)
@@ -954,16 +963,16 @@ Default keybinding: `/` (kakoune: normal)
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 }]` |
This command:
- accepts a register (by default, it uses `slash`).
- takes an argument `smart` of type `boolean`.
-Default keybinding: `a-*` (kakoune: normal)
-`a-NumPad_Multiply` (kakoune: normal)
+Default keybinding: `a-*` (core: normal)
+`a-NumPad_Multiply` (core: normal)
@@ -972,18 +981,18 @@ Default keybinding: `a-*` (kakoune: normal)
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, ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
- may be repeated with a given number of repetitions.
- takes an argument `add` of type `boolean`.
-Default keybinding: `n` (kakoune: normal)
+Default keybinding: `n` (core: normal)
## [`seek`](../seek.ts)
@@ -1001,11 +1010,11 @@ Select to character (excluded).
| 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, ... }]` |
This command:
@@ -1013,7 +1022,7 @@ This command:
- takes an argument `include` of type `boolean`.
- takes an input `input` of type `string`.
-Default keybinding: `t` (kakoune: normal)
+Default keybinding: `t` (core: normal)
@@ -1050,15 +1059,15 @@ Select the word and following whitespaces on the right of the end of each select
| 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" , ... }]` |
This command:
@@ -1066,7 +1075,7 @@ This command:
- takes an argument `stopAtEnd` of type `boolean`.
- takes an argument `ws` of type `boolean`.
-Default keybinding: `w` (kakoune: normal)
+Default keybinding: `w` (core: normal)
@@ -1159,28 +1168,32 @@ Default keybinding: `%` (kakoune: normal)
-### [`select.vertically`](../select.ts#L31-L64)
+### [`select.vertically`](../select.ts#L31-L68)
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" }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1189,7 +1202,7 @@ This command:
-### [`select.horizontally`](../select.ts#L217-L239)
+### [`select.horizontally`](../select.ts#L221-L243)
Select horizontally.
@@ -1198,9 +1211,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", ... }]` |
This command:
@@ -1209,7 +1222,7 @@ This command:
-### [`select.to`](../select.ts#L286-L304)
+### [`select.to`](../select.ts#L290-L308)
Select to.
@@ -1220,7 +1233,7 @@ line. If no count is specified, this command will shift open the `goto` menu.
| 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", ... }]` |
This command:
@@ -1229,7 +1242,7 @@ This command:
-### [`select.line.below`](../select.ts#L314-L317)
+### [`select.line.below`](../select.ts#L318-L321)
Select line below.
@@ -1238,16 +1251,19 @@ This command:
-### [`select.line.below.extend`](../select.ts#L342-L345)
+### [`select.line.below.extend`](../select.ts#L346-L350)
Extend to line below.
This command:
- may be repeated with a given number of repetitions.
+Default keybinding: `x` (helix: normal)
+`x` (helix: select)
+
-### [`select.line.above`](../select.ts#L372-L375)
+### [`select.line.above`](../select.ts#L377-L380)
Select line above.
@@ -1256,7 +1272,7 @@ This command:
-### [`select.line.above.extend`](../select.ts#L399-L402)
+### [`select.line.above.extend`](../select.ts#L404-L407)
Extend to line above.
@@ -1265,32 +1281,32 @@ This command:
-### [`select.lineStart`](../select.ts#L448-L470)
+### [`select.lineStart`](../select.ts#L453-L475)
Select to line start.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `skipBlank` of type `boolean`.
Default keybinding: `a-h` (kakoune: normal)
-`home` (kakoune: normal)
+`home` (core: normal)
-### [`select.lineEnd`](../select.ts#L495-L517)
+### [`select.lineEnd`](../select.ts#L500-L522)
Select to line end.
@@ -1298,22 +1314,22 @@ Select to line end.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `lineBreak` of type `boolean`.
Default keybinding: `a-l` (kakoune: normal)
-`end` (kakoune: normal)
+`end` (core: normal)
-### [`select.lastLine`](../select.ts#L545-L555)
+### [`select.lastLine`](../select.ts#L550-L560)
Select to last line.
@@ -1326,7 +1342,7 @@ Select to last line.
-### [`select.firstVisibleLine`](../select.ts#L566-L576)
+### [`select.firstVisibleLine`](../select.ts#L571-L581)
Select to first visible line.
@@ -1339,7 +1355,7 @@ Select to first visible line.
-### [`select.middleVisibleLine`](../select.ts#L583-L593)
+### [`select.middleVisibleLine`](../select.ts#L588-L598)
Select to middle visible line.
@@ -1352,7 +1368,7 @@ Select to middle visible line.
-### [`select.lastVisibleLine`](../select.ts#L600-L610)
+### [`select.lastVisibleLine`](../select.ts#L605-L615)
Select to last visible line.
@@ -1377,7 +1393,8 @@ Copy selections text.
This command:
- accepts a register (by default, it uses `dquote`).
-Default keybinding: `y` (kakoune: normal)
+Default keybinding: `y` (core: normal)
+`y` (helix: select)
@@ -1430,45 +1447,44 @@ Default keybinding: `a-z` (kakoune: normal)
-### [`selections.pipe`](../selections.ts#L241-L263)
+### [`selections.pipe`](../selections.ts#L241-L262)
Pipe selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `pipe`).
- takes an input `expression` of type `string`.
-Default keybinding: `a-|` (kakoune: normal)
+Default keybinding: `a-|` (core: normal)
+`a-|` (helix: select)
-### [`selections.filter`](../selections.ts#L291-L313)
+### [`selections.filter`](../selections.ts#L290-L311)
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" , ... }]` |
This command:
- accepts an argument of type `{ expression?: string }`.
@@ -1477,19 +1493,20 @@ This command:
- takes an argument `interactive` of type `boolean`.
- takes an argument `inverse` of type `boolean`.
-Default keybinding: `$` (kakoune: normal)
+Default keybinding: `$` (core: normal)
+`$` (helix: select)
-### [`selections.select`](../selections.ts#L346-L360)
+### [`selections.select`](../selections.ts#L344-L358)
Select within selections.
#### 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", { ... }]] }]` |
This command:
- accepts an argument of type `{ re?: string | RegExp }`.
@@ -1497,7 +1514,7 @@ This command:
-### [`selections.split`](../selections.ts#L379-L390)
+### [`selections.split`](../selections.ts#L377-L388)
Split selections.
@@ -1507,19 +1524,20 @@ This command:
- takes an argument `excludeEmpty` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `s-s` (kakoune: normal)
+Default keybinding: `s-s` (core: normal)
+`s-s` (helix: select)
-### [`selections.splitLines`](../selections.ts#L415-L431)
+### [`selections.splitLines`](../selections.ts#L413-L429)
Split selections at line boundaries.
#### 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", { ... }]] }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1527,7 +1545,7 @@ This command:
-### [`selections.expandToLines`](../selections.ts#L474-L481)
+### [`selections.expandToLines`](../selections.ts#L472-L479)
Expand to lines.
@@ -1536,10 +1554,12 @@ Expand selections to contain full lines (including end-of-line characters).
Default keybinding: `x` (kakoune: normal)
+`s-x` (helix: normal)
+`s-x` (helix: select)
-### [`selections.trimLines`](../selections.ts#L508-L515)
+### [`selections.trimLines`](../selections.ts#L506-L513)
Trim lines.
@@ -1547,11 +1567,12 @@ Trim selections to only contain full lines (from start to line break).
-Default keybinding: `a-x` (kakoune: normal)
+Default keybinding: `a-x` (core: normal)
+`a-x` (helix: select)
-### [`selections.trimWhitespace`](../selections.ts#L540-L547)
+### [`selections.trimWhitespace`](../selections.ts#L538-L545)
Trim whitespace.
@@ -1559,11 +1580,12 @@ Trim whitespace at beginning and end of selections.
-Default keybinding: `_` (kakoune: normal)
+Default keybinding: `_` (core: normal)
+`_` (helix: select)
-### [`selections.reduce`](../selections.ts#L566-L585)
+### [`selections.reduce`](../selections.ts#L564-L583)
Reduce selections to their cursor.
@@ -1579,11 +1601,12 @@ This command:
- takes an argument `empty` of type `boolean`.
- takes an argument `where` of type `"active" | "anchor" | "start" | "end" | "both"`.
-Default keybinding: `;` (kakoune: normal)
+Default keybinding: `;` (core: normal)
+`;` (helix: select)
-### [`selections.changeDirection`](../selections.ts#L647-L662)
+### [`selections.changeDirection`](../selections.ts#L645-L660)
Change direction of selections.
@@ -1597,11 +1620,12 @@ Change direction of selections.
| Backward selections | `faceBackward` | | `[".selections.changeDirection", { direction: -1 }]` |
-Default keybinding: `a-;` (kakoune: normal)
+Default keybinding: `a-;` (core: normal)
+`a-;` (helix: select)
-### [`selections.changeOrder`](../selections.ts#L687-L701)
+### [`selections.changeOrder`](../selections.ts#L685-L699)
Reverse selections.
@@ -1615,7 +1639,7 @@ Reverse selections.
-### [`selections.sort`](../selections.ts#L714-L726)
+### [`selections.sort`](../selections.ts#L712-L724)
Sort selections.
@@ -1626,7 +1650,7 @@ This command:
-### [`selections.copy`](../selections.ts#L799-L817)
+### [`selections.copy`](../selections.ts#L797-L815)
Copy selections below.
@@ -1644,7 +1668,7 @@ Default keybinding: `s-c` (kakoune: normal)
-### [`selections.merge`](../selections.ts#L851-L856)
+### [`selections.merge`](../selections.ts#L849-L854)
Merge contiguous selections.
@@ -1654,13 +1678,13 @@ Default keybinding: `a-_` (kakoune: normal)
-### [`selections.open`](../selections.ts#L860-L863)
+### [`selections.open`](../selections.ts#L858-L861)
Open selected file.
-### [`selections.toggleIndices`](../selections.ts#L876-L893)
+### [`selections.toggleIndices`](../selections.ts#L874-L891)
Toggle selection indices.
@@ -1703,38 +1727,42 @@ Default keybinding: `a-)` (kakoune: normal)
-### [`selections.rotate.contents`](../selections.rotate.ts#L28-L37)
+### [`selections.rotate.contents`](../selections.rotate.ts#L28-L39)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
+Default keybinding: `a-)` (helix: normal)
+`a-)` (helix: select)
+
-### [`selections.rotate.selections`](../selections.rotate.ts#L45-L56)
+### [`selections.rotate.selections`](../selections.rotate.ts#L47-L58)
Rotate selections clockwise (selections only).
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
-Default keybinding: `)` (kakoune: normal)
+Default keybinding: `)` (core: normal)
## [`view`](../view.ts)
@@ -1742,10 +1770,10 @@ Moving the editor view.
#### Predefined keybindings
-| Title | Keybinding | Command |
-| ----------------------- | ----------------------- | ---------------------------------------------------- |
-| Show view menu | `v` (kakoune: normal) | `[".openMenu", { menu: "view", ... }]` |
-| Show view menu (locked) | `s-v` (kakoune: normal) | `[".openMenu", { menu: "view", locked: true, ... }]` |
+| Title | Keybinding | Command |
+| ----------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| Show view menu | `v` (kakoune: normal), `z` (helix: normal), `z` (helix: select) | `[".openMenu", { menu: "view", ... }]` |
+| Show view menu (locked) | `s-v` (kakoune: normal), `s-z` (helix: normal), `s-z` (helix: select) | `[".openMenu", { menu: "view", locked: true, ... }]` |
diff --git a/src/commands/layouts/qwerty.md b/src/commands/layouts/qwerty.md
index 1c5830ea..f15a3caa 100644
--- a/src/commands/layouts/qwerty.md
+++ b/src/commands/layouts/qwerty.md
@@ -12,47 +12,47 @@
dev | dev.copyLastErrorMessage | Copies the last encountered error message | |
dev.setSelectionBehavior | Set the selection behavior of the specified mode | |
edit | edit.align | Align selections | Shift+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.swap | Swap case | Alt+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toLower | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' ) |
-edit.case.toUpper | Transform to upper case | Shift+` (editorTextFocus && dance.mode == 'normal' ) |
-edit.copyIndentation | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' ) |
-edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.after | Paste after | |
+edit.case.swap | Swap case | 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 | Transform to lower case | ` (editorTextFocus && dance.mode == 'normal' )` (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.case.toUpper | Transform to upper case | 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 | Copy indentation | Shift+Alt+7 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent | Deindent selected lines | Shift+Alt+, (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.deindent.withIncomplete | Deindent selected lines (including incomplete indent) | Shift+, (editorTextFocus && dance.mode == 'normal' )Shift+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete | Delete | Alt+D (editorTextFocus && dance.mode == 'normal' )Alt+D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.delete-insert | Delete and switch to Insert | Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.above.insert | Insert new line above and switch to insert | Shift+O (editorTextFocus && dance.mode == 'normal' )Shift+O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.below.insert | Insert new line below and switch to insert | O (editorTextFocus && dance.mode == 'normal' )O (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.paste.after | Paste after | P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.after.select | Paste after and select | P (editorTextFocus && dance.mode == 'normal' ) |
-edit.paste.before | Paste before | |
+edit.paste.before | Paste before | Shift+P (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
edit.paste.before.select | Paste before and select | Shift+P (editorTextFocus && dance.mode == 'normal' ) |
edit.pasteAll.after | Paste all after | |
-edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.after.select | Paste all after and select | Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.pasteAll.before | Paste all before | |
-edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.mode == 'normal' ) |
-edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.mode == 'insert' ) |
-edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.mode == 'select' ) |
-edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.mode == 'normal' ) |
-edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.mode == 'normal' ) |
-edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.mode == 'normal' ) |
-edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.mode == 'normal' ) |
+edit.pasteAll.before.select | Paste all before and select | Shift+Alt+P (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.selectRegister-insert | Pick register and replace | Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Ctrl+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+edit.yank-delete | Copy and delete | D (editorTextFocus && dance.mode == 'normal' )D (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-delete-insert | Copy, delete and switch to Insert | C (editorTextFocus && dance.mode == 'normal' )C (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.yank-replace | Copy and replace | Shift+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.indent | Indent selected lines | Shift+. (editorTextFocus && dance.mode == 'normal' )Shift+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.indent.withEmpty | Indent selected lines (including empty lines) | Shift+Alt+. (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.insert | Insert contents of register | Shift+Alt+R (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.join | Join lines | Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.join.select | Join lines and select inserted separators | Shift+Alt+J (editorTextFocus && dance.mode == 'normal' )Shift+Alt+J (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+edit.newLine.above | Insert new line above each selection | Shift+Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+edit.newLine.below | Insert new line below each selection | Alt+O (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
edit.replaceCharacters | Replace characters | R (editorTextFocus && dance.mode == 'normal' ) |
-history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' ) |
+history | history.repeat.seek | Repeat last seek | Alt+. (editorTextFocus && dance.mode == 'normal' )Alt+. (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
history.repeat.selection | Repeat last selection change | |
-history.recording.play | Replay recording | Q (editorTextFocus && dance.mode == 'normal' ) |
-history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording ) |
-history.recording.stop | Stop recording | Escape (editorTextFocus && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording ) |
-history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.mode == 'select' ) |
-history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.recording.play | Replay recording | Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+history.recording.start | Start recording | Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && !dance.isRecording ) |
+history.recording.stop | Stop recording | Escape (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording )Shift+Q (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' && dance.isRecording ) |
+history.redo | Redo | Shift+U (editorTextFocus && dance.mode == 'normal' )Shift+U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.redo.selections | Redo a change of selections | Shift+Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
history.repeat | Repeat last change | |
history.repeat.edit | Repeat last edit without a command | . (editorTextFocus && dance.mode == 'normal' )NumPad_Decimal (editorTextFocus && dance.mode == 'normal' ) |
-history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.mode == 'select' ) |
-history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.mode == 'normal' ) |
+history.undo | Undo | U (editorTextFocus && dance.mode == 'normal' )U (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+history.undo.selections | Undo a change of selections | Alt+U (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
keybindings | keybindings.setup | Set up Dance keybindings | |
misc | cancel | Cancel Dance operation | Escape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible )Escape (editorTextFocus && dance.mode == 'input' ) |
changeInput | Change current input | |
@@ -64,70 +64,70 @@ selections are empty |
selectRegister | Select register for next command | Shift+' (editorTextFocus && dance.mode == 'normal' ) |
updateCount | Update Dance count | |
updateRegister | Update the contents of a register | |
-modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' ) |
-modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' ) |
+modes | modes.insert.after | Insert after | A (editorTextFocus && dance.mode == 'normal' )A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.before | Insert before | I (editorTextFocus && dance.mode == 'normal' )I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineEnd | Insert at line end | Shift+A (editorTextFocus && dance.mode == 'normal' )Shift+A (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+modes.insert.lineStart | Insert at line start | Shift+I (editorTextFocus && dance.mode == 'normal' )Shift+I (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
modes.set.insert | Set mode to Insert | |
-modes.set.normal | Set mode to Normal | Escape (editorTextFocus && dance.mode == 'insert' )Escape (editorTextFocus && dance.mode == 'select' ) |
-modes.set.select | Set mode to Select | |
-modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.mode == 'normal' ) |
-modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.mode == 'insert' ) |
+modes.set.normal | Set mode to 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 | Set mode to Select | V (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+modes.set.temporarily.insert | Temporary Insert mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+modes.set.temporarily.normal | Temporary Normal mode | Ctrl+V (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
modes.set | Set Dance mode | |
modes.set.temporarily | Set Dance mode temporarily | |
search | search.next | Select next match | N (editorTextFocus && dance.mode == 'normal' ) |
search.search | Search | / (editorTextFocus && dance.mode == 'normal' )NumPad_Divide (editorTextFocus && dance.mode == 'normal' ) |
-search.backward | Search backward | Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.mode == 'normal' ) |
-search.next.add | Add next match | Shift+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous | Select previous match | Alt+N (editorTextFocus && dance.mode == 'normal' ) |
-search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.mode == 'normal' ) |
+search.backward | Search backward | Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.backward.extend | Search backward (extend) | Shift+Alt+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.extend | Search (extend) | Shift+/ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )/ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.next.add | Add next match | Shift+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+search.previous | Select previous match | Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+search.previous.add | Add previous match | Shift+Alt+N (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+N (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
search.selection.smart | Search current selection (smart) | Shift+8 (editorTextFocus && dance.mode == 'normal' )NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
search.selection | Search current selection | Shift+Alt+8 (editorTextFocus && dance.mode == 'normal' )Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal' ) |
-seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.mode == 'normal' ) |
+seek | seek.enclosing | Select to next enclosing character | M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
seek.leap | Leap forward | |
seek.object | Select object | |
seek.seek | Select to character (excluded) | T (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.mode == 'insert' ) |
-seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.mode == 'normal' ) |
-seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.mode == 'normal' ) |
-seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.mode == 'normal' ) |
-seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.mode == 'normal' )T (editorTextFocus && dance.mode == 'select' ) |
-seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.mode == 'select' ) |
+seek.askObject | Select whole object | Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+A (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.end | Select to whole object end | ] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.end.extend | Extend to whole object end | Shift+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner | Select inner object | Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Alt+I (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'insert' ) |
+seek.askObject.inner.end | Select to inner object end | Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.end.extend | Extend to inner object end | Shift+Alt+] (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start | Select to inner object start | Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.inner.start.extend | Extend to inner object start | Shift+Alt+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start | Select to whole object start | [ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.askObject.start.extend | Extend to whole object start | Shift+[ (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.backward | Select to character (excluded, backward) | Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.enclosing.backward | Select to previous enclosing character | Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend | Extend to next enclosing character | Shift+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.enclosing.extend.backward | Extend to previous enclosing character | Shift+Alt+M (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+seek.extend | Extend to character (excluded) | Shift+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.extend.backward | Extend to character (excluded, backward) | Shift+Alt+T (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+T (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.included | Select to character (included) | F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.mode == 'normal' ) |
-seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.mode == 'normal' )F (editorTextFocus && dance.mode == 'select' ) |
-seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.mode == 'select' ) |
+seek.included.backward | Select to character (included, backward) | Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.included.extend | Extend to character (included) | Shift+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.included.extend.backward | Extend to character (included, backward) | Shift+Alt+F (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+F (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.leap.backward | Leap backward | |
seek.syntax.child.experimental | Select child syntax object | |
seek.syntax.next.experimental | Select next syntax object | |
seek.syntax.parent.experimental | Select parent syntax object | |
seek.syntax.previous.experimental | Select previous syntax object | |
seek.word.backward | Select to previous word start | B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.mode == 'normal' )W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.mode == 'normal' )B (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.mode == 'normal' ) |
-seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.mode == 'select' ) |
-seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.mode == 'select' ) |
+seek.word.extend | Extend to next word start | Shift+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.extend.backward | Extend to previous word start | Shift+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws | Select to next non-whitespace word start | Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.backward | Select to previous non-whitespace word start | Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.word.ws.extend | Extend to next non-whitespace word start | Shift+Alt+W (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+W (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.word.ws.extend.backward | Extend to previous non-whitespace word start | Shift+Alt+B (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+B (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.wordEnd | Select to next word end | E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.mode == 'normal' )E (editorTextFocus && dance.mode == 'select' ) |
-seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.mode == 'normal' ) |
-seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.mode == 'select' ) |
+seek.wordEnd.extend | Extend to next word end | Shift+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+seek.wordEnd.ws | Select to next non-whitespace word end | Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' ) |
+seek.wordEnd.ws.extend | Extend to next non-whitespace word end | Shift+Alt+E (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Shift+E (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
seek.syntax.experimental | Select syntax object | |
seek.word | Select to next word start | W (editorTextFocus && dance.mode == 'normal' ) |
-select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.mode == 'normal' ) |
+select | select.buffer | Select whole buffer | Shift+5 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
select.firstVisibleLine | Select to first visible line | |
select.horizontally | Select horizontally | |
select.lastLine | Select to last line | |
@@ -135,82 +135,82 @@ selections are empty |
select.line.above | Select line above | |
select.line.above.extend | Extend to line above | |
select.line.below | Select line below | |
-select.line.below.extend | Extend to line below | |
-select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
+select.line.below.extend | Extend to line below | X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.lineEnd | Select to line end | Alt+L (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )End (editorTextFocus && dance.mode == 'normal' ) |
+select.lineStart | Select to line start | Alt+H (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )Home (editorTextFocus && dance.mode == 'normal' ) |
select.middleVisibleLine | Select to middle visible line | |
-select.documentEnd.extend | Extend to last character | |
-select.documentEnd.jump | Jump to last character | |
-select.down.extend | Extend down | 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 | Extend to last character | |
+select.documentEnd.jump | Jump to last character | |
+select.down.extend | Extend down | 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 | Jump down | J (editorTextFocus && dance.mode == 'normal' )Down (editorTextFocus && dance.mode == 'normal' ) |
-select.firstLine.extend | Extend to first line | |
-select.firstLine.jump | Jump to first line | |
-select.firstVisibleLine.extend | Extend to first visible line | |
-select.firstVisibleLine.jump | Jump to first visible line | |
-select.lastLine.extend | Extend to last line | |
-select.lastLine.jump | Jump to last line | |
-select.lastVisibleLine.extend | Extend to last visible line | |
-select.lastVisibleLine.jump | Jump to last visible line | |
-select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
-select.lineEnd.extend | Extend to line end | Shift+Alt+L (editorTextFocus && dance.mode == 'normal' )Shift+End (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.extend | Extend to line start | Shift+Alt+H (editorTextFocus && dance.mode == 'normal' )Shift+Home (editorTextFocus && dance.mode == 'normal' ) |
-select.lineStart.jump | Jump to line start | |
-select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
-select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
-select.middleVisibleLine.extend | Extend to middle visible line | |
-select.middleVisibleLine.jump | Jump to middle visible line | |
-select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
-select.to.extend | Extend to | Shift+G (editorTextFocus && dance.mode == 'normal' )G (editorTextFocus && dance.mode == 'select' ) |
-select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
-select.up.extend | Extend up | 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 | Extend to first line | |
+select.firstLine.jump | Jump to first line | |
+select.firstVisibleLine.extend | Extend to first visible line | |
+select.firstVisibleLine.jump | Jump to first visible line | |
+select.lastLine.extend | Extend to last line | |
+select.lastLine.jump | Jump to last line | |
+select.lastVisibleLine.extend | Extend to last visible line | |
+select.lastVisibleLine.jump | Jump to last visible line | |
+select.left.extend | Extend left | 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 | Jump left | H (editorTextFocus && dance.mode == 'normal' )Left (editorTextFocus && dance.mode == 'normal' ) |
+select.lineEnd.extend | Extend to line end | 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 | Extend to line start | 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 | Jump to line start | |
+select.lineStart.skipBlank.extend | Extend to line start (skip blank) | |
+select.lineStart.skipBlank.jump | Jump to line start (skip blank) | |
+select.middleVisibleLine.extend | Extend to middle visible line | |
+select.middleVisibleLine.jump | Jump to middle visible line | |
+select.right.extend | Extend right | 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 | Jump right | L (editorTextFocus && dance.mode == 'normal' )Right (editorTextFocus && dance.mode == 'normal' ) |
+select.to.extend | Extend to | Shift+G (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' )G (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+select.to.jump | Go to | G (editorTextFocus && dance.mode == 'normal' ) |
+select.up.extend | Extend up | 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 | Jump up | K (editorTextFocus && dance.mode == 'normal' )Up (editorTextFocus && dance.mode == 'normal' ) |
select.to | Select to | |
select.vertically | Select vertically | |
-selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' ) |
+selections | selections.changeDirection | Change direction of selections | Alt+; (editorTextFocus && dance.mode == 'normal' )Alt+; (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.changeOrder | Reverse selections | |
-selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.expandToLines | Expand to lines | X (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' ) |
-selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.mode == 'normal' ) |
+selections.copy | Copy selections below | Shift+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.expandToLines | Expand to lines | 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 | Filter selections | Shift+4 (editorTextFocus && dance.mode == 'normal' )Shift+4 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.merge | Merge contiguous selections | Shift+Alt+- (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
selections.open | Open selected file | |
-selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore | Restore selections | Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.save | Save selections | Shift+Z (editorTextFocus && dance.mode == 'normal' ) |
-selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' ) |
+selections.pipe | Pipe selections | Shift+Alt+\ (editorTextFocus && dance.mode == 'normal' )Shift+Alt+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce | Reduce selections to their cursor | ; (editorTextFocus && dance.mode == 'normal' ); (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.restore | Restore selections | Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.restore.withCurrent | Combine register selections with current ones | Alt+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.save | Save selections | Shift+Z (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.saveText | Copy selections text | Y (editorTextFocus && dance.mode == 'normal' )Y (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.select | Select within selections | |
-selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' ) |
-selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ) |
-selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.mode == 'normal' ) |
-selections.faceBackward | Backward selections | |
-selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' ) |
-selections.hideIndices | Hide selection indices | |
-selections.orderAscending | Order selections ascending | |
-selections.orderDescending | Order selections descending | |
-selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' ) |
-selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' ) |
-selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.mode == 'normal' ) |
-selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' ) |
-selections.showIndices | Show selection indices | |
-selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.clear.main | Clear main selections | Alt+, (editorTextFocus && dance.mode == 'normal' )Alt+, (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.clear.secondary | Clear secondary selections | , (editorTextFocus && dance.mode == 'normal' ), (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.copy.above | Copy selections above | Shift+Alt+C (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.faceBackward | Backward selections | |
+selections.faceForward | Forward selections | Shift+Alt+; (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.filter.regexp | Keep matching selections | Alt+K (editorTextFocus && dance.mode == 'normal' )Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.filter.regexp.inverse | Clear matching selections | Shift+Alt+K (editorTextFocus && dance.mode == 'normal' )Shift+Alt+K (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.hideIndices | Hide selection indices | |
+selections.orderAscending | Order selections ascending | |
+selections.orderDescending | Order selections descending | |
+selections.pipe.append | Pipe and append | Shift+1 (editorTextFocus && dance.mode == 'normal' )Shift+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.prepend | Pipe and prepend | Shift+Alt+1 (editorTextFocus && dance.mode == 'normal' )Shift+Alt+1 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.pipe.replace | Pipe and replace | Shift+\ (editorTextFocus && dance.mode == 'normal' )Shift+\ (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.reduce.edges | Reduce selections to their ends | Shift+Alt+S (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.select.orLeap | Leap or select | S (editorTextFocus && dance.mode == 'normal' )S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.showIndices | Show selection indices | |
+selections.splitLines.orLeap.backward | Leap or select backward | Alt+S (editorTextFocus && dance.mode == 'normal' )Alt+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.sort | Sort selections | |
-selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' ) |
+selections.split | Split selections | Shift+S (editorTextFocus && dance.mode == 'normal' )Shift+S (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.splitLines | Split selections at line boundaries | |
-selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' ) |
-selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents | Rotate selections clockwise (contents only) | |
+selections.toggleIndices | Toggle selection indices | Enter (editorTextFocus && dance.behavior=='dance' && dance.mode == 'normal' ) |
+selections.trimLines | Trim lines | Alt+X (editorTextFocus && dance.mode == 'normal' )Alt+X (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.trimWhitespace | Trim whitespace | Shift+- (editorTextFocus && dance.mode == 'normal' )Shift+- (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate | selections.rotate.both | Rotate selections clockwise | Shift+Alt+0 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents | Rotate selections clockwise (contents only) | Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+0 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
selections.rotate.selections | Rotate selections clockwise (selections only) | Shift+0 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.mode == 'normal' ) |
-selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | |
-selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' ) |
+selections.rotate.both.reverse | Rotate selections counter-clockwise | Shift+Alt+9 (editorTextFocus && dance.behavior=='kakoune' && dance.mode == 'normal' ) |
+selections.rotate.contents.reverse | Rotate selections counter-clockwise (contents only) | Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'normal' )Shift+Alt+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
+selections.rotate.selections.reverse | Rotate selections counter-clockwise (selections only) | Shift+9 (editorTextFocus && dance.mode == 'normal' )Shift+9 (editorTextFocus && dance.behavior=='helix' && dance.mode == 'select' ) |
view | view.line | Reveals a position based on the main cursor | |
@@ -268,18 +268,18 @@ Specify `all` to paste all contents next to each selection.
| 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", ... }]` |
This command:
@@ -304,7 +304,8 @@ Join lines.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `a-j` (kakoune: normal)
+Default keybinding: `a-j` (core: normal)
+`s-j` (helix: select)
@@ -316,7 +317,8 @@ Join lines and select inserted separators.
This command:
- takes an argument `separator` of type `string`.
-Default keybinding: `s-a-j` (kakoune: normal)
+Default keybinding: `s-a-j` (core: normal)
+`s-a-j` (helix: select)
@@ -328,7 +330,8 @@ Indent selected lines.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `>` (kakoune: normal)
+Default keybinding: `>` (core: normal)
+`>` (helix: select)
@@ -364,7 +367,8 @@ Deindent selected lines (including incomplete indent).
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `<` (kakoune: normal)
+Default keybinding: `<` (core: normal)
+`<` (helix: select)
@@ -374,7 +378,8 @@ Transform to lower case.
-Default keybinding: `` ` `` (kakoune: normal)
+Default keybinding: `` ` `` (core: normal)
+`` ` `` (helix: select)
@@ -385,6 +390,8 @@ Transform to upper case.
Default keybinding: `` s-` `` (kakoune: normal)
+`` a-` `` (helix: normal)
+`` a-` `` (helix: select)
@@ -395,6 +402,8 @@ Swap case.
Default keybinding: `` a-` `` (kakoune: normal)
+`` s-` `` (helix: normal)
+`` s-` `` (helix: select)
@@ -407,7 +416,7 @@ This command:
- may be repeated with a given number of repetitions.
- takes an input `input` of type `string`.
-Default keybinding: `r` (kakoune: normal)
+Default keybinding: `r` (core: normal)
@@ -422,7 +431,7 @@ before the first character of each selection.
This command:
- takes an argument `fill` of type `string`.
-Default keybinding: `&` (kakoune: normal)
+Default keybinding: `&` (core: normal)
@@ -451,9 +460,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -473,9 +482,9 @@ keep the current selections.
#### 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", { ... }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -497,7 +506,7 @@ Undo.
This command:
- does not require an active text editor.
-Default keybinding: `u` (kakoune: normal)
+Default keybinding: `u` (core: normal)
`u` (helix: select)
@@ -510,7 +519,7 @@ Redo.
This command:
- does not require an active text editor.
-Default keybinding: `s-u` (kakoune: normal)
+Default keybinding: `s-u` (core: normal)
`s-u` (helix: select)
@@ -544,10 +553,10 @@ Default keybinding: `s-a-u` (kakoune: normal)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -563,8 +572,8 @@ Repeat last edit without a command.
This command:
- may be repeated with a given number of repetitions.
-Default keybinding: `.` (kakoune: normal)
-`NumPad_Decimal` (kakoune: normal)
+Default keybinding: `.` (core: normal)
+`NumPad_Decimal` (core: normal)
@@ -776,7 +785,7 @@ current document.
This command:
- takes an input `register` of type `string | Register`.
-Default keybinding: `"` (kakoune: normal)
+Default keybinding: `"` (core: normal)
@@ -883,20 +892,20 @@ Set Dance mode.
#### 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, ... }]` |
This command:
@@ -931,11 +940,11 @@ Search for patterns and replace or add selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
@@ -944,8 +953,8 @@ This command:
- takes an argument `add` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `/` (kakoune: normal)
-`NumPad_Divide` (kakoune: normal)
+Default keybinding: `/` (core: normal)
+`NumPad_Divide` (core: normal)
@@ -954,16 +963,16 @@ Default keybinding: `/` (kakoune: normal)
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 }]` |
This command:
- accepts a register (by default, it uses `slash`).
- takes an argument `smart` of type `boolean`.
-Default keybinding: `a-*` (kakoune: normal)
-`a-NumPad_Multiply` (kakoune: normal)
+Default keybinding: `a-*` (core: normal)
+`a-NumPad_Multiply` (core: normal)
@@ -972,18 +981,18 @@ Default keybinding: `a-*` (kakoune: normal)
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, ... }]` |
This command:
- accepts a register (by default, it uses `slash`).
- may be repeated with a given number of repetitions.
- takes an argument `add` of type `boolean`.
-Default keybinding: `n` (kakoune: normal)
+Default keybinding: `n` (core: normal)
## [`seek`](../seek.ts)
@@ -1001,11 +1010,11 @@ Select to character (excluded).
| 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, ... }]` |
This command:
@@ -1013,7 +1022,7 @@ This command:
- takes an argument `include` of type `boolean`.
- takes an input `input` of type `string`.
-Default keybinding: `t` (kakoune: normal)
+Default keybinding: `t` (core: normal)
@@ -1050,15 +1059,15 @@ Select the word and following whitespaces on the right of the end of each select
| 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" , ... }]` |
This command:
@@ -1066,7 +1075,7 @@ This command:
- takes an argument `stopAtEnd` of type `boolean`.
- takes an argument `ws` of type `boolean`.
-Default keybinding: `w` (kakoune: normal)
+Default keybinding: `w` (core: normal)
@@ -1159,28 +1168,32 @@ Default keybinding: `%` (kakoune: normal)
-### [`select.vertically`](../select.ts#L31-L64)
+### [`select.vertically`](../select.ts#L31-L68)
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" }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1189,7 +1202,7 @@ This command:
-### [`select.horizontally`](../select.ts#L217-L239)
+### [`select.horizontally`](../select.ts#L221-L243)
Select horizontally.
@@ -1198,9 +1211,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", ... }]` |
This command:
@@ -1209,7 +1222,7 @@ This command:
-### [`select.to`](../select.ts#L286-L304)
+### [`select.to`](../select.ts#L290-L308)
Select to.
@@ -1220,7 +1233,7 @@ line. If no count is specified, this command will shift open the `goto` menu.
| 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", ... }]` |
This command:
@@ -1229,7 +1242,7 @@ This command:
-### [`select.line.below`](../select.ts#L314-L317)
+### [`select.line.below`](../select.ts#L318-L321)
Select line below.
@@ -1238,16 +1251,19 @@ This command:
-### [`select.line.below.extend`](../select.ts#L342-L345)
+### [`select.line.below.extend`](../select.ts#L346-L350)
Extend to line below.
This command:
- may be repeated with a given number of repetitions.
+Default keybinding: `x` (helix: normal)
+`x` (helix: select)
+
-### [`select.line.above`](../select.ts#L372-L375)
+### [`select.line.above`](../select.ts#L377-L380)
Select line above.
@@ -1256,7 +1272,7 @@ This command:
-### [`select.line.above.extend`](../select.ts#L399-L402)
+### [`select.line.above.extend`](../select.ts#L404-L407)
Extend to line above.
@@ -1265,32 +1281,32 @@ This command:
-### [`select.lineStart`](../select.ts#L448-L470)
+### [`select.lineStart`](../select.ts#L453-L475)
Select to line start.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `skipBlank` of type `boolean`.
Default keybinding: `a-h` (kakoune: normal)
-`home` (kakoune: normal)
+`home` (core: normal)
-### [`select.lineEnd`](../select.ts#L495-L517)
+### [`select.lineEnd`](../select.ts#L500-L522)
Select to line end.
@@ -1298,22 +1314,22 @@ Select to line end.
#### 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", ... }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `lineBreak` of type `boolean`.
Default keybinding: `a-l` (kakoune: normal)
-`end` (kakoune: normal)
+`end` (core: normal)
-### [`select.lastLine`](../select.ts#L545-L555)
+### [`select.lastLine`](../select.ts#L550-L560)
Select to last line.
@@ -1326,7 +1342,7 @@ Select to last line.
-### [`select.firstVisibleLine`](../select.ts#L566-L576)
+### [`select.firstVisibleLine`](../select.ts#L571-L581)
Select to first visible line.
@@ -1339,7 +1355,7 @@ Select to first visible line.
-### [`select.middleVisibleLine`](../select.ts#L583-L593)
+### [`select.middleVisibleLine`](../select.ts#L588-L598)
Select to middle visible line.
@@ -1352,7 +1368,7 @@ Select to middle visible line.
-### [`select.lastVisibleLine`](../select.ts#L600-L610)
+### [`select.lastVisibleLine`](../select.ts#L605-L615)
Select to last visible line.
@@ -1377,7 +1393,8 @@ Copy selections text.
This command:
- accepts a register (by default, it uses `dquote`).
-Default keybinding: `y` (kakoune: normal)
+Default keybinding: `y` (core: normal)
+`y` (helix: select)
@@ -1430,45 +1447,44 @@ Default keybinding: `a-z` (kakoune: normal)
-### [`selections.pipe`](../selections.ts#L241-L263)
+### [`selections.pipe`](../selections.ts#L241-L262)
Pipe selections.
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", ... }]` |
This command:
- accepts a register (by default, it uses `pipe`).
- takes an input `expression` of type `string`.
-Default keybinding: `a-|` (kakoune: normal)
+Default keybinding: `a-|` (core: normal)
+`a-|` (helix: select)
-### [`selections.filter`](../selections.ts#L291-L313)
+### [`selections.filter`](../selections.ts#L290-L311)
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" , ... }]` |
This command:
- accepts an argument of type `{ expression?: string }`.
@@ -1477,19 +1493,20 @@ This command:
- takes an argument `interactive` of type `boolean`.
- takes an argument `inverse` of type `boolean`.
-Default keybinding: `$` (kakoune: normal)
+Default keybinding: `$` (core: normal)
+`$` (helix: select)
-### [`selections.select`](../selections.ts#L346-L360)
+### [`selections.select`](../selections.ts#L344-L358)
Select within selections.
#### 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", { ... }]] }]` |
This command:
- accepts an argument of type `{ re?: string | RegExp }`.
@@ -1497,7 +1514,7 @@ This command:
-### [`selections.split`](../selections.ts#L379-L390)
+### [`selections.split`](../selections.ts#L377-L388)
Split selections.
@@ -1507,19 +1524,20 @@ This command:
- takes an argument `excludeEmpty` of type `boolean`.
- takes an argument `interactive` of type `boolean`.
-Default keybinding: `s-s` (kakoune: normal)
+Default keybinding: `s-s` (core: normal)
+`s-s` (helix: select)
-### [`selections.splitLines`](../selections.ts#L415-L431)
+### [`selections.splitLines`](../selections.ts#L413-L429)
Split selections at line boundaries.
#### 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", { ... }]] }]` |
This command:
- may be repeated with a given number of repetitions.
@@ -1527,7 +1545,7 @@ This command:
-### [`selections.expandToLines`](../selections.ts#L474-L481)
+### [`selections.expandToLines`](../selections.ts#L472-L479)
Expand to lines.
@@ -1536,10 +1554,12 @@ Expand selections to contain full lines (including end-of-line characters).
Default keybinding: `x` (kakoune: normal)
+`s-x` (helix: normal)
+`s-x` (helix: select)
-### [`selections.trimLines`](../selections.ts#L508-L515)
+### [`selections.trimLines`](../selections.ts#L506-L513)
Trim lines.
@@ -1547,11 +1567,12 @@ Trim selections to only contain full lines (from start to line break).
-Default keybinding: `a-x` (kakoune: normal)
+Default keybinding: `a-x` (core: normal)
+`a-x` (helix: select)
-### [`selections.trimWhitespace`](../selections.ts#L540-L547)
+### [`selections.trimWhitespace`](../selections.ts#L538-L545)
Trim whitespace.
@@ -1559,11 +1580,12 @@ Trim whitespace at beginning and end of selections.
-Default keybinding: `_` (kakoune: normal)
+Default keybinding: `_` (core: normal)
+`_` (helix: select)
-### [`selections.reduce`](../selections.ts#L566-L585)
+### [`selections.reduce`](../selections.ts#L564-L583)
Reduce selections to their cursor.
@@ -1579,11 +1601,12 @@ This command:
- takes an argument `empty` of type `boolean`.
- takes an argument `where` of type `"active" | "anchor" | "start" | "end" | "both"`.
-Default keybinding: `;` (kakoune: normal)
+Default keybinding: `;` (core: normal)
+`;` (helix: select)
-### [`selections.changeDirection`](../selections.ts#L647-L662)
+### [`selections.changeDirection`](../selections.ts#L645-L660)
Change direction of selections.
@@ -1597,11 +1620,12 @@ Change direction of selections.
| Backward selections | `faceBackward` | | `[".selections.changeDirection", { direction: -1 }]` |
-Default keybinding: `a-;` (kakoune: normal)
+Default keybinding: `a-;` (core: normal)
+`a-;` (helix: select)
-### [`selections.changeOrder`](../selections.ts#L687-L701)
+### [`selections.changeOrder`](../selections.ts#L685-L699)
Reverse selections.
@@ -1615,7 +1639,7 @@ Reverse selections.
-### [`selections.sort`](../selections.ts#L714-L726)
+### [`selections.sort`](../selections.ts#L712-L724)
Sort selections.
@@ -1626,7 +1650,7 @@ This command:
-### [`selections.copy`](../selections.ts#L799-L817)
+### [`selections.copy`](../selections.ts#L797-L815)
Copy selections below.
@@ -1644,7 +1668,7 @@ Default keybinding: `s-c` (kakoune: normal)
-### [`selections.merge`](../selections.ts#L851-L856)
+### [`selections.merge`](../selections.ts#L849-L854)
Merge contiguous selections.
@@ -1654,13 +1678,13 @@ Default keybinding: `a-_` (kakoune: normal)
-### [`selections.open`](../selections.ts#L860-L863)
+### [`selections.open`](../selections.ts#L858-L861)
Open selected file.
-### [`selections.toggleIndices`](../selections.ts#L876-L893)
+### [`selections.toggleIndices`](../selections.ts#L874-L891)
Toggle selection indices.
@@ -1703,38 +1727,42 @@ Default keybinding: `a-)` (kakoune: normal)
-### [`selections.rotate.contents`](../selections.rotate.ts#L28-L37)
+### [`selections.rotate.contents`](../selections.rotate.ts#L28-L39)
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
+Default keybinding: `a-)` (helix: normal)
+`a-)` (helix: select)
+
-### [`selections.rotate.selections`](../selections.rotate.ts#L45-L56)
+### [`selections.rotate.selections`](../selections.rotate.ts#L47-L58)
Rotate selections clockwise (selections only).
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 }]` |
This command:
- may be repeated with a given number of repetitions.
- takes an argument `reverse` of type `boolean`.
-Default keybinding: `)` (kakoune: normal)
+Default keybinding: `)` (core: normal)
## [`view`](../view.ts)
@@ -1742,10 +1770,10 @@ Moving the editor view.
#### Predefined keybindings
-| Title | Keybinding | Command |
-| ----------------------- | ----------------------- | ---------------------------------------------------- |
-| Show view menu | `v` (kakoune: normal) | `[".openMenu", { menu: "view", ... }]` |
-| Show view menu (locked) | `s-v` (kakoune: normal) | `[".openMenu", { menu: "view", locked: true, ... }]` |
+| Title | Keybinding | Command |
+| ----------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| Show view menu | `v` (kakoune: normal), `z` (helix: normal), `z` (helix: select) | `[".openMenu", { menu: "view", ... }]` |
+| Show view menu (locked) | `s-v` (kakoune: normal), `s-z` (helix: normal), `s-z` (helix: select) | `[".openMenu", { menu: "view", locked: true, ... }]` |
diff --git a/src/commands/misc.ts b/src/commands/misc.ts
index 1df842e2..f8d9143a 100644
--- a/src/commands/misc.ts
+++ b/src/commands/misc.ts
@@ -190,7 +190,7 @@ export async function run(
* press is awaited again and the returned register will be specific to the
* current document.
*
- * @keys `"` (kakoune: normal)
+ * @keys `"` (core: normal)
* @noreplay
*/
export async function selectRegister(
diff --git a/src/commands/modes.ts b/src/commands/modes.ts
index 8ee17d7a..2cd42c99 100644
--- a/src/commands/modes.ts
+++ b/src/commands/modes.ts
@@ -11,20 +11,20 @@ declare module "./modes";
*
* #### 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, ... }]` |
*
* @noreplay
*/
diff --git a/src/commands/search.ts b/src/commands/search.ts
index 7b251735..0aa7174c 100644
--- a/src/commands/search.ts
+++ b/src/commands/search.ts
@@ -14,13 +14,13 @@ declare module "./search";
/**
* Search.
*
- * @keys `/` (kakoune: normal), `NumPad_Divide` (kakoune: normal)
+ * @keys `/` (core: normal), `NumPad_Divide` (core: normal)
*
- * | 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", ... }]` |
*/
export async function search(
_: Context,
@@ -83,11 +83,11 @@ export async function search(
/**
* Search current selection.
*
- * @keys `a-*` (kakoune: normal), `a-NumPad_Multiply` (kakoune: normal)
+ * @keys `a-*` (core: normal), `a-NumPad_Multiply` (core: normal)
*
- * | 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 }]` |
*/
export function selection(
document: vscode.TextDocument,
@@ -151,13 +151,13 @@ export function selection(
/**
* Select next match.
*
- * @keys `n` (kakoune: normal)
+ * @keys `n` (core: normal)
*
- * | 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, ... }]` |
*/
export async function next(
_: Context,
diff --git a/src/commands/seek.ts b/src/commands/seek.ts
index 0fe8e64f..9c99dd62 100644
--- a/src/commands/seek.ts
+++ b/src/commands/seek.ts
@@ -16,18 +16,18 @@ declare module "./seek";
/**
* Select to character (excluded).
*
- * @keys `t` (kakoune: normal)
+ * @keys `t` (core: normal)
*
* #### Variants
*
* | 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, ... }]` |
*/
export async function seek(
@@ -176,22 +176,22 @@ export function enclosing(
*
* Select the word and following whitespaces on the right of the end of each selection.
*
- * @keys `w` (kakoune: normal)
+ * @keys `w` (core: normal)
*
* #### Variants
*
* | 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" , ... }]` |
*/
export function word(
diff --git a/src/commands/select.ts b/src/commands/select.ts
index 70537102..8888c65a 100644
--- a/src/commands/select.ts
+++ b/src/commands/select.ts
@@ -36,21 +36,25 @@ const preferredColumnsToken =
*
* #### 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" }]` |
*/
export function vertically(
_: Context,
@@ -224,9 +228,9 @@ export function vertically(
*
* | 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", ... }]` |
*/
export function horizontally(
@@ -293,7 +297,7 @@ export function horizontally(
*
* | 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", ... }]` |
*/
export function to(
@@ -341,6 +345,7 @@ export function line_below(_: Context, count: number) {
/**
* Extend to line below.
+ * @keys `x` (helix: normal), `x` (helix: select)
*/
export function line_below_extend(_: Context, count: number) {
if (count === 0 || count === 1) {
@@ -448,18 +453,18 @@ export function line_above_extend(_: Context, count: number) {
/**
* Select to line start.
*
- * @keys `a-h` (kakoune: normal), `home` (kakoune: normal)
+ * @keys `a-h` (kakoune: normal), `home` (core: normal)
*
* #### 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", ... }]` |
*/
export function lineStart(
_: Context,
@@ -498,15 +503,15 @@ export function lineStart(
* @param lineBreak If `true`, selects the line break in character selection
* mode.
*
- * @keys `a-l` (kakoune: normal), `end` (kakoune: normal)
+ * @keys `a-l` (kakoune: normal), `end` (core: normal)
*
* #### 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", ... }]` |
*/
export function lineEnd(
_: Context,
diff --git a/src/commands/selections.rotate.ts b/src/commands/selections.rotate.ts
index e6daf188..36b40267 100644
--- a/src/commands/selections.rotate.ts
+++ b/src/commands/selections.rotate.ts
@@ -28,11 +28,13 @@ export function both(_: Context, repetitions: number, reverse: Argument
/**
* Rotate selections clockwise (contents only).
*
+ * @keys `a-)` (helix: normal), `a-)` (helix: select)
+ *
* 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 }]` |
*/
export function contents(_: Context, repetitions: number, reverse: Argument = false) {
if (reverse) {
@@ -45,13 +47,13 @@ export function contents(_: Context, repetitions: number, reverse: Argument = false) {
if (reverse) {
diff --git a/src/commands/selections.ts b/src/commands/selections.ts
index b5994b12..9f51b78f 100644
--- a/src/commands/selections.ts
+++ b/src/commands/selections.ts
@@ -21,7 +21,7 @@ declare module "./selections";
/**
* Copy selections text.
*
- * @keys `y` (kakoune: normal)
+ * @keys `y` (core: normal), `y` (helix: select)
*/
export function saveText(
document: vscode.TextDocument,
@@ -244,17 +244,16 @@ const pipeHistory: string[] = [];
* Run the specified command or code with the contents of each selection, and
* save the result to a register.
*
- * @keys `a-|` (kakoune: normal)
- *
+ * @keys `a-|` (core: normal), `a-|` (helix: select)
* 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", ... }]` |
*/
export async function pipe(
_: Context,
@@ -291,16 +290,15 @@ const filterHistory: string[] = [];
/**
* Filter selections.
*
- * @keys `$` (kakoune: normal)
- *
+ * @keys `$` (core: normal), `$` (helix: select)
* #### 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" , ... }]` |
*/
export function filter(
_: Context,
@@ -348,9 +346,9 @@ export function filter(
*
* #### 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", { ... }]] }]` |
*/
export function select(
_: Context,
@@ -379,7 +377,7 @@ export function select(
/**
* Split selections.
*
- * @keys `s-s` (kakoune: normal)
+ * @keys `s-s` (core: normal), `s-s` (helix: select)
*/
export function split(
_: Context,
@@ -417,9 +415,9 @@ export function split(
*
* #### 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", { ... }]] }]` |
*/
export function splitLines(
_: Context,
@@ -476,7 +474,7 @@ export function splitLines(
*
* Expand selections to contain full lines (including end-of-line characters).
*
- * @keys `x` (kakoune: normal)
+ * @keys `x` (kakoune: normal), `s-x` (helix: normal), `s-x` (helix: select)
*/
export function expandToLines(_: Context) {
return Selections.updateByIndex((_i, selection, document) => {
@@ -510,7 +508,7 @@ export function expandToLines(_: Context) {
*
* Trim selections to only contain full lines (from start to line break).
*
- * @keys `a-x` (kakoune: normal)
+ * @keys `a-x` (core: normal), `a-x` (helix: select)
*/
export function trimLines(_: Context) {
return Selections.updateByIndex((_, selection) => {
@@ -542,7 +540,7 @@ export function trimLines(_: Context) {
*
* Trim whitespace at beginning and end of selections.
*
- * @keys `_` (kakoune: normal)
+ * @keys `_` (core: normal), `_` (helix: select)
*/
export function trimWhitespace(_: Context) {
const blank = getCharacters(CharSet.Blank, _.document),
@@ -569,7 +567,7 @@ export function trimWhitespace(_: Context) {
* @param where Which edge each selection should be reduced to; defaults to
* "active".
*
- * @keys `;` (kakoune: normal)
+ * @keys `;` (core: normal), `;` (helix: select)
*
* #### Variant
*
@@ -650,7 +648,7 @@ export function reduce(
* @param direction If unspecified, flips each direction. Otherwise, ensures
* that all selections face the given direction.
*
- * @keys `a-;` (kakoune: normal)
+ * @keys `a-;` (core: normal), `a-;` (helix: select)
*
* #### Variants
*
diff --git a/src/commands/view.ts b/src/commands/view.ts
index 26b23200..2bccc51b 100644
--- a/src/commands/view.ts
+++ b/src/commands/view.ts
@@ -8,10 +8,10 @@ import { Context, Selections } from "../api";
*
* #### Predefined keybindings
*
- * | Title | Keybinding | Command |
- * | ----------------------- | ----------------------- | ---------------------------------------------------- |
- * | Show view menu | `v` (kakoune: normal) | `[".openMenu", { menu: "view", ... }]` |
- * | Show view menu (locked) | `s-v` (kakoune: normal) | `[".openMenu", { menu: "view", locked: true, ... }]` |
+ * | Title | Keybinding | Command |
+ * | ----------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+ * | Show view menu | `v` (kakoune: normal), `z` (helix: normal), `z` (helix: select) | `[".openMenu", { menu: "view", ... }]` |
+ * | Show view menu (locked) | `s-v` (kakoune: normal), `s-z` (helix: normal), `s-z` (helix: select) | `[".openMenu", { menu: "view", locked: true, ... }]` |
*/
declare module "./view";
diff --git a/src/state/extension.ts b/src/state/extension.ts
index 6085d262..821c374d 100644
--- a/src/state/extension.ts
+++ b/src/state/extension.ts
@@ -35,6 +35,11 @@ export class Extension implements vscode.Disposable {
return this._gotoMenus as ReadonlyMap;
}
+ private _behavior = "";
+ public get behavior() {
+ return this._behavior;
+ }
+
// State.
// ==========================================================================
@@ -168,6 +173,15 @@ export class Extension implements vscode.Disposable {
true,
);
+ this.observePreference(
+ ".behavior",
+ (value, _validator, _inspect) => {
+ this._behavior = value;
+ vscode.commands.executeCommand("setContext", "dance.behavior", this._behavior);
+ },
+ true,
+ );
+
this._subscriptions.push(
// Update configuration automatically.
vscode.workspace.onDidChangeConfiguration((e) => {