diff --git a/package.json b/package.json index 6ddcb7d..44c1f3e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dancehelix", "description": "Fork of Dance with helix keybindings (Unfinished)", - "version": "0.5.15", + "version": "0.5.13", "license": "ISC", "author": { "name": "Leo", @@ -29,7 +29,7 @@ "test": "yarn run compile && node ./out/test/run.js", "package": "vsce package --allow-star-activation", "publish": "vsce publish --allow-star-activation", - "publish:pre": "vsce publish --allow-star-activation --pre-release --no-git-tag-version --no-update-package-json 0.5.12001" + "publish:pre": "vsce publish --allow-star-activation --pre-release --no-git-tag-version --no-update-package-json 0.5.13001" }, "devDependencies": { "@types/glob": "^7.2.0", @@ -1781,6 +1781,11 @@ "title": "Extend to line above", "category": "Dance" }, + { + "command": "dance.select.line.below", + "title": "Select line below", + "category": "Dance" + }, { "command": "dance.select.line.below.extend", "title": "Extend to line below", @@ -2648,6 +2653,10 @@ "command": "dance.select.line.above.extend", "when": "dance.mode == 'normal'" }, + { + "command": "dance.select.line.below", + "when": "dance.mode == 'normal'" + }, { "command": "dance.select.line.below.extend", "when": "dance.mode == 'normal'" @@ -3063,18 +3072,6 @@ "title": "Join lines and select inserted separators", "command": "dance.edit.join.select" }, - { - "key": "Shift+Alt+O", - "when": "editorTextFocus && dance.mode == 'normal'", - "title": "Insert new line above each selection", - "command": "dance.edit.newLine.above" - }, - { - "key": "Shift+Alt+O", - "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Insert new line above each selection", - "command": "dance.edit.newLine.above" - }, { "key": "Shift+O", "when": "editorTextFocus && dance.mode == 'normal'", @@ -3087,18 +3084,6 @@ "title": "Insert new line above and switch to insert", "command": "dance.edit.newLine.above.insert" }, - { - "key": "Alt+O", - "when": "editorTextFocus && dance.mode == 'normal'", - "title": "Insert new line below each selection", - "command": "dance.edit.newLine.below" - }, - { - "key": "Alt+O", - "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Insert new line below each selection", - "command": "dance.edit.newLine.below" - }, { "key": "O", "when": "editorTextFocus && dance.mode == 'normal'", @@ -3114,23 +3099,11 @@ { "key": "P", "when": "editorTextFocus && dance.mode == 'normal'", - "title": "Paste after", - "command": "dance.edit.paste.after" - }, - { - "key": "P", - "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Paste after", - "command": "dance.edit.paste.after" - }, - { - "key": "Alt+P", - "when": "editorTextFocus && dance.mode == 'normal'", "title": "Paste after and select", "command": "dance.edit.paste.after.select" }, { - "key": "Alt+P", + "key": "P", "when": "editorTextFocus && dance.mode == 'visual'", "title": "Paste after and select", "command": "dance.edit.paste.after.select" @@ -3141,6 +3114,12 @@ "title": "Paste before and select", "command": "dance.edit.paste.before.select" }, + { + "key": "Shift+P", + "when": "editorTextFocus && dance.mode == 'visual'", + "title": "Paste before and select", + "command": "dance.edit.paste.before.select" + }, { "key": "Alt+P", "when": "editorTextFocus && dance.mode == 'normal'", @@ -3148,10 +3127,10 @@ "command": "dance.edit.pasteAll.after.select" }, { - "key": "Shift+P", + "key": "Alt+P", "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Paste before", - "command": "dance.edit.paste.before" + "title": "Paste all after and select", + "command": "dance.edit.pasteAll.after.select" }, { "key": "Shift+Alt+P", @@ -3162,8 +3141,8 @@ { "key": "Shift+Alt+P", "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Paste before and select", - "command": "dance.edit.paste.before.select" + "title": "Paste all before and select", + "command": "dance.edit.pasteAll.before.select" }, { "key": "R", @@ -3185,13 +3164,7 @@ }, { "key": "Ctrl+R", - "when": "editorTextFocus && dance.mode == 'insert'", - "title": "Pick register and replace", - "command": "dance.edit.selectRegister-insert" - }, - { - "key": "Ctrl+R", - "when": "editorTextFocus && dance.mode == 'insert'", + "when": "editorTextFocus && dance.mode == 'visual'", "title": "Pick register and replace", "command": "dance.edit.selectRegister-insert" }, @@ -4221,6 +4194,12 @@ "title": "Select whole buffer", "command": "dance.select.buffer" }, + { + "key": "Shift+J", + "when": "editorTextFocus && dance.mode == 'normal'", + "title": "Extend down", + "command": "dance.select.down.extend" + }, { "key": "Shift+Down", "when": "editorTextFocus && dance.mode == 'normal'", @@ -4389,6 +4368,12 @@ "title": "Go to", "command": "dance.select.to.jump" }, + { + "key": "Shift+K", + "when": "editorTextFocus && dance.mode == 'normal'", + "title": "Extend up", + "command": "dance.select.up.extend" + }, { "key": "Shift+Up", "when": "editorTextFocus && dance.mode == 'normal'", @@ -4552,15 +4537,12 @@ "command": "dance.selections.clear.main" }, { -<<<<<<< HEAD -======= "key": "Alt+,", "when": "editorTextFocus && dance.mode == 'visual'", "title": "Clear main selections", "command": "dance.selections.clear.main" }, { ->>>>>>> 03ae8e0 (fix x and ,/;) "key": ",", "when": "editorTextFocus && dance.mode == 'normal'", "title": "Clear secondary selections", @@ -4591,8 +4573,8 @@ "command": "dance.selections.copy.above" }, { - "key": "X", - "when": "editorTextFocus && dance.mode == 'normal'", + "key": "Shift+Alt+C", + "when": "editorTextFocus && dance.mode == 'visual'", "title": "Copy selections above", "command": "dance.selections.copy.above" }, @@ -4746,8 +4728,8 @@ { "key": "S", "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Select within selections", - "command": "dance.selections.select" + "title": "Leap or select", + "command": "dance.selections.select.orLeap" }, { "key": "Shift+S", @@ -4770,8 +4752,8 @@ { "key": "Alt+S", "when": "editorTextFocus && dance.mode == 'visual'", - "title": "Split selections at line boundaries", - "command": "dance.selections.splitLines" + "title": "Leap or select backward", + "command": "dance.selections.splitLines.orLeap.backward" }, { "key": "Enter", @@ -4779,6 +4761,12 @@ "title": "Toggle selection indices", "command": "dance.selections.toggleIndices" }, + { + "key": "Enter", + "when": "editorTextFocus && dance.mode == 'visual'", + "title": "Toggle selection indices", + "command": "dance.selections.toggleIndices" + }, { "key": "Alt+X", "when": "editorTextFocus && dance.mode == 'normal'", @@ -4914,7 +4902,17 @@ }, { "command": "dance.ignore", - "key": "Shift+X", + "key": "Shift+H", + "when": "editorTextFocus && dance.mode == 'normal'" + }, + { + "command": "dance.ignore", + "key": "Shift+L", + "when": "editorTextFocus && dance.mode == 'normal'" + }, + { + "command": "dance.ignore", + "key": "Shift+V", "when": "editorTextFocus && dance.mode == 'normal'" }, { @@ -4952,11 +4950,6 @@ "key": "=", "when": "editorTextFocus && dance.mode == 'normal'" }, - { - "command": "dance.ignore", - "key": "Space", - "when": "editorTextFocus && dance.mode == 'normal'" - }, { "command": "dance.ignore", "key": "NumPad_Add", @@ -5039,12 +5032,7 @@ }, { "command": "dance.ignore", - "key": "Shift+=", - "when": "editorTextFocus && dance.mode == 'visual'" - }, - { - "command": "dance.ignore", - "key": "Shift+Space", + "key": "=", "when": "editorTextFocus && dance.mode == 'visual'" }, { @@ -5057,6 +5045,26 @@ "key": "NumPad_Subtract", "when": "editorTextFocus && dance.mode == 'visual'" }, + { + "command": "dance.ignore", + "key": "Shift+=", + "when": "editorTextFocus && dance.mode == 'visual'" + }, + { + "command": "dance.ignore", + "key": "Shift+Space", + "when": "editorTextFocus && dance.mode == 'visual'" + }, + { + "command": "dance.ignore", + "key": "Shift+NumPad_Add", + "when": "editorTextFocus && dance.mode == 'visual'" + }, + { + "command": "dance.ignore", + "key": "Shift+NumPad_Subtract", + "when": "editorTextFocus && dance.mode == 'visual'" + }, { "command": "-lineBreakInsert", "key": "Ctrl+O", diff --git a/src/api/data/commands.yaml b/src/api/data/commands.yaml index a86f485..ab4ab9f 100644 --- a/src/api/data/commands.yaml +++ b/src/api/data/commands.yaml @@ -48,7 +48,8 @@ edit.align: keys: qwerty: |- - `&` (kakoune: normal) + `&` (helix: normal) + `&` (helix: visual) doc: en: |+ @@ -63,7 +64,8 @@ edit.case.swap: keys: qwerty: |- - `` a-` `` (kakoune: normal) + `~` (helix: normal) + `~` (helix: visual) doc: en: |+ @@ -75,7 +77,8 @@ edit.case.toLower: keys: qwerty: |- - `` ` `` (kakoune: normal) + `` ` `` (helix: normal) + `` ` `` (helix: visual) doc: en: |+ @@ -87,7 +90,8 @@ edit.case.toUpper: keys: qwerty: |- - `` s-` `` (kakoune: normal) + `` a-` `` (helix: normal) + `` a-` `` (helix: visual) doc: en: |+ @@ -99,7 +103,8 @@ edit.copyIndentation: keys: qwerty: |- - `a-&` (kakoune: normal) + `a-&` (helix: normal) + `a-&` (helix: visual) doc: en: |+ @@ -114,7 +119,8 @@ edit.deindent: keys: qwerty: |- - `a-<` (kakoune: normal) + `a-<` (helix: normal) + `a-<` (helix: visual) doc: en: |+ @@ -126,7 +132,8 @@ edit.deindent.withIncomplete: keys: qwerty: |- - `<` (kakoune: normal) + `<` (helix: normal) + `<` (helix: visual) doc: en: |+ @@ -141,7 +148,7 @@ edit.delete: keys: qwerty: |- - `a-d` (kakoune: normal) + `a-d` (helix: normal) , `a-d` (helix: visual) edit.delete-insert: title: @@ -152,7 +159,7 @@ edit.delete-insert: keys: qwerty: |- - `a-c` (kakoune: normal) + `a-c` (helix: normal) , `a-c` (helix: visual) edit.indent: title: @@ -160,7 +167,8 @@ edit.indent: keys: qwerty: |- - `>` (kakoune: normal) + `>` (helix: normal) + `>` (helix: visual) doc: en: |+ @@ -172,7 +180,8 @@ edit.indent.withEmpty: keys: qwerty: |- - `a->` (kakoune: normal) + `a->` (helix: normal) + `a->` (helix: visual) doc: en: |+ @@ -203,22 +212,22 @@ edit.insert: #### Additional commands - | 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 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 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) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | - | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (kakoune: normal) | `[".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", ... }]` | + | Title | Identifier | Keybinding | Commands | + | ---------------------------------- | ------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | + | Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual) | `[".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` (helix: normal), `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | + | Paste after and select | `paste.after.select` | `p` (helix: normal) , `p` (helix: visual) | `[".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` (helix: normal), `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | + | Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) , `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | + | Delete | `delete` | `a-d` (helix: normal) , `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | + | Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) , `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | + | Copy and delete | `yank-delete` | `d` (helix: normal) , `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | + | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) , `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | + | Copy and replace | `yank-replace` | `s-r` (helix: normal) , `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | edit.join: title: @@ -226,7 +235,8 @@ edit.join: keys: qwerty: |- - `a-j` (kakoune: normal) + `s-j` (helix: normal) + `s-j` (helix: visual) doc: en: |+ @@ -248,10 +258,6 @@ edit.newLine.above: title: en: Insert new line above each selection - keys: - qwerty: |- - `s-a-o` (kakoune: normal) - doc: en: | Insert new line above each selection. @@ -262,9 +268,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` (helix: normal), `s-o` (helix: visual) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | edit.newLine.above.insert: title: @@ -275,16 +281,13 @@ edit.newLine.above.insert: keys: qwerty: |- - `s-o` (kakoune: normal) + `s-o` (helix: normal) + `s-o` (helix: visual) edit.newLine.below: title: en: Insert new line below each selection - keys: - qwerty: |- - `a-o` (kakoune: normal) - doc: en: | Insert new line below each selection. @@ -295,9 +298,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` (helix: normal), `o` (helix: visual) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | edit.newLine.below.insert: title: @@ -308,7 +311,8 @@ edit.newLine.below.insert: keys: qwerty: |- - `o` (kakoune: normal) + `o` (helix: normal) + `o` (helix: visual) edit.paste.after: title: @@ -329,7 +333,7 @@ edit.paste.after.select: keys: qwerty: |- - `p` (kakoune: normal) + `p` (helix: normal) , `p` (helix: visual) edit.paste.before: title: @@ -350,7 +354,8 @@ edit.paste.before.select: keys: qwerty: |- - `s-p` (kakoune: normal) + `s-p` (helix: normal) + `s-p` (helix: visual) edit.pasteAll.after: title: @@ -371,7 +376,7 @@ edit.pasteAll.after.select: keys: qwerty: |- - `a-p` (kakoune: normal) + `a-p` (helix: normal) , `a-p` (helix: visual) edit.pasteAll.before: title: @@ -392,7 +397,8 @@ edit.pasteAll.before.select: keys: qwerty: |- - `s-a-p` (kakoune: normal) + `s-a-p` (helix: normal) + `s-a-p` (helix: visual) edit.replaceCharacters: title: @@ -400,7 +406,8 @@ edit.replaceCharacters: keys: qwerty: |- - `r` (kakoune: normal) + `r` (helix: normal) + `r` (helix: visual) doc: en: |+ @@ -415,8 +422,8 @@ edit.selectRegister-insert: keys: qwerty: |- - `c-r` (kakoune: normal) - `c-r` (kakoune: insert) + `c-r` (helix: normal) + `c-r` (helix: visual) edit.yank-delete: title: @@ -427,7 +434,7 @@ edit.yank-delete: keys: qwerty: |- - `d` (kakoune: normal) + `d` (helix: normal) , `d` (helix: visual) edit.yank-delete-insert: title: @@ -438,7 +445,7 @@ edit.yank-delete-insert: keys: qwerty: |- - `c` (kakoune: normal) + `c` (helix: normal) , `c` (helix: visual) edit.yank-replace: title: @@ -449,7 +456,7 @@ edit.yank-replace: keys: qwerty: |- - `s-r` (kakoune: normal) + `s-r` (helix: normal) , `s-r` (helix: visual) history.recording.play: title: @@ -457,7 +464,8 @@ history.recording.play: keys: qwerty: |- - `q` (kakoune: normal) + `q` (helix: normal) + `q` (helix: visual) doc: en: |+ @@ -469,7 +477,7 @@ history.recording.start: keys: qwerty: |- - `s-q` (kakoune: normal, !recording) + `s-q` (helix: normal, !recording) , `s-q` (helix: visual, !recording) doc: en: |+ @@ -481,8 +489,7 @@ history.recording.stop: keys: qwerty: |- - `escape` (kakoune: normal, recording) - `s-q` (kakoune: normal, recording) + `escape` (helix: normal, recording) , `s-q` (helix: normal, recording) , `escape` (helix: visual, recording) , `s-q` (helix: visual, recording) doc: en: |+ @@ -494,7 +501,8 @@ history.redo: keys: qwerty: |- - `s-u` (kakoune: normal) + `s-u` (helix: normal) + `s-u` (helix: visual) doc: en: |+ @@ -532,8 +540,7 @@ history.repeat.edit: keys: qwerty: |- - `.` (kakoune: normal) - `NumPad_Decimal` (kakoune: normal) + `.` (helix: normal) , `NumPad_Decimal` (helix: normal) , `.` (helix: visual) , `NumPad_Decimal` (helix: visual) doc: en: |+ @@ -566,7 +573,8 @@ history.undo: keys: qwerty: |- - `u` (kakoune: normal) + `u` (helix: normal) + `u` (helix: visual) doc: en: |+ @@ -611,6 +619,30 @@ keybindings.setup: en: | Set up Dance keybindings. +match.surround: + title: + en: Add stuff surround + + doc: + en: |+ + Add stuff surround + +match.surrounddelete: + title: + en: Delete stuff surround + + doc: + en: |+ + Delete stuff surround + +match.surroundreplace: + title: + en: Replace stuff surround + + doc: + en: |+ + Replace stuff surround + modes.insert.after: title: en: Insert after @@ -620,7 +652,8 @@ modes.insert.after: keys: qwerty: |- - `a` (kakoune: normal) + `a` (helix: normal) + `a` (helix: visual) modes.insert.before: title: @@ -631,7 +664,8 @@ modes.insert.before: keys: qwerty: |- - `i` (kakoune: normal) + `i` (helix: normal) + `i` (helix: visual) modes.insert.lineEnd: title: @@ -642,7 +676,8 @@ modes.insert.lineEnd: keys: qwerty: |- - `s-a` (kakoune: normal) + `s-a` (helix: normal) + `s-a` (helix: visual) modes.insert.lineStart: title: @@ -653,7 +688,8 @@ modes.insert.lineStart: keys: qwerty: |- - `s-i` (kakoune: normal) + `s-i` (helix: normal) + `s-i` (helix: visual) modes.set: title: @@ -665,19 +701,20 @@ modes.set: #### Variants - | Title | Identifier | Keybinding | Command | - | ------------------ | ------------ | -------------------------- | ----------------------------------------------------------- | - | Set mode to Normal | `set.normal` | `escape` (kakoune: insert) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | - | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | + | Title | Identifier | Keybinding | Command | + | ------------------ | ------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------- | + | Set mode to Normal | `set.normal` | `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | + | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | + | Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | 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` (helix: normal), `i` (helix: visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | + | Insert after | `insert.after` | `a` (helix: normal), `a` (helix: visual) | `[".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` (helix: normal), `s-i` (helix: visual) | `[".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` (helix: normal), `s-a` (helix: visual) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | modes.set.insert: title: @@ -698,7 +735,7 @@ modes.set.normal: keys: qwerty: |- - `escape` (kakoune: insert) + `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) modes.set.temporarily: title: @@ -737,6 +774,17 @@ modes.set.temporarily.normal: qwerty: |- `c-v` (kakoune: insert) +modes.set.visual: + title: + en: Set mode to Visual + + commands: |- + [".modes.set", { mode: "visual" }] + + keys: + qwerty: |- + `v` (helix: normal) + openMenu: title: en: Open menu @@ -863,19 +911,18 @@ search: keys: qwerty: |- - `/` (kakoune: normal) - `NumPad_Divide` (kakoune: normal) + `/` (helix: normal) , `NumPad_Divide` (helix: normal) , `/` (helix: visual) , `NumPad_Divide` (helix: visual) 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` | `a-/` (helix: normal) | `[".search", { shift: "extend", ... }]` | + | Search backward | `backward` | `?` (helix: normal) | `[".search", { direction: -1 , ... }]` | + | Search backward (extend) | `backward.extend` | `a-?` (helix: normal) | `[".search", { direction: -1, shift: "extend", ... }]` | search.backward: title: @@ -886,7 +933,7 @@ search.backward: keys: qwerty: |- - `a-/` (kakoune: normal) + `?` (helix: normal) search.backward.extend: title: @@ -897,7 +944,7 @@ search.backward.extend: keys: qwerty: |- - `a-?` (kakoune: normal) + `a-?` (helix: normal) search.extend: title: @@ -908,7 +955,7 @@ search.extend: keys: qwerty: |- - `?` (kakoune: normal) + `a-/` (helix: normal) search.next: title: @@ -916,18 +963,18 @@ search.next: keys: qwerty: |- - `n` (kakoune: normal) + `n` (helix: 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` | `a-n` (helix: normal), `n` (helix: visual) | `[".search.next", { add: true, ... }]` | + | Select previous match | `previous` | `s-n` (helix: normal) | `[".search.next", { direction: -1 , ... }]` | + | Add previous match | `previous.add` | `s-a-n` (helix: normal), `s-n` (helix: visual) | `[".search.next", { direction: -1, add: true, ... }]` | search.next.add: title: @@ -938,7 +985,8 @@ search.next.add: keys: qwerty: |- - `s-n` (kakoune: normal) + `a-n` (helix: normal) + `n` (helix: visual) search.previous: title: @@ -949,7 +997,7 @@ search.previous: keys: qwerty: |- - `a-n` (kakoune: normal) + `s-n` (helix: normal) search.previous.add: title: @@ -960,7 +1008,8 @@ search.previous.add: keys: qwerty: |- - `s-a-n` (kakoune: normal) + `s-a-n` (helix: normal) + `s-n` (helix: visual) search.selection: title: @@ -968,17 +1017,16 @@ search.selection: keys: qwerty: |- - `a-*` (kakoune: normal) - `a-NumPad_Multiply` (kakoune: normal) + `a-*` (helix: normal) , `a-NumPad_Multiply` (helix: 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` | `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) | `[".search.selection", { smart: true, +register }]` | search.selection.smart: title: @@ -989,8 +1037,7 @@ search.selection.smart: keys: qwerty: |- - `*` (kakoune: normal) - `NumPad_Multiply` (kakoune: normal) + `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) seek: title: @@ -1007,15 +1054,15 @@ seek: #### Variants - | Title | Identifier | Keybinding | Command | - | ---------------------------------------- | -------------------------- | ------------------------- | ------------------------------------------------------------------- | - | Extend to character (excluded) | `extend` | `s-t` (kakoune: normal) | `[".seek", { shift: "extend" , ... }]` | - | Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal) | `[".seek", { direction: -1, ... }]` | - | Extend to character (excluded, backward) | `extend.backward` | `s-a-t` (kakoune: normal) | `[".seek", { shift: "extend", direction: -1, ... }]` | - | Select to character (included) | `included` | `f` (kakoune: normal) | `[".seek", { include: true , ... }]` | - | Extend to character (included) | `included.extend` | `s-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend" , ... }]` | - | Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal) | `[".seek", { include: true, direction: -1, ... }]` | - | Extend to character (included, backward) | `included.extend.backward` | `s-a-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | + | Title | Identifier | Keybinding | Command | + | ---------------------------------------- | -------------------------- | ----------------------- | ------------------------------------------------------------------- | + | Select to character (excluded, backward) | `backward` | `s-t` (helix: normal) | `[".seek", { direction: -1, ... }]` | + | Select to character (included) | `included` | `f` (helix: normal) | `[".seek", { include: true , ... }]` | + | Select to character (included, backward) | `included.backward` | `s-f` (helix: normal) | `[".seek", { include: true, direction: -1, ... }]` | + | Extend to character (excluded) | `extend` | `t` (helix: visual) | `[".seek", { shift: "extend" , ... }]` | + | Extend to character (excluded, backward) | `extend.backward` | `s-t` (helix: visual) | `[".seek", { shift: "extend", direction: -1, ... }]` | + | Extend to character (included) | `included.extend` | `f` (helix: visual) | `[".seek", { include: true, shift: "extend" , ... }]` | + | Extend to character (included, backward) | `included.extend.backward` | `s-f` (helix: visual) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | seek.askObject: title: @@ -1138,7 +1185,7 @@ seek.backward: keys: qwerty: |- - `a-t` (kakoune: normal) + `s-t` (helix: normal) seek.enclosing: title: @@ -1146,7 +1193,7 @@ seek.enclosing: keys: qwerty: |- - `m` (kakoune: normal) + `s-m` (helix: normal) doc: en: | @@ -1155,11 +1202,11 @@ seek.enclosing: #### Variants - | Title | Identifier | Keybinding | Command | - | -------------------------------------- | --------------------------- | ------------------------- | -------------------------------------------------------------- | - | Extend to next enclosing character | `enclosing.extend` | `s-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend" , ... }]` | - | Select to previous enclosing character | `enclosing.backward` | `a-m` (kakoune: normal) | `[".seek.enclosing", { direction: -1, ... }]` | - | Extend to previous enclosing character | `enclosing.extend.backward` | `s-a-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | + | Title | Identifier | Keybinding | Command | + | -------------------------------------- | --------------------------- | --------------------- | -------------------------------------------------------------- | + | Extend to next enclosing character | `enclosing.extend` | `s-m` (helix: visual) | `[".seek.enclosing", { shift: "extend" , ... }]` | + | Select to previous enclosing character | `enclosing.backward` | `a-m` (helix: normal) | `[".seek.enclosing", { direction: -1, ... }]` | + | Extend to previous enclosing character | `enclosing.extend.backward` | `a-m` (helix: visual) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | seek.enclosing.backward: title: @@ -1170,7 +1217,7 @@ seek.enclosing.backward: keys: qwerty: |- - `a-m` (kakoune: normal) + `a-m` (helix: normal) seek.enclosing.extend: title: @@ -1181,7 +1228,7 @@ seek.enclosing.extend: keys: qwerty: |- - `s-m` (kakoune: normal) + `s-m` (helix: visual) seek.enclosing.extend.backward: title: @@ -1192,7 +1239,7 @@ seek.enclosing.extend.backward: keys: qwerty: |- - `s-a-m` (kakoune: normal) + `a-m` (helix: visual) seek.extend: title: @@ -1203,7 +1250,7 @@ seek.extend: keys: qwerty: |- - `s-t` (kakoune: normal) + `t` (helix: visual) seek.extend.backward: title: @@ -1214,7 +1261,7 @@ seek.extend.backward: keys: qwerty: |- - `s-a-t` (kakoune: normal) + `s-t` (helix: visual) seek.included: title: @@ -1225,7 +1272,7 @@ seek.included: keys: qwerty: |- - `f` (kakoune: normal) + `f` (helix: normal) seek.included.backward: title: @@ -1236,7 +1283,7 @@ seek.included.backward: keys: qwerty: |- - `a-f` (kakoune: normal) + `s-f` (helix: normal) seek.included.extend: title: @@ -1247,7 +1294,7 @@ seek.included.extend: keys: qwerty: |- - `s-f` (kakoune: normal) + `f` (helix: visual) seek.included.extend.backward: title: @@ -1258,7 +1305,7 @@ seek.included.extend.backward: keys: qwerty: |- - `s-a-f` (kakoune: normal) + `s-f` (helix: visual) seek.leap: title: @@ -1326,7 +1373,7 @@ seek.word: keys: qwerty: |- - `w` (kakoune: normal) + `w` (helix: normal) doc: en: | @@ -1337,19 +1384,19 @@ seek.word: #### Variants - | Title | Identifier | Keybinding | Command | - | -------------------------------------------- | ------------------------- | ------------------------- | ------------------------------------------------------------------------------------- | - | Extend to next word start | `word.extend` | `s-w` (kakoune: normal) | `[".seek.word", { shift: "extend" , ... }]` | - | Select to previous word start | `word.backward` | `b` (kakoune: normal) | `[".seek.word", { direction: -1, ... }]` | - | Extend to previous word start | `word.extend.backward` | `s-b` (kakoune: normal) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | - | Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal) | `[".seek.word", { ws: true , ... }]` | - | Extend to next non-whitespace word start | `word.ws.extend` | `s-a-w` (kakoune: normal) | `[".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, ... }]` | - | Extend to previous non-whitespace word start | `word.ws.extend.backward` | `s-a-b` (kakoune: normal) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | - | Select to next word end | `wordEnd` | `e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | - | Extend to next word end | `wordEnd.extend` | `s-e` (kakoune: normal) | `[".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 , ... }]` | - | Extend to next non-whitespace word end | `wordEnd.ws.extend` | `s-a-e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , ... }]` | + | Title | Identifier | Keybinding | Command | + | -------------------------------------------- | ------------------------- | ----------------------- | ------------------------------------------------------------------------------------ | + | Select to next WORD start | `word.ws` | `s-w` (helix: normal) | `[".seek.word", { ws: true , ... }]` | + | Select to previous word start | `word.backward` | `b` (helix: normal) | `[".seek.word", { direction: -1, ... }]` | + | Select to previous WORD start | `word.ws.backward` | `s-b` (helix: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | + | Select to next word end | `wordEnd` | `e` (helix: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | + | Select to next WORD end | `wordEnd.ws` | `s-e` (helix: normal) | `[".seek.word", { stopAtEnd: true, ws: true , ... }]` | + | Extend to next word start | `word.extend` | `w` (helix: visual) | `[".seek.word", { shift: "extend" , ... }]` | + | Extend to next WORD start | `word.ws.extend` | `s-w` (helix: visual) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | + | Extend to previous word start | `word.backward.extend` | `b` (helix: visual) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | + | Extend to previous WORD start | `word.ws.backward.extend` | `s-b` (helix: visual) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | + | Extend to next word end | `wordEnd.extend` | `e` (helix: visual) | `[".seek.word", { stopAtEnd: true, shift: "extend" , ... }]` | + | Extend to next WORD end | `wordEnd.ws.extend` | `s-e` (helix: visual) | `[".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , ... }]` | seek.word.backward: title: @@ -1360,7 +1407,18 @@ seek.word.backward: keys: qwerty: |- - `b` (kakoune: normal) + `b` (helix: normal) + +seek.word.backward.extend: + title: + en: Extend to previous word start + + commands: |- + [".seek.word", { shift: "extend", direction: -1, $exclude: [] }] + + keys: + qwerty: |- + `b` (helix: visual) seek.word.extend: title: @@ -1371,62 +1429,51 @@ seek.word.extend: keys: qwerty: |- - `s-w` (kakoune: normal) - -seek.word.extend.backward: - title: - en: Extend to previous word start - - commands: |- - [".seek.word", { shift: "extend", direction: -1, $exclude: [] }] - - keys: - qwerty: |- - `s-b` (kakoune: normal) + `w` (helix: visual) seek.word.ws: title: - en: Select to next non-whitespace word start + en: Select to next WORD start commands: |- [".seek.word", { ws: true , $exclude: [] }] keys: qwerty: |- - `a-w` (kakoune: normal) + `s-w` (helix: normal) seek.word.ws.backward: title: - en: Select to previous non-whitespace word start + en: Select to previous WORD start commands: |- [".seek.word", { ws: true, direction: -1, $exclude: [] }] keys: qwerty: |- - `a-b` (kakoune: normal) + `s-b` (helix: normal) -seek.word.ws.extend: +seek.word.ws.backward.extend: title: - en: Extend to next non-whitespace word start - - commands: |- - [".seek.word", { ws: true, shift: "extend" , $exclude: [] }] - - keys: - qwerty: |- - `s-a-w` (kakoune: normal) - -seek.word.ws.extend.backward: - title: - en: Extend to previous non-whitespace word start + en: Extend to previous WORD start commands: |- [".seek.word", { ws: true, shift: "extend", direction: -1, $exclude: [] }] keys: qwerty: |- - `s-a-b` (kakoune: normal) + `s-b` (helix: visual) + +seek.word.ws.extend: + title: + en: Extend to next WORD start + + commands: |- + [".seek.word", { ws: true, shift: "extend" , $exclude: [] }] + + keys: + qwerty: |- + `s-w` (helix: visual) seek.wordEnd: title: @@ -1437,40 +1484,40 @@ seek.wordEnd: keys: qwerty: |- - `e` (kakoune: normal) + `e` (helix: normal) seek.wordEnd.extend: title: en: Extend to next word end commands: |- - [".seek.word", { stopAtEnd: true , shift: "extend" , $exclude: [] }] + [".seek.word", { stopAtEnd: true, shift: "extend" , $exclude: [] }] keys: qwerty: |- - `s-e` (kakoune: normal) + `e` (helix: visual) seek.wordEnd.ws: title: - en: Select to next non-whitespace word end + en: Select to next WORD end commands: |- - [".seek.word", { stopAtEnd: true , ws: true , $exclude: [] }] + [".seek.word", { stopAtEnd: true, ws: true , $exclude: [] }] keys: qwerty: |- - `a-e` (kakoune: normal) + `s-e` (helix: normal) seek.wordEnd.ws.extend: title: - en: Extend to next non-whitespace word end + en: Extend to next WORD end commands: |- - [".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , $exclude: [] }] + [".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , $exclude: [] }] keys: qwerty: |- - `s-a-e` (kakoune: normal) + `s-e` (helix: visual) select.buffer: title: @@ -1478,7 +1525,8 @@ select.buffer: keys: qwerty: |- - `%` (kakoune: normal) + `%` (helix: normal) + `%` (helix: visual) doc: en: |+ @@ -1513,8 +1561,8 @@ select.down.extend: keys: qwerty: |- - `s-j` (kakoune: normal) - `s-down` (kakoune: normal) + `s-j` (helix: normal) + `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) select.down.jump: title: @@ -1525,7 +1573,7 @@ select.down.jump: keys: qwerty: |- - `j` (kakoune: normal) , `down` (kakoune: normal) + `j` (helix: normal) , `down` (helix: normal) select.firstLine.extend: title: @@ -1585,14 +1633,16 @@ select.horizontally: Select horizontally. + TODO: keep s-left and s-right? + #### Variants - | Title | Identifier | Keybinding | Command | - | ------------ | -------------- | ---------------------------------------------------- | ------------------------------------------------------------------- | - | Jump right | `right.jump` | `l` (kakoune: normal) , `right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | - | Extend right | `right.extend` | `s-l` (kakoune: normal), `s-right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | - | Jump left | `left.jump` | `h` (kakoune: normal) , `left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | - | Extend left | `left.extend` | `s-h` (kakoune: normal), `s-left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | ------------ | -------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | + | Jump right | `right.jump` | `l` (helix: normal) , `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | + | Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual) , `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | + | Jump left | `left.jump` | `h` (helix: normal) , `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | + | Extend left | `left.extend` | `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | select.lastLine: title: @@ -1661,8 +1711,7 @@ select.left.extend: keys: qwerty: |- - `s-h` (kakoune: normal) - `s-left` (kakoune: normal) + `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) select.left.jump: title: @@ -1673,7 +1722,7 @@ select.left.jump: keys: qwerty: |- - `h` (kakoune: normal) , `left` (kakoune: normal) + `h` (helix: normal) , `left` (helix: normal) select.line.above: title: @@ -1704,12 +1753,17 @@ select.line.below.extend: en: Extend to line below doc: - en: | + en: |+ Extend to line below. + keys: + qwerty: |- + `x` (helix: normal) + `x` (helix: visual) + select.lineEnd: title: - en: Select to line end + en: "Select to line end. TODO: helix" keys: qwerty: |- @@ -1718,7 +1772,7 @@ select.lineEnd: doc: en: | - Select to line end. + Select to line end. TODO: helix @@ -1748,8 +1802,8 @@ select.lineStart: keys: qwerty: |- - `a-h` (kakoune: normal) - `home` (kakoune: normal) + `a-h` (helix: normal) + `home` (helix: normal) doc: en: | @@ -1758,14 +1812,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` (helix: normal), `s-home` (helix: 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", ... }]` | select.lineStart.extend: title: @@ -1776,8 +1830,8 @@ select.lineStart.extend: keys: qwerty: |- - `s-a-h` (kakoune: normal) - `s-home` (kakoune: normal) + `s-a-h` (helix: normal) + `s-home` (helix: normal) select.lineStart.jump: title: @@ -1847,8 +1901,8 @@ select.right.extend: keys: qwerty: |- - `s-l` (kakoune: normal) - `s-right` (kakoune: normal) + `s-right` (helix: normal) + `l` (helix: visual) , `right` (helix: visual) select.right.jump: title: @@ -1859,7 +1913,7 @@ select.right.jump: keys: qwerty: |- - `l` (kakoune: normal) , `right` (kakoune: normal) + `l` (helix: normal) , `right` (helix: normal) select.to: title: @@ -1874,10 +1928,10 @@ select.to: #### Variants - | Title | Identifier | Keybinding | Command | - | --------- | ----------- | ----------------------- | ------------------------------------------ | - | Go to | `to.jump` | `g` (kakoune: normal) | `[".select.to", { shift: "jump" , ... }]` | - | Extend to | `to.extend` | `s-g` (kakoune: normal) | `[".select.to", { shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | --------- | ----------- | ------------------------------------------ | ------------------------------------------ | + | Go to | `to.jump` | `g` (helix: normal) | `[".select.to", { shift: "jump" , ... }]` | + | Extend to | `to.extend` | `s-g` (helix: normal), `g` (helix: visual) | `[".select.to", { shift: "extend", ... }]` | select.to.extend: title: @@ -1888,7 +1942,8 @@ select.to.extend: keys: qwerty: |- - `s-g` (kakoune: normal) + `s-g` (helix: normal) + `g` (helix: visual) select.to.jump: title: @@ -1899,7 +1954,7 @@ select.to.jump: keys: qwerty: |- - `g` (kakoune: normal) + `g` (helix: normal) select.up.extend: title: @@ -1910,8 +1965,8 @@ select.up.extend: keys: qwerty: |- - `s-k` (kakoune: normal) - `s-up` (kakoune: normal) + `s-k` (helix: normal) + `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) select.up.jump: title: @@ -1922,7 +1977,7 @@ select.up.jump: keys: qwerty: |- - `k` (kakoune: normal) , `up` (kakoune: normal) + `k` (helix: normal) , `up` (helix: normal) select.vertically: title: @@ -1933,23 +1988,29 @@ select.vertically: Select vertically. + TODO: Keep s-down and s-up? + #### Variants - | Title | Identifier | Keybinding | Command | - | ----------- | ------------- | --------------------------------------------------- | ----------------------------------------------------------------- | - | Jump down | `down.jump` | `j` (kakoune: normal) , `down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | - | Extend down | `down.extend` | `s-j` (kakoune: normal), `s-down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | - | Jump up | `up.jump` | `k` (kakoune: normal) , `up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | - | Extend up | `up.extend` | `s-k` (kakoune: normal), `s-up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | + | Title | Identifier | Keybinding | Command | + | ----------- | ------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | + | Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | + | Extend down | `down.extend` | `s-j` (helix: normal), `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | + | Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | + | Extend up | `up.extend` | `s-k` (helix: normal), `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) | `[".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` (helix: normal), `c-f` (helix: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | + | `c-d` (helix: normal), `c-d` (helix: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | + | `c-b` (helix: normal), `c-b` (helix: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | + | `c-u` (helix: normal), `c-u` (helix: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | + | `c-f` (helix: visual) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | + | `c-d` (helix: visual) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | + | `c-b` (helix: visual) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | + | `c-u` (helix: visual) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | selections.changeDirection: title: @@ -1997,7 +2058,7 @@ selections.clear.main: keys: qwerty: |- - `a-,` (kakoune: normal) + `a-,` (helix: normal) , `a-,` (helix: visual) selections.clear.secondary: title: @@ -2008,7 +2069,7 @@ selections.clear.secondary: keys: qwerty: |- - `,` (kakoune: normal) + `,` (helix: normal) , `,` (helix: visual) selections.copy: title: @@ -2016,7 +2077,8 @@ selections.copy: keys: qwerty: |- - `s-c` (kakoune: normal) + `s-c` (helix: normal) + `s-c` (helix: visual) doc: en: | @@ -2025,9 +2087,9 @@ selections.copy: #### Variant - | Title | Identifier | Keybinding | Command | - | --------------------- | ------------ | ------------------------- | ----------------------------------------- | - | Copy selections above | `copy.above` | `s-a-c` (kakoune: normal) | `[".selections.copy", { direction: -1 }]` | + | Title | Identifier | Keybinding | Command | + | --------------------- | ------------ | ------------------------------------------------ | ----------------------------------------- | + | Copy selections above | `copy.above` | `s-a-c` (helix: normal), `s-a-c` (helix: visual) | `[".selections.copy", { direction: -1 }]` | selections.copy.above: title: @@ -2038,7 +2100,8 @@ selections.copy.above: keys: qwerty: |- - `s-a-c` (kakoune: normal) + `s-a-c` (helix: normal) + `s-a-c` (helix: visual) selections.expandToLines: title: @@ -2046,7 +2109,8 @@ selections.expandToLines: keys: qwerty: |- - `x` (kakoune: normal) + `s-x` (helix: normal) + `s-x` (helix: visual) doc: en: |+ @@ -2081,7 +2145,8 @@ selections.filter: keys: qwerty: |- - `$` (kakoune: normal) + `$` (helix: normal) + `$` (helix: visual) doc: en: | @@ -2090,12 +2155,12 @@ selections.filter: #### 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` | `s-k` (helix: normal) , `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | + | Clear matching selections | `filter.regexp.inverse` | `s-a-k` (helix: normal), `s-a-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | + | Clear secondary selections | `clear.secondary` | `,` (helix: normal) , `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | + | Clear main selections | `clear.main` | `a-,` (helix: normal) , `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | selections.filter.regexp: title: @@ -2106,7 +2171,7 @@ selections.filter.regexp: keys: qwerty: |- - `a-k` (kakoune: normal) + `s-k` (helix: normal) , `s-k` (helix: visual) selections.filter.regexp.inverse: title: @@ -2117,7 +2182,8 @@ selections.filter.regexp.inverse: keys: qwerty: |- - `s-a-k` (kakoune: normal) + `s-a-k` (helix: normal) + `s-a-k` (helix: visual) selections.hideIndices: title: @@ -2225,7 +2291,8 @@ selections.reduce: keys: qwerty: |- - `;` (kakoune: normal) + `;` (helix: normal) + `;` (helix: visual) doc: en: | @@ -2252,15 +2319,15 @@ selections.reduce.edges: selections.restore: title: - en: Restore selections + en: "Restore selections. TODO: Needed?" keys: qwerty: |- - `z` (kakoune: normal) + `a-z` (helix: normal) doc: en: |+ - Restore selections. + Restore selections. TODO: Needed? selections.restore.withCurrent: title: @@ -2340,18 +2407,21 @@ selections.rotate.selections: keys: qwerty: |- - `(` (kakoune: normal) + `(` (helix: normal) + `(` (helix: visual) doc: en: | Rotate selections clockwise (selections only). + TODO: ( seems to be broken. Fix it... + 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` | `)` (helix: normal), `)` (helix: visual) | `[".selections.rotate.selections", { reverse: true }]` | selections.rotate.selections.reverse: title: @@ -2362,7 +2432,8 @@ selections.rotate.selections.reverse: keys: qwerty: |- - `)` (kakoune: normal) + `)` (helix: normal) + `)` (helix: visual) selections.save: title: @@ -2370,7 +2441,7 @@ selections.save: keys: qwerty: |- - `s-z` (kakoune: normal) + `s-a-z` (helix: normal) doc: en: |+ @@ -2382,7 +2453,8 @@ selections.saveText: keys: qwerty: |- - `y` (kakoune: normal) + `y` (helix: normal) + `y` (helix: visual) doc: en: |+ @@ -2398,9 +2470,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` (helix: normal), `s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | selections.select.orLeap: title: @@ -2411,7 +2483,8 @@ selections.select.orLeap: keys: qwerty: |- - `s` (kakoune: normal) + `s` (helix: normal) + `s` (helix: visual) selections.showIndices: title: @@ -2435,7 +2508,8 @@ selections.split: keys: qwerty: |- - `s-s` (kakoune: normal) + `s-s` (helix: normal) + `s-s` (helix: visual) doc: en: |+ @@ -2451,9 +2525,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` (helix: normal), `a-s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | selections.splitLines.orLeap.backward: title: @@ -2464,7 +2538,8 @@ selections.splitLines.orLeap.backward: keys: qwerty: |- - `a-s` (kakoune: normal) + `a-s` (helix: normal) + `a-s` (helix: visual) selections.toggleIndices: title: @@ -2472,7 +2547,8 @@ selections.toggleIndices: keys: qwerty: |- - `enter` (dance: normal) + `enter` (helix: normal) + `enter` (helix: visual) doc: en: | @@ -2506,7 +2582,8 @@ selections.trimWhitespace: keys: qwerty: |- - `_` (kakoune: normal) + `_` (helix: normal) + `_` (helix: visual) doc: en: |+ @@ -2520,7 +2597,8 @@ selectRegister: keys: qwerty: |- - `"` (kakoune: normal) + `"` (helix: normal) + `"` (helix: visual) doc: en: |+ @@ -2543,18 +2621,18 @@ updateCount: #### Additional keybindings - | Title | Keybinding | Command | - | ------------------------------ | -------------------------------------------- | ------------------------------------ | - | Add the digit 0 to the counter | `0` (core: normal), `NumPad0` (core: normal) | `[".updateCount", { addDigits: 0 }]` | - | Add the digit 1 to the counter | `1` (core: normal), `NumPad1` (core: normal) | `[".updateCount", { addDigits: 1 }]` | - | Add the digit 2 to the counter | `2` (core: normal), `NumPad2` (core: normal) | `[".updateCount", { addDigits: 2 }]` | - | Add the digit 3 to the counter | `3` (core: normal), `NumPad3` (core: normal) | `[".updateCount", { addDigits: 3 }]` | - | Add the digit 4 to the counter | `4` (core: normal), `NumPad4` (core: normal) | `[".updateCount", { addDigits: 4 }]` | - | Add the digit 5 to the counter | `5` (core: normal), `NumPad5` (core: normal) | `[".updateCount", { addDigits: 5 }]` | - | Add the digit 6 to the counter | `6` (core: normal), `NumPad6` (core: normal) | `[".updateCount", { addDigits: 6 }]` | - | Add the digit 7 to the counter | `7` (core: normal), `NumPad7` (core: normal) | `[".updateCount", { addDigits: 7 }]` | - | Add the digit 8 to the counter | `8` (core: normal), `NumPad8` (core: normal) | `[".updateCount", { addDigits: 8 }]` | - | Add the digit 9 to the counter | `9` (core: normal), `NumPad9` (core: normal) | `[".updateCount", { addDigits: 9 }]` | + | Title | Keybinding | Command | + | ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------ | + | Add the digit 0 to the counter | `0` (helix: normal), `NumPad0` (helix: normal), `0` (helix: visual), `NumPad0` (helix: visual) | `[".updateCount", { addDigits: 0 }]` | + | Add the digit 1 to the counter | `1` (helix: normal), `NumPad1` (helix: normal), `1` (helix: visual), `NumPad1` (helix: visual) | `[".updateCount", { addDigits: 1 }]` | + | Add the digit 2 to the counter | `2` (helix: normal), `NumPad2` (helix: normal), `2` (helix: visual), `NumPad2` (helix: visual) | `[".updateCount", { addDigits: 2 }]` | + | Add the digit 3 to the counter | `3` (helix: normal), `NumPad3` (helix: normal), `3` (helix: visual), `NumPad3` (helix: visual) | `[".updateCount", { addDigits: 3 }]` | + | Add the digit 4 to the counter | `4` (helix: normal), `NumPad4` (helix: normal), `4` (helix: visual), `NumPad4` (helix: visual) | `[".updateCount", { addDigits: 4 }]` | + | Add the digit 5 to the counter | `5` (helix: normal), `NumPad5` (helix: normal), `5` (helix: visual), `NumPad5` (helix: visual) | `[".updateCount", { addDigits: 5 }]` | + | Add the digit 6 to the counter | `6` (helix: normal), `NumPad6` (helix: normal), `6` (helix: visual), `NumPad6` (helix: visual) | `[".updateCount", { addDigits: 6 }]` | + | Add the digit 7 to the counter | `7` (helix: normal), `NumPad7` (helix: normal), `7` (helix: visual), `NumPad7` (helix: visual) | `[".updateCount", { addDigits: 7 }]` | + | Add the digit 8 to the counter | `8` (helix: normal), `NumPad8` (helix: normal), `8` (helix: visual), `NumPad8` (helix: visual) | `[".updateCount", { addDigits: 8 }]` | + | Add the digit 9 to the counter | `9` (helix: normal), `NumPad9` (helix: normal), `9` (helix: visual), `NumPad9` (helix: visual) | `[".updateCount", { addDigits: 9 }]` | updateRegister: title: @@ -2572,6 +2650,18 @@ view.line: en: | Reveals a position based on the main cursor. +window.windowMenu: + title: + en: Show window menu + + commands: |- + [".openMenu", { menu: "window", $exclude: [] }] + + keys: + qwerty: |- + `c-w` (helix: normal) + `c-w` (helix: visual) + anonymous: - commands: |- @@ -2588,6 +2678,37 @@ anonymous: qwerty: |- `up` (core: prompt) + - title: + en: Show match menu + + commands: |- + [".openMenu", { menu: "match" }] + + keys: + qwerty: |- + `m` (normal) + + - title: + en: Show match menu + + commands: |- + [".openMenu", { menu: "match" }] + + keys: + qwerty: |- + `m` (helix: visual) + + - title: + en: Show space menu + + commands: |- + [".openMenu", { menu: "space", $exclude: [] }] + + keys: + qwerty: |- + `space` (helix: normal) + `space` (helix: visual) + - title: en: Show view menu @@ -2596,7 +2717,8 @@ anonymous: keys: qwerty: |- - `v` (kakoune: normal) + `z` (helix: normal) + `z` (helix: visual) - title: en: Show view menu (locked) @@ -2606,39 +2728,68 @@ anonymous: keys: qwerty: |- - `s-v` (kakoune: normal) + `s-z` (helix: normal) + `s-z` (helix: visual) + + - commands: |- + [".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }] + + keys: + qwerty: |- + `c-u` (helix: visual) - commands: |- [".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }] keys: qwerty: |- - `c-u` (kakoune: normal) - `c-u` (kakoune: insert) + `c-u` (helix: normal) + `c-u` (helix: insert) + + - commands: |- + [".select.vertically", { direction: -1, by: "page" , shift: "extend" }] + + keys: + qwerty: |- + `c-b` (helix: visual) - commands: |- [".select.vertically", { direction: -1, by: "page" , shift: "jump" }] keys: qwerty: |- - `c-b` (kakoune: normal) - `c-b` (kakoune: insert) + `c-b` (helix: normal) + `c-b` (helix: insert) + + - commands: |- + [".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }] + + keys: + qwerty: |- + `c-d` (helix: visual) - commands: |- [".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }] keys: qwerty: |- - `c-d` (kakoune: normal) - `c-d` (kakoune: insert) + `c-d` (helix: normal) + `c-d` (helix: insert) + + - commands: |- + [".select.vertically", { direction: 1, by: "page" , shift: "extend" }] + + keys: + qwerty: |- + `c-f` (helix: visual) - commands: |- [".select.vertically", { direction: 1, by: "page" , shift: "jump" }] keys: qwerty: |- - `c-f` (kakoune: normal) - `c-f` (kakoune: insert) + `c-f` (helix: normal) + `c-f` (helix: insert) - commands: |- [".selections.restore.withCurrent", { reverse: true, $exclude: [] }] @@ -2658,8 +2809,10 @@ anonymous: `s-0` (core: normal) `NumPad0` (core: normal) qwerty: |- - `0` (core: normal) - `NumPad0` (core: normal) + `0` (helix: normal) + `NumPad0` (helix: normal) + `0` (helix: visual) + `NumPad0` (helix: visual) - title: en: Add the digit 1 to the counter @@ -2672,8 +2825,10 @@ anonymous: `s-1` (core: normal) `NumPad1` (core: normal) qwerty: |- - `1` (core: normal) - `NumPad1` (core: normal) + `1` (helix: normal) + `NumPad1` (helix: normal) + `1` (helix: visual) + `NumPad1` (helix: visual) - title: en: Add the digit 2 to the counter @@ -2686,8 +2841,10 @@ anonymous: `s-2` (core: normal) `NumPad2` (core: normal) qwerty: |- - `2` (core: normal) - `NumPad2` (core: normal) + `2` (helix: normal) + `NumPad2` (helix: normal) + `2` (helix: visual) + `NumPad2` (helix: visual) - title: en: Add the digit 3 to the counter @@ -2700,8 +2857,10 @@ anonymous: `s-3` (core: normal) `NumPad3` (core: normal) qwerty: |- - `3` (core: normal) - `NumPad3` (core: normal) + `3` (helix: normal) + `NumPad3` (helix: normal) + `3` (helix: visual) + `NumPad3` (helix: visual) - title: en: Add the digit 4 to the counter @@ -2714,8 +2873,10 @@ anonymous: `s-4` (core: normal) `NumPad4` (core: normal) qwerty: |- - `4` (core: normal) - `NumPad4` (core: normal) + `4` (helix: normal) + `NumPad4` (helix: normal) + `4` (helix: visual) + `NumPad4` (helix: visual) - title: en: Add the digit 5 to the counter @@ -2728,8 +2889,10 @@ anonymous: `s-5` (core: normal) `NumPad5` (core: normal) qwerty: |- - `5` (core: normal) - `NumPad5` (core: normal) + `5` (helix: normal) + `NumPad5` (helix: normal) + `5` (helix: visual) + `NumPad5` (helix: visual) - title: en: Add the digit 6 to the counter @@ -2742,8 +2905,10 @@ anonymous: `s-6` (core: normal) `NumPad6` (core: normal) qwerty: |- - `6` (core: normal) - `NumPad6` (core: normal) + `6` (helix: normal) + `NumPad6` (helix: normal) + `6` (helix: visual) + `NumPad6` (helix: visual) - title: en: Add the digit 7 to the counter @@ -2756,8 +2921,10 @@ anonymous: `s-7` (core: normal) `NumPad7` (core: normal) qwerty: |- - `7` (core: normal) - `NumPad7` (core: normal) + `7` (helix: normal) + `NumPad7` (helix: normal) + `7` (helix: visual) + `NumPad7` (helix: visual) - title: en: Add the digit 8 to the counter @@ -2770,8 +2937,10 @@ anonymous: `s-8` (core: normal) `NumPad8` (core: normal) qwerty: |- - `8` (core: normal) - `NumPad8` (core: normal) + `8` (helix: normal) + `NumPad8` (helix: normal) + `8` (helix: visual) + `NumPad8` (helix: visual) - title: en: Add the digit 9 to the counter @@ -2784,12 +2953,23 @@ anonymous: `s-9` (core: normal) `NumPad9` (core: normal) qwerty: |- - `9` (core: normal) - `NumPad9` (core: normal) + `9` (helix: normal) + `NumPad9` (helix: normal) + `9` (helix: visual) + `NumPad9` (helix: visual) + + - commands: |- + ["editor.action.commentLine", { $exclude: [] }] + + keys: + qwerty: |- + `c-c` (helix: normal) + `c-c` (helix: visual) - commands: |- ["workbench.action.showCommands", { $exclude: [] }] keys: qwerty: |- - `s-;` (core: normal) + `s-;` (helix: normal) + `s-;` (helix: visual) diff --git a/src/api/keybindings/built-in.ts b/src/api/keybindings/built-in.ts index aba4273..1806ff1 100644 --- a/src/api/keybindings/built-in.ts +++ b/src/api/keybindings/built-in.ts @@ -158,18 +158,6 @@ const builtinKeybindings = [ title: "Join lines and select inserted separators", command: "dance.edit.join.select", }, - { - key: "Shift+Alt+O", - when: "editorTextFocus && dance.mode == 'normal'", - title: "Insert new line above each selection", - command: "dance.edit.newLine.above", - }, - { - key: "Shift+Alt+O", - when: "editorTextFocus && dance.mode == 'visual'", - title: "Insert new line above each selection", - command: "dance.edit.newLine.above", - }, { key: "Shift+O", when: "editorTextFocus && dance.mode == 'normal'", @@ -182,18 +170,6 @@ const builtinKeybindings = [ title: "Insert new line above and switch to insert", command: "dance.edit.newLine.above.insert", }, - { - key: "Alt+O", - when: "editorTextFocus && dance.mode == 'normal'", - title: "Insert new line below each selection", - command: "dance.edit.newLine.below", - }, - { - key: "Alt+O", - when: "editorTextFocus && dance.mode == 'visual'", - title: "Insert new line below each selection", - command: "dance.edit.newLine.below", - }, { key: "O", when: "editorTextFocus && dance.mode == 'normal'", diff --git a/src/commands/README.md b/src/commands/README.md index a7a0a3d..fc31333 100644 --- a/src/commands/README.md +++ b/src/commands/README.md @@ -18,7 +18,6 @@ depending on the keyboard layout. The following layouts _will be_\* supported:
Quick reference -<<<<<<< HEAD @@ -27,49 +26,52 @@ depending on the keyboard layout. The following layouts _will be_\* supported: - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - - - - - - + + + + + + + - + - - - + + + - - - - + + + + - - + + + + + - + - - - - + + + + - - - + + + + - - + + - - - - - + + + + + - + @@ -114,30 +117,30 @@ selections are empty - + - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + @@ -145,60 +148,60 @@ selections are empty - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - - + + - - - + + + - - + + @@ -206,223 +209,24 @@ selections are empty - + - + - + - + - + - + - + + -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 009823c (fixed match replace)
CategoryIdentifierTitleDefault keybindings
devdev.copyLastErrorMessageCopies the last encountered error message
dev.setSelectionBehaviorSet the selection behavior of the specified mode
editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal')
edit.case.swapSwap caseAlt+` (editorTextFocus && dance.mode == 'normal')
edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal')
edit.case.toUpperTransform to upper caseShift+` (editorTextFocus && dance.mode == 'normal')
edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal')
edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal')
edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal')
edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal')
edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal')
edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal')
edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal')
editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal')Shift+7 (editorTextFocus && dance.mode == 'visual')
edit.case.swapSwap caseShift+` (editorTextFocus && dance.mode == 'normal')Shift+` (editorTextFocus && dance.mode == 'visual')
edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal')` (editorTextFocus && dance.mode == 'visual')
edit.case.toUpperTransform to upper caseAlt+` (editorTextFocus && dance.mode == 'normal')Alt+` (editorTextFocus && dance.mode == 'visual')
edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal')Shift+Alt+7 (editorTextFocus && dance.mode == 'visual')
edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal')Shift+Alt+, (editorTextFocus && dance.mode == 'visual')
edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal')Shift+, (editorTextFocus && dance.mode == 'visual')
edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal')Alt+D (editorTextFocus && dance.mode == 'visual')
edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal')Alt+C (editorTextFocus && dance.mode == 'visual')
edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal')Shift+O (editorTextFocus && dance.mode == 'visual')
edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal')O (editorTextFocus && dance.mode == 'visual')
edit.paste.afterPaste after
edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal')
edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal')P (editorTextFocus && dance.mode == 'visual')
edit.paste.beforePaste before
edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal')
edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal')Shift+P (editorTextFocus && dance.mode == 'visual')
edit.pasteAll.afterPaste all after
edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal')
edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal')Alt+P (editorTextFocus && dance.mode == 'visual')
edit.pasteAll.beforePaste all before
edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal')
edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'insert')
edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal')
edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal')
edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal')
edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal')
edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal')
edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal')Shift+Alt+P (editorTextFocus && dance.mode == 'visual')
edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'visual')
edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal')D (editorTextFocus && dance.mode == 'visual')
edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal')C (editorTextFocus && dance.mode == 'visual')
edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal')Shift+R (editorTextFocus && dance.mode == 'visual')
edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal')Shift+. (editorTextFocus && dance.mode == 'visual')
edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal')Shift+Alt+. (editorTextFocus && dance.mode == 'visual')
edit.insertInsert contents of registerShift+Alt+R (editorTextFocus && dance.mode == 'normal')
edit.joinJoin linesAlt+J (editorTextFocus && dance.mode == 'normal')
edit.joinJoin linesShift+J (editorTextFocus && dance.mode == 'normal')Shift+J (editorTextFocus && dance.mode == 'visual')
edit.join.selectJoin lines and select inserted separatorsShift+Alt+J (editorTextFocus && dance.mode == 'normal')
edit.newLine.aboveInsert new line above each selectionShift+Alt+O (editorTextFocus && dance.mode == 'normal')
edit.newLine.belowInsert new line below each selectionAlt+O (editorTextFocus && dance.mode == 'normal')
edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal')
edit.newLine.aboveInsert new line above each selection
edit.newLine.belowInsert new line below each selection
edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal')R (editorTextFocus && dance.mode == 'visual')
historyhistory.repeat.seekRepeat last seekAlt+. (editorTextFocus && dance.mode == 'normal')
history.repeat.selectionRepeat last selection change
history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal')
history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording)
history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording)
history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal')
history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal')Q (editorTextFocus && dance.mode == 'visual')
history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && !dance.isRecording)
history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Escape (editorTextFocus && dance.mode == 'visual' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && dance.isRecording)
history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal')Shift+U (editorTextFocus && dance.mode == 'visual')
history.redo.selectionsRedo a change of selectionsShift+Alt+U (editorTextFocus && dance.mode == 'normal')
history.repeatRepeat last change
history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal')
history.undoUndoU (editorTextFocus && dance.mode == 'normal')
history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal'). (editorTextFocus && dance.mode == 'visual')NumPad_Decimal (editorTextFocus && dance.mode == 'visual')
history.undoUndoU (editorTextFocus && dance.mode == 'normal')U (editorTextFocus && dance.mode == 'visual')
history.undo.selectionsUndo a change of selectionsAlt+U (editorTextFocus && dance.mode == 'normal')
keybindingskeybindings.setupSet up Dance keybindings
matchmatch.surroundAdd stuff surround
match.surrounddeleteDelete stuff surround
match.surroundreplaceReplace stuff surround
misccancelCancel Dance operationEscape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible)Escape (editorTextFocus && dance.mode == 'input')
changeInputChange current input
ifEmptyExecutes one of the specified commands depending on whether the current @@ -77,30 +79,31 @@ selections are empty
ignoreIgnore key
openMenuOpen menu
runRun code
selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal')
selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal')Shift+' (editorTextFocus && dance.mode == 'visual')
updateCountUpdate Dance count
updateRegisterUpdate the contents of a register
modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal')
modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal')
modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal')
modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal')
modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal')A (editorTextFocus && dance.mode == 'visual')
modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal')I (editorTextFocus && dance.mode == 'visual')
modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal')Shift+A (editorTextFocus && dance.mode == 'visual')
modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal')Shift+I (editorTextFocus && dance.mode == 'visual')
modes.set.insertSet mode to Insert
modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert')
modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal')
modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert')
modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert')Escape (editorTextFocus && dance.mode == 'visual')V (editorTextFocus && dance.mode == 'visual')
modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal')
modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert')
modes.set.visualSet mode to VisualV (editorTextFocus && dance.mode == 'normal')
modes.setSet Dance mode
modes.set.temporarilySet Dance mode temporarily
searchsearch.nextSelect next matchN (editorTextFocus && dance.mode == 'normal')
search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal')
search.backwardSearch backwardAlt+/ (editorTextFocus && dance.mode == 'normal')
search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal')/ (editorTextFocus && dance.mode == 'visual')NumPad_Divide (editorTextFocus && dance.mode == 'visual')
search.backwardSearch backwardShift+/ (editorTextFocus && dance.mode == 'normal')
search.backward.extendSearch backward (extend)Shift+Alt+/ (editorTextFocus && dance.mode == 'normal')
search.extendSearch (extend)Shift+/ (editorTextFocus && dance.mode == 'normal')
search.next.addAdd next matchShift+N (editorTextFocus && dance.mode == 'normal')
search.previousSelect previous matchAlt+N (editorTextFocus && dance.mode == 'normal')
search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal')
search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal')
search.extendSearch (extend)Alt+/ (editorTextFocus && dance.mode == 'normal')
search.next.addAdd next matchAlt+N (editorTextFocus && dance.mode == 'normal')N (editorTextFocus && dance.mode == 'visual')
search.previousSelect previous matchShift+N (editorTextFocus && dance.mode == 'normal')
search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal')Shift+N (editorTextFocus && dance.mode == 'visual')
search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal')Shift+8 (editorTextFocus && dance.mode == 'visual')NumPad_Multiply (editorTextFocus && dance.mode == 'visual')
search.selectionSearch current selectionShift+Alt+8 (editorTextFocus && dance.mode == 'normal')Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal')
seekseek.enclosingSelect to next enclosing characterM (editorTextFocus && dance.mode == 'normal')
seekseek.enclosingSelect to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal')
seek.leapLeap forward
seek.objectSelect object
seek.seekSelect to character (excluded)T (editorTextFocus && dance.mode == 'normal')
seek.askObject.inner.start.extendExtend to inner object startShift+Alt+[ (editorTextFocus && dance.mode == 'normal')
seek.askObject.startSelect to whole object start[ (editorTextFocus && dance.mode == 'normal')
seek.askObject.start.extendExtend to whole object startShift+[ (editorTextFocus && dance.mode == 'normal')
seek.backwardSelect to character (excluded, backward)Alt+T (editorTextFocus && dance.mode == 'normal')
seek.backwardSelect to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'normal')
seek.enclosing.backwardSelect to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'normal')
seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal')
seek.enclosing.extend.backwardExtend to previous enclosing characterShift+Alt+M (editorTextFocus && dance.mode == 'normal')
seek.extendExtend to character (excluded)Shift+T (editorTextFocus && dance.mode == 'normal')
seek.extend.backwardExtend to character (excluded, backward)Shift+Alt+T (editorTextFocus && dance.mode == 'normal')
seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal')
seek.included.backwardSelect to character (included, backward)Alt+F (editorTextFocus && dance.mode == 'normal')
seek.included.extendExtend to character (included)Shift+F (editorTextFocus && dance.mode == 'normal')
seek.included.extend.backwardExtend to character (included, backward)Shift+Alt+F (editorTextFocus && dance.mode == 'normal')
seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'visual')
seek.enclosing.extend.backwardExtend to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'visual')
seek.extendExtend to character (excluded)T (editorTextFocus && dance.mode == 'visual')
seek.extend.backwardExtend to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'visual')
seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal')
seek.included.backwardSelect to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'normal')
seek.included.extendExtend to character (included)F (editorTextFocus && dance.mode == 'visual')
seek.included.extend.backwardExtend to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'visual')
seek.leap.backwardLeap backward
seek.word.backwardSelect to previous word startB (editorTextFocus && dance.mode == 'normal')
seek.word.extendExtend to next word startShift+W (editorTextFocus && dance.mode == 'normal')
seek.word.extend.backwardExtend to previous word startShift+B (editorTextFocus && dance.mode == 'normal')
seek.word.wsSelect to next non-whitespace word startAlt+W (editorTextFocus && dance.mode == 'normal')
seek.word.ws.backwardSelect to previous non-whitespace word startAlt+B (editorTextFocus && dance.mode == 'normal')
seek.word.ws.extendExtend to next non-whitespace word startShift+Alt+W (editorTextFocus && dance.mode == 'normal')
seek.word.ws.extend.backwardExtend to previous non-whitespace word startShift+Alt+B (editorTextFocus && dance.mode == 'normal')
seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.extendExtend to next word endShift+E (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.wsSelect to next non-whitespace word endAlt+E (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.ws.extendExtend to next non-whitespace word endShift+Alt+E (editorTextFocus && dance.mode == 'normal')
seek.word.backward.extendExtend to previous word startB (editorTextFocus && dance.mode == 'visual')
seek.word.extendExtend to next word startW (editorTextFocus && dance.mode == 'visual')
seek.word.wsSelect to next WORD startShift+W (editorTextFocus && dance.mode == 'normal')
seek.word.ws.backwardSelect to previous WORD startShift+B (editorTextFocus && dance.mode == 'normal')
seek.word.ws.backward.extendExtend to previous WORD startShift+B (editorTextFocus && dance.mode == 'visual')
seek.word.ws.extendExtend to next WORD startShift+W (editorTextFocus && dance.mode == 'visual')
seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.extendExtend to next word endE (editorTextFocus && dance.mode == 'visual')
seek.wordEnd.wsSelect to next WORD endShift+E (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.ws.extendExtend to next WORD endShift+E (editorTextFocus && dance.mode == 'visual')
seek.wordSelect to next word startW (editorTextFocus && dance.mode == 'normal')
selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal')
selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal')Shift+5 (editorTextFocus && dance.mode == 'visual')
select.firstVisibleLineSelect to first visible line
select.horizontallySelect horizontally
select.lastLineSelect to last line
select.line.aboveSelect line above
select.line.above.extendExtend to line above
select.line.belowSelect line below
select.line.below.extendExtend to line below
select.lineEndSelect to line endAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal')
select.line.below.extendExtend to line belowX (editorTextFocus && dance.mode == 'normal')X (editorTextFocus && dance.mode == 'visual')
select.lineEndSelect to line end. TODO: helixAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal')
select.lineStartSelect to line startAlt+H (editorTextFocus && dance.mode == 'normal')Home (editorTextFocus && dance.mode == 'normal')
select.middleVisibleLineSelect to middle visible line
select.documentEnd.extendExtend to last character
select.documentEnd.jumpJump to last character
select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal')
select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal')
select.firstLine.extendExtend to first line
select.firstLine.jumpJump to first line
select.firstVisibleLine.extendExtend to first visible line
select.firstVisibleLine.jumpJump to first visible line
select.lastLine.extendExtend to last line
select.lastLine.jumpJump to last line
select.lastVisibleLine.extendExtend to last visible line
select.lastVisibleLine.jumpJump to last visible line
select.left.extendExtend leftShift+H (editorTextFocus && dance.mode == 'normal')Shift+Left (editorTextFocus && dance.mode == 'normal')
select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal')
select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal')
select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal')
select.lineStart.jumpJump to line start
select.lineStart.skipBlank.extendExtend to line start (skip blank)
select.lineStart.skipBlank.jumpJump to line start (skip blank)
select.middleVisibleLine.extendExtend to middle visible line
select.middleVisibleLine.jumpJump to middle visible line
select.right.extendExtend rightShift+L (editorTextFocus && dance.mode == 'normal')Shift+Right (editorTextFocus && dance.mode == 'normal')
select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal')
select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal')
select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal')
select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal')
select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal')
select.documentEnd.extendExtend to last character
select.documentEnd.jumpJump to last character
select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal')J (editorTextFocus && dance.mode == 'visual')Down (editorTextFocus && dance.mode == 'visual')
select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal')
select.firstLine.extendExtend to first line
select.firstLine.jumpJump to first line
select.firstVisibleLine.extendExtend to first visible line
select.firstVisibleLine.jumpJump to first visible line
select.lastLine.extendExtend to last line
select.lastLine.jumpJump to last line
select.lastVisibleLine.extendExtend to last visible line
select.lastVisibleLine.jumpJump to last visible line
select.left.extendExtend leftShift+Left (editorTextFocus && dance.mode == 'normal')H (editorTextFocus && dance.mode == 'visual')Left (editorTextFocus && dance.mode == 'visual')
select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal')
select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal')
select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal')
select.lineStart.jumpJump to line start
select.lineStart.skipBlank.extendExtend to line start (skip blank)
select.lineStart.skipBlank.jumpJump to line start (skip blank)
select.middleVisibleLine.extendExtend to middle visible line
select.middleVisibleLine.jumpJump to middle visible line
select.right.extendExtend rightShift+Right (editorTextFocus && dance.mode == 'normal')L (editorTextFocus && dance.mode == 'visual')Right (editorTextFocus && dance.mode == 'visual')
select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal')
select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal')G (editorTextFocus && dance.mode == 'visual')
select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal')
select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal')K (editorTextFocus && dance.mode == 'visual')Up (editorTextFocus && dance.mode == 'visual')
select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal')
select.toSelect to
select.verticallySelect vertically
selectionsselections.changeDirectionChange direction of selectionsAlt+; (editorTextFocus && dance.mode == 'normal')
selections.changeOrderReverse selections
selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal')
selections.expandToLinesExpand to linesX (editorTextFocus && dance.mode == 'normal')
selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal')
selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal')Shift+C (editorTextFocus && dance.mode == 'visual')
selections.expandToLinesExpand to linesShift+X (editorTextFocus && dance.mode == 'normal')Shift+X (editorTextFocus && dance.mode == 'visual')
selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal')Shift+4 (editorTextFocus && dance.mode == 'visual')
selections.mergeMerge contiguous selectionsShift+Alt+- (editorTextFocus && dance.mode == 'normal')
selections.openOpen selected file
selections.pipePipe selectionsShift+Alt+\ (editorTextFocus && dance.mode == 'normal')
selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal')
selections.restoreRestore selectionsZ (editorTextFocus && dance.mode == 'normal')
selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal'); (editorTextFocus && dance.mode == 'visual')
selections.restoreRestore selections. TODO: Needed?Alt+Z (editorTextFocus && dance.mode == 'normal')
selections.restore.withCurrentCombine register selections with current onesAlt+Z (editorTextFocus && dance.mode == 'normal')
selections.saveSave selectionsShift+Z (editorTextFocus && dance.mode == 'normal')
selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal')
selections.saveSave selectionsShift+Alt+Z (editorTextFocus && dance.mode == 'normal')
selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal')Y (editorTextFocus && dance.mode == 'visual')
selections.selectSelect within selections
selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal')
selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal')
selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal')
selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal')Alt+, (editorTextFocus && dance.mode == 'visual')
selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal'), (editorTextFocus && dance.mode == 'visual')
selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal')Shift+Alt+C (editorTextFocus && dance.mode == 'visual')
selections.faceBackwardBackward selections
selections.faceForwardForward selectionsShift+Alt+; (editorTextFocus && dance.mode == 'normal')
selections.filter.regexpKeep matching selectionsAlt+K (editorTextFocus && dance.mode == 'normal')
selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal')
selections.filter.regexpKeep matching selectionsShift+K (editorTextFocus && dance.mode == 'normal')Shift+K (editorTextFocus && dance.mode == 'visual')
selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal')Shift+Alt+K (editorTextFocus && dance.mode == 'visual')
selections.hideIndicesHide selection indices
selections.orderAscendingOrder selections ascending
selections.orderDescendingOrder selections descending
selections.pipe.prependPipe and prependShift+Alt+1 (editorTextFocus && dance.mode == 'normal')
selections.pipe.replacePipe and replaceShift+\ (editorTextFocus && dance.mode == 'normal')
selections.reduce.edgesReduce selections to their endsShift+Alt+S (editorTextFocus && dance.mode == 'normal')
selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal')
selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal')S (editorTextFocus && dance.mode == 'visual')
selections.showIndicesShow selection indices
selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal')
selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal')Alt+S (editorTextFocus && dance.mode == 'visual')
selections.sortSort selections
selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal')
selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal')Shift+S (editorTextFocus && dance.mode == 'visual')
selections.splitLinesSplit selections at line boundaries
selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal')
selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal')Enter (editorTextFocus && dance.mode == 'visual')
selections.trimLinesTrim linesAlt+X (editorTextFocus && dance.mode == 'normal')
selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal')
selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal')Shift+- (editorTextFocus && dance.mode == 'visual')
selections.rotateselections.rotate.bothRotate selections clockwiseShift+Alt+9 (editorTextFocus && dance.mode == 'normal')
selections.rotate.contentsRotate selections clockwise (contents only)
selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal')
selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal')Shift+9 (editorTextFocus && dance.mode == 'visual')
selections.rotate.both.reverseRotate selections counter-clockwiseShift+Alt+0 (editorTextFocus && dance.mode == 'normal')
selections.rotate.contents.reverseRotate selections counter-clockwise (contents only)
selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal')
selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal')Shift+0 (editorTextFocus && dance.mode == 'visual')
viewview.lineReveals a position based on the main cursor
windowwindow.windowMenuShow window menuCtrl+W (editorTextFocus && dance.mode == 'normal')Ctrl+W (editorTextFocus && dance.mode == 'visual')
CategoryIdentifierTitleDefault keybindings
devdev.copyLastErrorMessageCopies the last encountered error message
dev.setSelectionBehaviorSet the selection behavior of the specified mode
editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal')Shift+7 (editorTextFocus && dance.mode == 'visual')
edit.case.swapSwap caseShift+` (editorTextFocus && dance.mode == 'normal')Shift+` (editorTextFocus && dance.mode == 'visual')
edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal')` (editorTextFocus && dance.mode == 'visual')
edit.case.toUpperTransform to upper caseAlt+` (editorTextFocus && dance.mode == 'normal')Alt+` (editorTextFocus && dance.mode == 'visual')
edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal')Shift+Alt+7 (editorTextFocus && dance.mode == 'visual')
edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal')Shift+Alt+, (editorTextFocus && dance.mode == 'visual')
edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal')Shift+, (editorTextFocus && dance.mode == 'visual')
edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal')Alt+D (editorTextFocus && dance.mode == 'visual')
edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal')Alt+C (editorTextFocus && dance.mode == 'visual')
edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal')Shift+O (editorTextFocus && dance.mode == 'visual')
edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal')O (editorTextFocus && dance.mode == 'visual')
edit.paste.afterPaste afterP (editorTextFocus && dance.mode == 'normal')P (editorTextFocus && dance.mode == 'visual')
edit.paste.after.selectPaste after and selectAlt+P (editorTextFocus && dance.mode == 'normal')Alt+P (editorTextFocus && dance.mode == 'visual')
edit.paste.beforePaste beforeShift+P (editorTextFocus && dance.mode == 'normal')Shift+P (editorTextFocus && dance.mode == 'visual')
edit.paste.before.selectPaste before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal')Shift+Alt+P (editorTextFocus && dance.mode == 'visual')
edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'insert')Ctrl+R (editorTextFocus && dance.mode == 'insert')
edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal')D (editorTextFocus && dance.mode == 'visual')
edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal')C (editorTextFocus && dance.mode == 'visual')
edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal')Shift+R (editorTextFocus && dance.mode == 'visual')
edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal')Shift+. (editorTextFocus && dance.mode == 'visual')
edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal')Shift+Alt+. (editorTextFocus && dance.mode == 'visual')
edit.insertInsert contents of registerShift+Alt+R (editorTextFocus && dance.mode == 'normal')
edit.joinJoin linesShift+J (editorTextFocus && dance.mode == 'normal')Shift+J (editorTextFocus && dance.mode == 'visual')
edit.join.selectJoin lines and select inserted separatorsShift+Alt+J (editorTextFocus && dance.mode == 'normal')
edit.newLine.aboveInsert new line above each selectionShift+Alt+O (editorTextFocus && dance.mode == 'normal')Shift+Alt+O (editorTextFocus && dance.mode == 'visual')
edit.newLine.belowInsert new line below each selectionAlt+O (editorTextFocus && dance.mode == 'normal')Alt+O (editorTextFocus && dance.mode == 'visual')
edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal')R (editorTextFocus && dance.mode == 'visual')
historyhistory.repeat.seekRepeat last seekAlt+. (editorTextFocus && dance.mode == 'normal')
history.repeat.selectionRepeat last selection change
history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal')Q (editorTextFocus && dance.mode == 'visual')
history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && !dance.isRecording)
history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Escape (editorTextFocus && dance.mode == 'visual' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && dance.isRecording)
history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal')Shift+U (editorTextFocus && dance.mode == 'visual')
history.redo.selectionsRedo a change of selectionsShift+Alt+U (editorTextFocus && dance.mode == 'normal')
history.repeatRepeat last change
history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal'). (editorTextFocus && dance.mode == 'visual')NumPad_Decimal (editorTextFocus && dance.mode == 'visual')
history.undoUndoU (editorTextFocus && dance.mode == 'normal')U (editorTextFocus && dance.mode == 'visual')
history.undo.selectionsUndo a change of selectionsAlt+U (editorTextFocus && dance.mode == 'normal')
keybindingskeybindings.setupSet up Dance keybindings
matchmatch.surroundAdd stuff surround
match.surrounddeleteDelete stuff surround
match.surroundreplaceReplace stuff surround
misccancelCancel Dance operationEscape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible)Escape (editorTextFocus && dance.mode == 'input')
changeInputChange current input
ignoreIgnore key
openMenuOpen menu
runRun code
selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal')Shift+' (editorTextFocus && dance.mode == 'visual')
updateCountUpdate Dance count
updateRegisterUpdate the contents of a register
modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal')A (editorTextFocus && dance.mode == 'visual')
modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal')I (editorTextFocus && dance.mode == 'visual')
modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal')Shift+A (editorTextFocus && dance.mode == 'visual')
modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal')Shift+I (editorTextFocus && dance.mode == 'visual')
modes.set.insertSet mode to Insert
modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert')Escape (editorTextFocus && dance.mode == 'visual')V (editorTextFocus && dance.mode == 'visual')
modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal')
modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert')
modes.set.visualSet mode to VisualV (editorTextFocus && dance.mode == 'normal')
modes.setSet Dance mode
modes.set.temporarilySet Dance mode temporarily
searchsearch.nextSelect next matchN (editorTextFocus && dance.mode == 'normal')
search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal')/ (editorTextFocus && dance.mode == 'visual')NumPad_Divide (editorTextFocus && dance.mode == 'visual')
search.backwardSearch backwardShift+/ (editorTextFocus && dance.mode == 'normal')
search.backward.extendSearch backward (extend)Shift+Alt+/ (editorTextFocus && dance.mode == 'normal')
search.extendSearch (extend)Alt+/ (editorTextFocus && dance.mode == 'normal')
search.next.addAdd next matchAlt+N (editorTextFocus && dance.mode == 'normal')N (editorTextFocus && dance.mode == 'visual')
search.previousSelect previous matchShift+N (editorTextFocus && dance.mode == 'normal')
search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal')Shift+N (editorTextFocus && dance.mode == 'visual')
search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal')Shift+8 (editorTextFocus && dance.mode == 'visual')NumPad_Multiply (editorTextFocus && dance.mode == 'visual')
search.selectionSearch current selectionShift+Alt+8 (editorTextFocus && dance.mode == 'normal')
seekseek.enclosingSelect to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal')
seek.objectSelect object
seek.seekSelect to character (excluded)T (editorTextFocus && dance.mode == 'normal')
seek.askObjectSelect whole objectAlt+A (editorTextFocus && dance.mode == 'normal')Alt+A (editorTextFocus && dance.mode == 'insert')
seek.askObject.endSelect to whole object end] (editorTextFocus && dance.mode == 'normal')
seek.askObject.end.extendExtend to whole object endShift+] (editorTextFocus && dance.mode == 'normal')
seek.askObject.innerSelect inner objectAlt+I (editorTextFocus && dance.mode == 'normal')Alt+I (editorTextFocus && dance.mode == 'insert')
seek.askObject.inner.endSelect to inner object endAlt+] (editorTextFocus && dance.mode == 'normal')
seek.askObject.inner.end.extendExtend to inner object endShift+Alt+] (editorTextFocus && dance.mode == 'normal')
seek.askObject.inner.startSelect to inner object startAlt+[ (editorTextFocus && dance.mode == 'normal')
seek.askObject.inner.start.extendExtend to inner object startShift+Alt+[ (editorTextFocus && dance.mode == 'normal')
seek.askObject.startSelect to whole object start[ (editorTextFocus && dance.mode == 'normal')
seek.askObject.start.extendExtend to whole object startShift+[ (editorTextFocus && dance.mode == 'normal')
seek.backwardSelect to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'normal')
seek.enclosing.backwardSelect to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'normal')
seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'visual')
seek.enclosing.extend.backwardExtend to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'visual')
seek.extendExtend to character (excluded)T (editorTextFocus && dance.mode == 'visual')
seek.extend.backwardExtend to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'visual')
seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal')
seek.included.backwardSelect to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'normal')
seek.included.extendExtend to character (included)F (editorTextFocus && dance.mode == 'visual')
seek.included.extend.backwardExtend to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'visual')
seek.word.backwardSelect to previous word startB (editorTextFocus && dance.mode == 'normal')
seek.word.backward.extendExtend to previous word startB (editorTextFocus && dance.mode == 'visual')
seek.word.extendExtend to next word startW (editorTextFocus && dance.mode == 'visual')
seek.word.wsSelect to next WORD startShift+W (editorTextFocus && dance.mode == 'normal')
seek.word.ws.backwardSelect to previous WORD startShift+B (editorTextFocus && dance.mode == 'normal')
seek.word.ws.backward.extendExtend to previous WORD startShift+B (editorTextFocus && dance.mode == 'visual')
seek.word.ws.extendExtend to next WORD startShift+W (editorTextFocus && dance.mode == 'visual')
seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.extendExtend to next word endE (editorTextFocus && dance.mode == 'visual')
seek.wordEnd.wsSelect to next WORD endShift+E (editorTextFocus && dance.mode == 'normal')
seek.wordEnd.ws.extendExtend to next WORD endShift+E (editorTextFocus && dance.mode == 'visual')
seek.wordSelect to next word startW (editorTextFocus && dance.mode == 'normal')
selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal')Shift+5 (editorTextFocus && dance.mode == 'visual')
select.firstVisibleLineSelect to first visible line
select.horizontallySelect horizontally
select.lastLineSelect to last line
select.lastVisibleLineSelect to last visible line
select.line.aboveSelect line above
select.line.above.extendExtend to line above
select.line.below.extendExtend to line belowX (editorTextFocus && dance.mode == 'normal')X (editorTextFocus && dance.mode == 'visual')
select.lineEndSelect to line end. TODO: helixAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal')
select.lineStartSelect to line startAlt+H (editorTextFocus && dance.mode == 'normal')Home (editorTextFocus && dance.mode == 'normal')
select.middleVisibleLineSelect to middle visible line
select.documentEnd.extendExtend to last character
select.documentEnd.jumpJump to last character
select.down.extendExtend downShift+Down (editorTextFocus && dance.mode == 'normal')J (editorTextFocus && dance.mode == 'visual')Down (editorTextFocus && dance.mode == 'visual')
select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal')
select.firstLine.extendExtend to first line
select.firstLine.jumpJump to first line
select.firstVisibleLine.extendExtend to first visible line
select.firstVisibleLine.jumpJump to first visible line
select.lastLine.extendExtend to last line
select.lastLine.jumpJump to last line
select.lastVisibleLine.extendExtend to last visible line
select.lastVisibleLine.jumpJump to last visible line
select.left.extendExtend leftShift+Left (editorTextFocus && dance.mode == 'normal')H (editorTextFocus && dance.mode == 'visual')Left (editorTextFocus && dance.mode == 'visual')
select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal')
select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal')
select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal')
select.lineStart.jumpJump to line start
select.lineStart.skipBlank.extendExtend to line start (skip blank)
select.lineStart.skipBlank.jumpJump to line start (skip blank)
select.middleVisibleLine.extendExtend to middle visible line
select.middleVisibleLine.jumpJump to middle visible line
select.right.extendExtend rightShift+Right (editorTextFocus && dance.mode == 'normal')L (editorTextFocus && dance.mode == 'visual')Right (editorTextFocus && dance.mode == 'visual')
select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal')
select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal')G (editorTextFocus && dance.mode == 'visual')
select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal')
select.up.extendExtend upShift+Up (editorTextFocus && dance.mode == 'normal')K (editorTextFocus && dance.mode == 'visual')Up (editorTextFocus && dance.mode == 'visual')
select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal')
select.toSelect to
select.verticallySelect vertically
selectionsselections.changeDirectionChange direction of selectionsAlt+; (editorTextFocus && dance.mode == 'normal')
selections.changeOrderReverse selections
selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal')Shift+C (editorTextFocus && dance.mode == 'visual')
selections.expandToLinesExpand to linesShift+X (editorTextFocus && dance.mode == 'normal')Shift+X (editorTextFocus && dance.mode == 'visual')
selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal')Shift+4 (editorTextFocus && dance.mode == 'visual')
selections.mergeMerge contiguous selectionsShift+Alt+- (editorTextFocus && dance.mode == 'normal')
selections.openOpen selected file
selections.pipePipe selectionsShift+Alt+\ (editorTextFocus && dance.mode == 'normal')
selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal'); (editorTextFocus && dance.mode == 'visual')
selections.restoreRestore selections. TODO: Needed?Alt+Z (editorTextFocus && dance.mode == 'normal')
selections.restore.withCurrentCombine register selections with current onesAlt+Z (editorTextFocus && dance.mode == 'normal')
selections.saveSave selectionsShift+Alt+Z (editorTextFocus && dance.mode == 'normal')
selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal')Y (editorTextFocus && dance.mode == 'visual')
selections.selectSelect within selectionsS (editorTextFocus && dance.mode == 'normal')S (editorTextFocus && dance.mode == 'visual')
selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal')Alt+, (editorTextFocus && dance.mode == 'visual')
selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal'), (editorTextFocus && dance.mode == 'visual')
selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal')Shift+Alt+C (editorTextFocus && dance.mode == 'normal')
selections.faceBackwardBackward selections
selections.faceForwardForward selectionsShift+Alt+; (editorTextFocus && dance.mode == 'normal')
selections.filter.regexpKeep matching selectionsShift+K (editorTextFocus && dance.mode == 'normal')Shift+K (editorTextFocus && dance.mode == 'visual')
selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal')Shift+Alt+K (editorTextFocus && dance.mode == 'visual')
selections.hideIndicesHide selection indices
selections.orderAscendingOrder selections ascending
selections.orderDescendingOrder selections descending
selections.pipe.appendPipe and appendShift+1 (editorTextFocus && dance.mode == 'normal')
selections.pipe.prependPipe and prependShift+Alt+1 (editorTextFocus && dance.mode == 'normal')
selections.pipe.replacePipe and replaceShift+\ (editorTextFocus && dance.mode == 'normal')
selections.reduce.edgesReduce selections to their endsShift+Alt+S (editorTextFocus && dance.mode == 'normal')
selections.showIndicesShow selection indices
selections.sortSort selections
selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal')Shift+S (editorTextFocus && dance.mode == 'visual')
selections.splitLinesSplit selections at line boundariesAlt+S (editorTextFocus && dance.mode == 'normal')Alt+S (editorTextFocus && dance.mode == 'visual')
selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal')Enter (editorTextFocus && dance.mode == 'visual')
selections.trimLinesTrim linesShift+Alt+X (editorTextFocus && dance.mode == 'normal')
selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal')Shift+- (editorTextFocus && dance.mode == 'visual')
selections.rotateselections.rotate.bothRotate selections clockwiseShift+Alt+9 (editorTextFocus && dance.mode == 'normal')
selections.rotate.contentsRotate selections clockwise (contents only)
selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal')Shift+9 (editorTextFocus && dance.mode == 'visual')
selections.rotate.both.reverseRotate selections counter-clockwiseShift+Alt+0 (editorTextFocus && dance.mode == 'normal')
selections.rotate.contents.reverseRotate selections counter-clockwise (contents only)
selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal')Shift+0 (editorTextFocus && dance.mode == 'visual')
viewview.lineReveals a position based on the main cursor
windowwindow.windowMenuShow window menuCtrl+W (editorTextFocus && dance.mode == 'normal')Ctrl+W (editorTextFocus && dance.mode == 'visual')
@@ -475,37 +279,22 @@ Specify `all` to paste all contents next to each selection. #### Additional commands -<<<<<<< HEAD -| 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 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 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) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | -| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (kakoune: normal) | `[".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", ... }]` | -======= -| Title | Identifier | Keybinding | Commands | -| ---------------------------------- | ----------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -| Pick register and replace | `selectRegister-insert` | `c-r` (normal), `c-r` (insert), `c-r` (insert) | `[".selectRegister", { +register }], [".edit.insert", { ... }]` | -| Paste before | `paste.before` | `s-p` (normal), `s-p` (visual) | `[".edit.insert", { handleNewLine: true, where: "start", ... }]` | -| Paste after | `paste.after` | `p` (normal), `p` (visual) | `[".edit.insert", { handleNewLine: true, where: "end" , ... }]` | -| Paste before and select | `paste.before.select` | `s-a-p` (normal), `s-a-p` (visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | -| Paste after and select | `paste.after.select` | `a-p` (normal), `a-p` (visual) | `[".edit.insert", { handleNewLine: true, where: "end" , shift: "select", ... }]` | -| Delete | `delete` | `a-d` (normal), `a-d` (visual) | `[".edit.insert", { register: "_", ... }]` | -| Delete and switch to Insert | `delete-insert` | `a-c` (normal), `a-c` (visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | -| Copy and delete | `yank-delete` | `d` (normal), `d` (visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | -| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (normal), `c` (visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | -| Copy and replace | `yank-replace` | `s-r` (normal), `s-r` (visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Commands | +| ---------------------------------- | ------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual) | `[".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` (helix: normal), `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | +| Paste after and select | `paste.after.select` | `p` (helix: normal) , `p` (helix: visual) | `[".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` (helix: normal), `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | +| Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) , `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | +| Delete | `delete` | `a-d` (helix: normal) , `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | +| Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) , `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and delete | `yank-delete` | `d` (helix: normal) , `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | +| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) , `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and replace | `yank-replace` | `s-r` (helix: normal) , `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | This command: - accepts a register (by default, it uses `dquote`). @@ -529,11 +318,8 @@ Join lines. This command: - takes an argument `separator` of type `string`. -<<<<<<< HEAD -Default keybinding: `a-j` (kakoune: normal) -======= -Default keybinding: `s-j` (normal), `s-j` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-j` (helix: normal) +`s-j` (helix: visual) @@ -557,11 +343,8 @@ Indent selected lines. This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `>` (kakoune: normal) -======= -Default keybinding: `>` (normal), `>` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `>` (helix: normal) +`>` (helix: visual) @@ -573,11 +356,8 @@ Indent selected lines (including empty lines). This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `a->` (kakoune: normal) -======= -Default keybinding: `a->` (normal), `a->` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `a->` (helix: normal) +`a->` (helix: visual) @@ -589,11 +369,8 @@ Deindent selected lines. This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `a-<` (kakoune: normal) -======= -Default keybinding: `a-<` (normal), `a-<` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `a-<` (helix: normal) +`a-<` (helix: visual) @@ -605,11 +382,8 @@ Deindent selected lines (including incomplete indent). This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `<` (kakoune: normal) -======= -Default keybinding: `<` (normal), `<` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `<` (helix: normal) +`<` (helix: visual) @@ -619,11 +393,8 @@ Transform to lower case. -<<<<<<< HEAD -Default keybinding: `` ` `` (kakoune: normal) -======= -Default keybinding: `` ` `` (normal), `` ` `` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `` ` `` (helix: normal) +`` ` `` (helix: visual) @@ -633,11 +404,8 @@ Transform to upper case. -<<<<<<< HEAD -Default keybinding: `` s-` `` (kakoune: normal) -======= -Default keybinding: `` a-` `` (normal), `` a-` `` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `` a-` `` (helix: normal) +`` a-` `` (helix: visual) @@ -647,11 +415,8 @@ Swap case. -<<<<<<< HEAD -Default keybinding: `` a-` `` (kakoune: normal) -======= -Default keybinding: `~` (normal), `~` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `~` (helix: normal) +`~` (helix: visual) @@ -664,11 +429,8 @@ This command: - may be repeated with a given number of repetitions. - takes an input `input` of type `string`. -<<<<<<< HEAD -Default keybinding: `r` (kakoune: normal) -======= -Default keybinding: `r` (normal), `r` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `r` (helix: normal) +`r` (helix: visual) @@ -683,11 +445,8 @@ before the first character of each selection. This command: - takes an argument `fill` of type `string`. -<<<<<<< HEAD -Default keybinding: `&` (kakoune: normal) -======= -Default keybinding: `&` (normal), `&` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `&` (helix: normal) +`&` (helix: visual) @@ -702,15 +461,12 @@ given) to all other ones. This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `a-&` (kakoune: normal) -======= -Default keybinding: `a-&` (normal), `a-&` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `a-&` (helix: normal) +`a-&` (helix: visual) -### [`edit.newLine.above`](./edit.ts#L347-L365) +### [`edit.newLine.above`](./edit.ts#L347-L364) Insert new line above each selection. @@ -720,29 +476,17 @@ keep the current selections. #### Additional keybindings -<<<<<<< HEAD -| 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` (normal), `s-o` (visual) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Commands | +| ------------------------------------------ | ---------------------- | -------------------------------------------- | --------------------------------------------------------------------------------- | +| Insert new line above and switch to insert | `newLine.above.insert` | `s-o` (helix: normal), `s-o` (helix: visual) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -<<<<<<< HEAD -Default keybinding: `s-a-o` (kakoune: normal) -======= -Default keybinding: `s-a-o` (normal), `s-a-o` (visual) ->>>>>>> 009823c (fixed match replace) - -### [`edit.newLine.below`](./edit.ts#L385-L403) +### [`edit.newLine.below`](./edit.ts#L384-L401) Insert new line below each selection. @@ -752,26 +496,14 @@ keep the current selections. #### Additional keybindings -<<<<<<< HEAD -| 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` (normal), `o` (visual) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Commands | +| ------------------------------------------ | ---------------------- | ---------------------------------------- | --------------------------------------------------------------------------------- | +| Insert new line below and switch to insert | `newLine.below.insert` | `o` (helix: normal), `o` (helix: visual) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -<<<<<<< HEAD -Default keybinding: `a-o` (kakoune: normal) -======= -Default keybinding: `a-o` (normal), `a-o` (visual) ->>>>>>> 009823c (fixed match replace) - ## [`history`](./history.ts) Interact with history. @@ -786,11 +518,8 @@ Undo. This command: - does not require an active text editor. -<<<<<<< HEAD -Default keybinding: `u` (kakoune: normal) -======= -Default keybinding: `u` (normal), `u` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `u` (helix: normal) +`u` (helix: visual) @@ -802,11 +531,8 @@ Redo. This command: - does not require an active text editor. -<<<<<<< HEAD -Default keybinding: `s-u` (kakoune: normal) -======= -Default keybinding: `s-u` (normal), `s-u` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-u` (helix: normal) +`s-u` (helix: visual) @@ -858,12 +584,7 @@ Repeat last edit without a command. This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `.` (kakoune: normal) -`NumPad_Decimal` (kakoune: normal) -======= -Default keybinding: `.` (normal), `NumPad_Decimal` (normal), `.` (visual), `NumPad_Decimal` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `.` (helix: normal) , `NumPad_Decimal` (helix: normal) , `.` (helix: visual) , `NumPad_Decimal` (helix: visual) @@ -877,11 +598,8 @@ This command: - does not require an active text editor. - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `q` (kakoune: normal) -======= -Default keybinding: `q` (normal), `q` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `q` (helix: normal) +`q` (helix: visual) @@ -893,11 +611,7 @@ Start recording. This command: - accepts a register (by default, it uses `arobase`). -<<<<<<< HEAD -Default keybinding: `s-q` (kakoune: normal, !recording) -======= -Default keybinding: `s-q` (normal, !recording), `s-q` (visual, !recording) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-q` (helix: normal, !recording) , `s-q` (helix: visual, !recording) @@ -909,8 +623,7 @@ Stop recording. This command: - accepts a register (by default, it uses `arobase`). -Default keybinding: `escape` (kakoune: normal, recording) -`s-q` (kakoune: normal, recording) +Default keybinding: `escape` (helix: normal, recording) , `s-q` (helix: normal, recording) , `escape` (helix: visual, recording) , `s-q` (helix: visual, recording) ## [`keybindings`](./keybindings.ts) @@ -929,10 +642,10 @@ This command: Match menu. -| Title | Keybinding | Command | -| ----------------------- | ------------ | ---------------------------------- | -| Show match menu | `m` (normal) | `[".openMenu", { menu: "match" }]` | -| Show match menu | `m` (visual) | `[".openMenu", { menu: "match" }]` | +| Title | Keybinding | Command | +| ----------------------- | ------------------- | ---------------------------------- | +| Show match menu | `m` (helix: normal) | `[".openMenu", { menu: "match" }]` | +| Show match menu | `m` (helix: visual) | `[".openMenu", { menu: "match" }]` | @@ -972,20 +685,14 @@ Miscellaneous commands that don't deserve their own category. By default, Dance also exports the following keybindings for existing commands: -<<<<<<< HEAD -| Keybinding | Command | -| -------------------- | -------------------------------------------- | -| `s-;` (core: normal) | `["workbench.action.showCommands", { ... }]` | -======= -| Keybinding | Command | -| ------------------------------ | -------------------------------------------- | -| `s-;` (normal), `s-;` (visual) | `["workbench.action.showCommands", { ... }]` | -| `c-c` (normal), `c-c` (visual) | `["editor.action.commentLine", { ... }]` | ->>>>>>> 9e59a1b (feat: toggle comments with ctrl+c) +| Keybinding | Command | +| -------------------------------------------- | -------------------------------------------- | +| `s-;` (helix: normal), `s-;` (helix: visual) | `["workbench.action.showCommands", { ... }]` | +| `c-c` (helix: normal), `c-c` (helix: visual) | `["editor.action.commentLine", { ... }]` | -### [`cancel`](./misc.ts#L20-L25) +### [`cancel`](./misc.ts#L21-L26) Cancel Dance operation. @@ -998,7 +705,7 @@ Default keybinding: `escape` (core: normal, !recording, "!markersNavigationVisib -### [`ignore`](./misc.ts#L31-L34) +### [`ignore`](./misc.ts#L32-L35) Ignore key. @@ -1007,7 +714,7 @@ This command: -### [`run`](./misc.ts#L40-L149) +### [`run`](./misc.ts#L41-L150) Run code. @@ -1117,7 +824,7 @@ This command: -### [`selectRegister`](./misc.ts#L185-L199) +### [`selectRegister`](./misc.ts#L186-L200) Select register for next command. @@ -1130,11 +837,12 @@ current document. This command: - takes an input `register` of type `string | Register`. -Default keybinding: `"` (kakoune: normal) +Default keybinding: `"` (helix: normal) +`"` (helix: visual) -### [`updateRegister`](./misc.ts#L215-L226) +### [`updateRegister`](./misc.ts#L216-L227) Update the contents of a register. @@ -1145,7 +853,7 @@ This command: -### [`updateCount`](./misc.ts#L252-L281) +### [`updateCount`](./misc.ts#L253-L282) Update Dance count. @@ -1153,33 +861,18 @@ Update the current counter used to repeat the next command. #### Additional keybindings -<<<<<<< HEAD -| Title | Keybinding | Command | -| ------------------------------ | -------------------------------------------- | ------------------------------------ | -| Add the digit 0 to the counter | `0` (core: normal), `NumPad0` (core: normal) | `[".updateCount", { addDigits: 0 }]` | -| Add the digit 1 to the counter | `1` (core: normal), `NumPad1` (core: normal) | `[".updateCount", { addDigits: 1 }]` | -| Add the digit 2 to the counter | `2` (core: normal), `NumPad2` (core: normal) | `[".updateCount", { addDigits: 2 }]` | -| Add the digit 3 to the counter | `3` (core: normal), `NumPad3` (core: normal) | `[".updateCount", { addDigits: 3 }]` | -| Add the digit 4 to the counter | `4` (core: normal), `NumPad4` (core: normal) | `[".updateCount", { addDigits: 4 }]` | -| Add the digit 5 to the counter | `5` (core: normal), `NumPad5` (core: normal) | `[".updateCount", { addDigits: 5 }]` | -| Add the digit 6 to the counter | `6` (core: normal), `NumPad6` (core: normal) | `[".updateCount", { addDigits: 6 }]` | -| Add the digit 7 to the counter | `7` (core: normal), `NumPad7` (core: normal) | `[".updateCount", { addDigits: 7 }]` | -| Add the digit 8 to the counter | `8` (core: normal), `NumPad8` (core: normal) | `[".updateCount", { addDigits: 8 }]` | -| Add the digit 9 to the counter | `9` (core: normal), `NumPad9` (core: normal) | `[".updateCount", { addDigits: 9 }]` | -======= -| Title | Keybinding | Command | -| ------------------------------ | ------------------------------------------------------------------ | ------------------------------------ | -| Add the digit 0 to the counter | `0` (normal), `NumPad0` (normal), `0` (visual), `NumPad0` (visual) | `[".updateCount", { addDigits: 0 }]` | -| Add the digit 1 to the counter | `1` (normal), `NumPad1` (normal), `1` (visual), `NumPad1` (visual) | `[".updateCount", { addDigits: 1 }]` | -| Add the digit 2 to the counter | `2` (normal), `NumPad2` (normal), `2` (visual), `NumPad2` (visual) | `[".updateCount", { addDigits: 2 }]` | -| Add the digit 3 to the counter | `3` (normal), `NumPad3` (normal), `3` (visual), `NumPad3` (visual) | `[".updateCount", { addDigits: 3 }]` | -| Add the digit 4 to the counter | `4` (normal), `NumPad4` (normal), `4` (visual), `NumPad4` (visual) | `[".updateCount", { addDigits: 4 }]` | -| Add the digit 5 to the counter | `5` (normal), `NumPad5` (normal), `5` (visual), `NumPad5` (visual) | `[".updateCount", { addDigits: 5 }]` | -| Add the digit 6 to the counter | `6` (normal), `NumPad6` (normal), `6` (visual), `NumPad6` (visual) | `[".updateCount", { addDigits: 6 }]` | -| Add the digit 7 to the counter | `7` (normal), `NumPad7` (normal), `7` (visual), `NumPad7` (visual) | `[".updateCount", { addDigits: 7 }]` | -| Add the digit 8 to the counter | `8` (normal), `NumPad8` (normal), `8` (visual), `NumPad8` (visual) | `[".updateCount", { addDigits: 8 }]` | -| Add the digit 9 to the counter | `9` (normal), `NumPad9` (normal), `9` (visual), `NumPad9` (visual) | `[".updateCount", { addDigits: 9 }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Keybinding | Command | +| ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------ | +| Add the digit 0 to the counter | `0` (helix: normal), `NumPad0` (helix: normal), `0` (helix: visual), `NumPad0` (helix: visual) | `[".updateCount", { addDigits: 0 }]` | +| Add the digit 1 to the counter | `1` (helix: normal), `NumPad1` (helix: normal), `1` (helix: visual), `NumPad1` (helix: visual) | `[".updateCount", { addDigits: 1 }]` | +| Add the digit 2 to the counter | `2` (helix: normal), `NumPad2` (helix: normal), `2` (helix: visual), `NumPad2` (helix: visual) | `[".updateCount", { addDigits: 2 }]` | +| Add the digit 3 to the counter | `3` (helix: normal), `NumPad3` (helix: normal), `3` (helix: visual), `NumPad3` (helix: visual) | `[".updateCount", { addDigits: 3 }]` | +| Add the digit 4 to the counter | `4` (helix: normal), `NumPad4` (helix: normal), `4` (helix: visual), `NumPad4` (helix: visual) | `[".updateCount", { addDigits: 4 }]` | +| Add the digit 5 to the counter | `5` (helix: normal), `NumPad5` (helix: normal), `5` (helix: visual), `NumPad5` (helix: visual) | `[".updateCount", { addDigits: 5 }]` | +| Add the digit 6 to the counter | `6` (helix: normal), `NumPad6` (helix: normal), `6` (helix: visual), `NumPad6` (helix: visual) | `[".updateCount", { addDigits: 6 }]` | +| Add the digit 7 to the counter | `7` (helix: normal), `NumPad7` (helix: normal), `7` (helix: visual), `NumPad7` (helix: visual) | `[".updateCount", { addDigits: 7 }]` | +| Add the digit 8 to the counter | `8` (helix: normal), `NumPad8` (helix: normal), `8` (helix: visual), `NumPad8` (helix: visual) | `[".updateCount", { addDigits: 8 }]` | +| Add the digit 9 to the counter | `9` (helix: normal), `NumPad9` (helix: normal), `9` (helix: visual), `NumPad9` (helix: visual) | `[".updateCount", { addDigits: 9 }]` | This command: @@ -1189,7 +882,7 @@ This command: -### [`openMenu`](./misc.ts#L309-L331) +### [`openMenu`](./misc.ts#L310-L332) Open menu. @@ -1213,7 +906,7 @@ This command: -### [`changeInput`](./misc.ts#L372-L386) +### [`changeInput`](./misc.ts#L373-L387) Change current input. @@ -1230,7 +923,7 @@ This command: -### [`ifEmpty`](./misc.ts#L396-L407) +### [`ifEmpty`](./misc.ts#L397-L408) Executes one of the specified commands depending on whether the current selections are empty. @@ -1252,64 +945,20 @@ Set Dance mode. #### Variants -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| ------------------ | ------------ | -------------------------- | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (kakoune: insert) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Title | Identifier | Keybinding | Command | +| ------------------ | ------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------- | +| Set mode to Normal | `set.normal` | `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | +| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | 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 | Command | -| ------------------ | ------------ | ----------------- | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (insert) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | -| Set mode to Normal | `set.normal` | `escape` (visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Visual | `set.visual` | | `[".modes.set", { mode: "visual" }]` | - -Other variants are provided to switch to insert mode: - -| Title | Identifier | Keybinding | Commands | -| -------------------- | ------------------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Visual | `visual` | `v` (normal) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "visual", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | -| Normal | `normal` | `v` (visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "normal", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | -| Insert before | `insert.before` | `i` (normal) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | -| Insert after | `insert.after` | `a` (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` (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` (normal) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | ->>>>>>> 009823c (fixed match replace) -======= -| Title | Identifier | Keybinding | Command | -| ------------------ | ------------ | ------------------------------------ | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (insert), `escape` (visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | -| Set mode to Visual | `set.visual` | | `[".modes.set", { mode: "visual" }]` | -======= -| Title | Identifier | Keybinding | Command | -| ------------------ | ------------ | -------------------------------------------------- | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (insert), `escape` (visual), `v` (visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | -| Set mode to Visual | `set.visual` | `v` (normal) | `[".modes.set", { mode: "visual" }]` | ->>>>>>> 5356160 (- fixed b and w in visual mode shortening selection on the wrong side of the selection) - -Other variants are provided to switch to insert mode: - -| Title | Identifier | Keybinding | Commands | -| -------------------- | ------------------ | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Insert before | `insert.before` | `i` (normal), `i` (visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | -| Insert after | `insert.after` | `a` (normal), `a` (visual) | `[".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` (normal), `s-i` (visual) | `[".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` (normal), `s-a` (visual) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | ->>>>>>> 8587503 (- fixed insert mode not accessible from visual mode) +| Title | Identifier | Keybinding | Commands | +| -------------------- | ------------------ | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Insert before | `insert.before` | `i` (helix: normal), `i` (helix: visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | +| Insert after | `insert.after` | `a` (helix: normal), `a` (helix: visual) | `[".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` (helix: normal), `s-i` (helix: visual) | `[".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` (helix: normal), `s-a` (helix: visual) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | This command: @@ -1344,19 +993,11 @@ Search for patterns and replace or add selections. Search. -<<<<<<< HEAD -| 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` | `a-/` (normal) | `[".search", { shift: "extend", ... }]` | -| Search backward | `backward` | `?` (normal) | `[".search", { direction: -1 , ... }]` | -| Search backward (extend) | `backward.extend` | `a-?` (normal) | `[".search", { direction: -1, shift: "extend", ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| ------------------------ | ----------------- | --------------------- | ------------------------------------------------------ | +| Search (extend) | `extend` | `a-/` (helix: normal) | `[".search", { shift: "extend", ... }]` | +| Search backward | `backward` | `?` (helix: normal) | `[".search", { direction: -1 , ... }]` | +| Search backward (extend) | `backward.extend` | `a-?` (helix: normal) | `[".search", { direction: -1, shift: "extend", ... }]` | This command: - accepts a register (by default, it uses `slash`). @@ -1365,12 +1006,7 @@ This command: - takes an argument `add` of type `boolean`. - takes an argument `interactive` of type `boolean`. -<<<<<<< HEAD -Default keybinding: `/` (kakoune: normal) -`NumPad_Divide` (kakoune: normal) -======= -Default keybinding: `/` (normal), `NumPad_Divide` (normal), `/` (visual), `NumPad_Divide` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `/` (helix: normal) , `NumPad_Divide` (helix: normal) , `/` (helix: visual) , `NumPad_Divide` (helix: visual) @@ -1379,22 +1015,15 @@ Default keybinding: `/` (normal), `NumPad_Divide` (normal), `/` (visual), `NumPa Search current selection. -<<<<<<< HEAD -| 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` | `*` (normal), `NumPad_Multiply` (normal), `*` (visual), `NumPad_Multiply` (visual) | `[".search.selection", { smart: true, +register }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| -------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | +| Search current selection (smart) | `selection.smart` | `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) | `[".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-*` (helix: normal) , `a-NumPad_Multiply` (helix: normal) @@ -1403,26 +1032,18 @@ Default keybinding: `a-*` (kakoune: normal) Select next match. -<<<<<<< HEAD -| 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` | `a-n` (normal), `n` (visual) | `[".search.next", { add: true, ... }]` | -| Select previous match | `previous` | `s-n` (normal) | `[".search.next", { direction: -1 , ... }]` | -| Add previous match | `previous.add` | `s-a-n` (normal), `s-n` (visual) | `[".search.next", { direction: -1, add: true, ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| --------------------- | -------------- | ---------------------------------------------- | ----------------------------------------------------- | +| Add next match | `next.add` | `a-n` (helix: normal), `n` (helix: visual) | `[".search.next", { add: true, ... }]` | +| Select previous match | `previous` | `s-n` (helix: normal) | `[".search.next", { direction: -1 , ... }]` | +| Add previous match | `previous.add` | `s-a-n` (helix: normal), `s-n` (helix: visual) | `[".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` (helix: normal) ## [`seek`](./seek.ts) @@ -1437,27 +1058,15 @@ Select to character (excluded). #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| ---------------------------------------- | -------------------------- | ------------------------- | ------------------------------------------------------------------- | -| Extend to character (excluded) | `extend` | `s-t` (kakoune: normal) | `[".seek", { shift: "extend" , ... }]` | -| Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal) | `[".seek", { direction: -1, ... }]` | -| Extend to character (excluded, backward) | `extend.backward` | `s-a-t` (kakoune: normal) | `[".seek", { shift: "extend", direction: -1, ... }]` | -| Select to character (included) | `included` | `f` (kakoune: normal) | `[".seek", { include: true , ... }]` | -| Extend to character (included) | `included.extend` | `s-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend" , ... }]` | -| Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal) | `[".seek", { include: true, direction: -1, ... }]` | -| Extend to character (included, backward) | `included.extend.backward` | `s-a-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | -======= -| Title | Identifier | Keybinding | Command | -| ---------------------------------------- | -------------------------- | ---------------- | ------------------------------------------------------------------- | -| Select to character (excluded, backward) | `backward` | `s-t` (normal) | `[".seek", { direction: -1, ... }]` | -| Select to character (included) | `included` | `f` (normal) | `[".seek", { include: true , ... }]` | -| Select to character (included, backward) | `included.backward` | `s-f` (normal) | `[".seek", { include: true, direction: -1, ... }]` | -| Extend to character (excluded) | `extend` | `t` (visual) | `[".seek", { shift: "extend" , ... }]` | -| Extend to character (excluded, backward) | `extend.backward` | `s-t` (visual) | `[".seek", { shift: "extend", direction: -1, ... }]` | -| Extend to character (included) | `included.extend` | `f` (visual) | `[".seek", { include: true, shift: "extend" , ... }]` | -| Extend to character (included, backward) | `included.extend.backward` | `s-f` (visual) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| ---------------------------------------- | -------------------------- | ----------------------- | ------------------------------------------------------------------- | +| Select to character (excluded, backward) | `backward` | `s-t` (helix: normal) | `[".seek", { direction: -1, ... }]` | +| Select to character (included) | `included` | `f` (helix: normal) | `[".seek", { include: true , ... }]` | +| Select to character (included, backward) | `included.backward` | `s-f` (helix: normal) | `[".seek", { include: true, direction: -1, ... }]` | +| Extend to character (excluded) | `extend` | `t` (helix: visual) | `[".seek", { shift: "extend" , ... }]` | +| Extend to character (excluded, backward) | `extend.backward` | `s-t` (helix: visual) | `[".seek", { shift: "extend", direction: -1, ... }]` | +| Extend to character (included) | `included.extend` | `f` (helix: visual) | `[".seek", { include: true, shift: "extend" , ... }]` | +| Extend to character (included, backward) | `included.extend.backward` | `s-f` (helix: visual) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1475,29 +1084,17 @@ Select to next enclosing character. #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| -------------------------------------- | --------------------------- | ------------------------- | -------------------------------------------------------------- | -| Extend to next enclosing character | `enclosing.extend` | `s-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend" , ... }]` | -| Select to previous enclosing character | `enclosing.backward` | `a-m` (kakoune: normal) | `[".seek.enclosing", { direction: -1, ... }]` | -| Extend to previous enclosing character | `enclosing.extend.backward` | `s-a-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | -======= -| Title | Identifier | Keybinding | Command | -| -------------------------------------- | --------------------------- | -------------- | -------------------------------------------------------------- | -| Extend to next enclosing character | `enclosing.extend` | `s-m` (visual) | `[".seek.enclosing", { shift: "extend" , ... }]` | -| Select to previous enclosing character | `enclosing.backward` | `a-m` (normal) | `[".seek.enclosing", { direction: -1, ... }]` | -| Extend to previous enclosing character | `enclosing.extend.backward` | `a-m` (visual) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| -------------------------------------- | --------------------------- | --------------------- | -------------------------------------------------------------- | +| Extend to next enclosing character | `enclosing.extend` | `s-m` (helix: visual) | `[".seek.enclosing", { shift: "extend" , ... }]` | +| Select to previous enclosing character | `enclosing.backward` | `a-m` (helix: normal) | `[".seek.enclosing", { direction: -1, ... }]` | +| Extend to previous enclosing character | `enclosing.extend.backward` | `a-m` (helix: visual) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | This command: - takes an argument `open` of type `boolean`. - takes an argument `pairs` of type `readonly string[]`. -<<<<<<< HEAD -Default keybinding: `m` (kakoune: normal) -======= -Default keybinding: `s-m` (normal) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-m` (helix: normal) @@ -1510,46 +1107,30 @@ Select the word and following whitespaces on the right of the end of each select #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| -------------------------------------------- | ------------------------- | ------------------------- | ------------------------------------------------------------------------------------- | -| Extend to next word start | `word.extend` | `s-w` (kakoune: normal) | `[".seek.word", { shift: "extend" , ... }]` | -| Select to previous word start | `word.backward` | `b` (kakoune: normal) | `[".seek.word", { direction: -1, ... }]` | -| Extend to previous word start | `word.extend.backward` | `s-b` (kakoune: normal) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | -| Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal) | `[".seek.word", { ws: true , ... }]` | -| Extend to next non-whitespace word start | `word.ws.extend` | `s-a-w` (kakoune: normal) | `[".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, ... }]` | -| Extend to previous non-whitespace word start | `word.ws.extend.backward` | `s-a-b` (kakoune: normal) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | -| Select to next word end | `wordEnd` | `e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | -| Extend to next word end | `wordEnd.extend` | `s-e` (kakoune: normal) | `[".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 , ... }]` | -| Extend to next non-whitespace word end | `wordEnd.ws.extend` | `s-a-e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , ... }]` | -======= -| Title | Identifier | Keybinding | Command | -| -------------------------------------------- | ------------------------- | ---------------- | ------------------------------------------------------------------------------------ | -| Select to next WORD start | `word.ws` | `s-w` (normal) | `[".seek.word", { ws: true , ... }]` | -| Select to previous word start | `word.backward` | `b` (normal) | `[".seek.word", { direction: -1, ... }]` | -| Select to previous WORD start | `word.ws.backward` | `s-b` (normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | -| Select to next word end | `wordEnd` | `e` (normal) | `[".seek.word", { stopAtEnd: true , ... }]` | -| Select to next WORD end | `wordEnd.ws` | `s-e` (normal) | `[".seek.word", { stopAtEnd: true, ws: true , ... }]` | -| Extend to next word start | `word.extend` | `w` (visual) | `[".seek.word", { shift: "extend" , ... }]` | -| Extend to next WORD start | `word.ws.extend` | `s-w` (visual) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | -| Extend to previous word start | `word.backward.extend` | `b` (visual) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | -| Extend to previous WORD start | `word.ws.backward.extend` | `s-b` (visual) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | -| Extend to next word end | `wordEnd.extend` | `e` (visual) | `[".seek.word", { stopAtEnd: true, shift: "extend" , ... }]` | -| Extend to next WORD end | `wordEnd.ws.extend` | `s-e` (visual) | `[".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| -------------------------------------------- | ------------------------- | ----------------------- | ------------------------------------------------------------------------------------ | +| Select to next WORD start | `word.ws` | `s-w` (helix: normal) | `[".seek.word", { ws: true , ... }]` | +| Select to previous word start | `word.backward` | `b` (helix: normal) | `[".seek.word", { direction: -1, ... }]` | +| Select to previous WORD start | `word.ws.backward` | `s-b` (helix: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | +| Select to next word end | `wordEnd` | `e` (helix: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | +| Select to next WORD end | `wordEnd.ws` | `s-e` (helix: normal) | `[".seek.word", { stopAtEnd: true, ws: true , ... }]` | +| Extend to next word start | `word.extend` | `w` (helix: visual) | `[".seek.word", { shift: "extend" , ... }]` | +| Extend to next WORD start | `word.ws.extend` | `s-w` (helix: visual) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | +| Extend to previous word start | `word.backward.extend` | `b` (helix: visual) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | +| Extend to previous WORD start | `word.ws.backward.extend` | `s-b` (helix: visual) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | +| Extend to next word end | `wordEnd.extend` | `e` (helix: visual) | `[".seek.word", { stopAtEnd: true, shift: "extend" , ... }]` | +| Extend to next WORD end | `wordEnd.ws.extend` | `s-e` (helix: visual) | `[".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `stopAtEnd` of type `boolean`. - takes an argument `ws` of type `boolean`. -Default keybinding: `w` (kakoune: normal) +Default keybinding: `w` (helix: normal) -### [`seek.object`](./seek.ts#L247-L287) +### [`seek.object`](./seek.ts#L248-L288) Select object. @@ -1616,11 +1197,8 @@ Select whole buffer. -<<<<<<< HEAD -Default keybinding: `%` (kakoune: normal) -======= -Default keybinding: `%` (normal), `%` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `%` (helix: normal) +`%` (helix: visual) @@ -1633,43 +1211,25 @@ Select vertically. #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| ----------- | ------------- | --------------------------------------------------- | ----------------------------------------------------------------- | -| Jump down | `down.jump` | `j` (kakoune: normal) , `down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | -| Extend down | `down.extend` | `s-j` (kakoune: normal), `s-down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | -| Jump up | `up.jump` | `k` (kakoune: normal) , `up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | -| Extend up | `up.extend` | `s-k` (kakoune: normal), `s-up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| ----------- | ------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | +| Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | +| Extend down | `down.extend` | `s-j` (helix: normal), `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | +| Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | +| Extend up | `up.extend` | `s-k` (helix: normal), `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) | `[".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" }]` | -======= -| Title | Identifier | Keybinding | Command | -| ----------- | ------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------- | -| Jump down | `down.jump` | `j` (normal) , `down` (normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | -| Extend down | `down.extend` | `s-down` (normal), `j` (visual), `down` (visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | -| Jump up | `up.jump` | `k` (normal) , `up` (normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | -| Extend up | `up.extend` | `s-up` (normal) , `k` (visual), `up` (visual) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | - -The following keybindings are also defined: - -| Keybinding | Command | -| ------------------------------ | ---------------------------------------------------------------------------- | -| `c-f` (normal), `c-f` (insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | -| `c-d` (normal), `c-d` (insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | -| `c-b` (normal), `c-b` (insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | -| `c-u` (normal), `c-u` (insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | -| `c-f` (visual) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | -| `c-d` (visual) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | -| `c-b` (visual) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | -| `c-u` (visual) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | ->>>>>>> 009823c (fixed match replace) +| Keybinding | Command | +| -------------------------------------------- | ---------------------------------------------------------------------------- | +| `c-f` (helix: normal), `c-f` (helix: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | +| `c-d` (helix: normal), `c-d` (helix: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | +| `c-b` (helix: normal), `c-b` (helix: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | +| `c-u` (helix: normal), `c-u` (helix: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | +| `c-f` (helix: visual) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | +| `c-d` (helix: visual) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | +| `c-b` (helix: visual) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | +| `c-u` (helix: visual) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | This command: - may be repeated with a given number of repetitions. @@ -1687,21 +1247,12 @@ TODO: keep s-left and s-right? #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| ------------ | -------------- | ---------------------------------------------------- | ------------------------------------------------------------------- | -| Jump right | `right.jump` | `l` (kakoune: normal) , `right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | -| Extend right | `right.extend` | `s-l` (kakoune: normal), `s-right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | -| Jump left | `left.jump` | `h` (kakoune: normal) , `left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | -| Extend left | `left.extend` | `s-h` (kakoune: normal), `s-left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | -======= -| Title | Identifier | Keybinding | Command | -| ------------ | -------------- | -------------------------------------------------- | ------------------------------------------------------------------- | -| Jump right | `right.jump` | `l` (normal), `right` (normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | -| Extend right | `right.extend` | `s-right` (normal), `l` (visual), `right` (visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | -| Jump left | `left.jump` | `h` (normal), `left` (normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | -| Extend left | `left.extend` | `s-left` (normal), `h` (visual), `left` (visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| ------------ | -------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | +| Jump right | `right.jump` | `l` (helix: normal) , `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | +| Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual) , `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | +| Jump left | `left.jump` | `h` (helix: normal) , `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | +| Extend left | `left.extend` | `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1718,30 +1269,18 @@ line. If no count is specified, this command will shift open the `goto` menu. #### Variants -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| --------- | ----------- | ----------------------- | ------------------------------------------ | -| Go to | `to.jump` | `g` (kakoune: normal) | `[".select.to", { shift: "jump" , ... }]` | -| Extend to | `to.extend` | `s-g` (kakoune: normal) | `[".select.to", { shift: "extend", ... }]` | -======= -| Title | Identifier | Keybinding | Command | -| --------- | ----------- | ---------------------------- | ------------------------------------------ | -| Go to | `to.jump` | `g` (normal) | `[".select.to", { shift: "jump" , ... }]` | -| Extend to | `to.extend` | `s-g` (normal), `g` (visual) | `[".select.to", { shift: "extend", ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| --------- | ----------- | ------------------------------------------ | ------------------------------------------ | +| Go to | `to.jump` | `g` (helix: normal) | `[".select.to", { shift: "jump" , ... }]` | +| Extend to | `to.extend` | `s-g` (helix: normal), `g` (helix: visual) | `[".select.to", { shift: "extend", ... }]` | This command: - accepts an argument of type `object`. - may be repeated with a given number of repetitions. -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.line.below`](./select.ts#L314-L317) -======= -### [`select.line.below`](./select.ts#L322-L327) ->>>>>>> 009823c (fixed match replace) +### [`select.line.below`](./select.ts#L322-L325) Select line below. @@ -1750,41 +1289,20 @@ This command: -<<<<<<< HEAD -### [`select.line.below.extend`](./select.ts#L342-L345) -======= -### [`select.line.below.extend`](./select.ts#L352-L357) ->>>>>>> 009823c (fixed match replace) -======= - - -### [`select.line.below.extend`](./select.ts#L347-L352) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.line.below.extend`](./select.ts#L350-L355) Extend to line below. + This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -<<<<<<< HEAD - - -### [`select.line.above`](./select.ts#L372-L375) -======= -Default keybinding: `s-x` (normal), `x` (visual) +Default keybinding: `x` (helix: normal) +`x` (helix: visual) -### [`select.line.above`](./select.ts#L384-L387) ->>>>>>> 009823c (fixed match replace) -======= -Default keybinding: `x` (normal), `x` (visual) - - - -### [`select.line.above`](./select.ts#L379-L382) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.line.above`](./select.ts#L382-L385) Select line above. @@ -1793,15 +1311,7 @@ This command: -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.line.above.extend`](./select.ts#L399-L402) -======= -### [`select.line.above.extend`](./select.ts#L411-L414) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.line.above.extend`](./select.ts#L406-L409) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.line.above.extend`](./select.ts#L409-L412) Extend to line above. @@ -1810,48 +1320,32 @@ This command: -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.lineStart`](./select.ts#L448-L470) -======= -### [`select.lineStart`](./select.ts#L460-L482) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.lineStart`](./select.ts#L455-L477) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.lineStart`](./select.ts#L458-L480) 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` (helix: normal), `s-home` (helix: 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", ... }]` | 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) +Default keybinding: `a-h` (helix: normal) +`home` (helix: normal) -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.lineEnd`](./select.ts#L495-L517) -======= -### [`select.lineEnd`](./select.ts#L507-L529) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.lineEnd`](./select.ts#L502-L524) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.lineEnd`](./select.ts#L505-L527) Select to line end. TODO: helix @@ -1874,15 +1368,7 @@ Default keybinding: `a-l` (kakoune: normal) -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.lastLine`](./select.ts#L545-L555) -======= -### [`select.lastLine`](./select.ts#L557-L567) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.lastLine`](./select.ts#L552-L562) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.lastLine`](./select.ts#L555-L565) Select to last line. @@ -1895,15 +1381,7 @@ Select to last line. -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.firstVisibleLine`](./select.ts#L566-L576) -======= -### [`select.firstVisibleLine`](./select.ts#L578-L588) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.firstVisibleLine`](./select.ts#L573-L583) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.firstVisibleLine`](./select.ts#L576-L586) Select to first visible line. @@ -1916,15 +1394,7 @@ Select to first visible line. -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.middleVisibleLine`](./select.ts#L583-L593) -======= -### [`select.middleVisibleLine`](./select.ts#L595-L605) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.middleVisibleLine`](./select.ts#L590-L600) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.middleVisibleLine`](./select.ts#L593-L603) Select to middle visible line. @@ -1937,15 +1407,7 @@ Select to middle visible line. -<<<<<<< HEAD -<<<<<<< HEAD -### [`select.lastVisibleLine`](./select.ts#L600-L610) -======= -### [`select.lastVisibleLine`](./select.ts#L612-L622) ->>>>>>> 009823c (fixed match replace) -======= -### [`select.lastVisibleLine`](./select.ts#L607-L617) ->>>>>>> 03ae8e0 (fix x and ,/;) +### [`select.lastVisibleLine`](./select.ts#L610-L620) Select to last visible line. @@ -1970,11 +1432,8 @@ Copy selections text. This command: - accepts a register (by default, it uses `dquote`). -<<<<<<< HEAD -Default keybinding: `y` (kakoune: normal) -======= -Default keybinding: `y` (normal), `y` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `y` (helix: normal) +`y` (helix: visual) @@ -1989,11 +1448,7 @@ This command: - takes an argument `untilDelay` of type `number`. - takes an argument `until` of type `AutoDisposable.Event[]`. -<<<<<<< HEAD -Default keybinding: `s-z` (kakoune: normal) -======= -Default keybinding: `s-a-z` (normal) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-a-z` (helix: normal) @@ -2005,11 +1460,7 @@ Restore selections. TODO: Needed? This command: - accepts a register (by default, it uses `caret`). -<<<<<<< HEAD -Default keybinding: `z` (kakoune: normal) -======= -Default keybinding: `a-z` (normal) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `a-z` (helix: normal) @@ -2068,26 +1519,12 @@ Filter selections. #### Variants -<<<<<<< HEAD -| 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` | `s-k` (normal), `s-k` (visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | -| Clear matching selections | `filter.regexp.inverse` | `s-a-k` (normal), `s-a-k` (visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | -<<<<<<< HEAD -| Clear secondary selections | `clear.secondary` | `;` (normal), `;` (visual) | `[".selections.filter", { expression: "i === count" , ... }]` | -| Clear main selections | `clear.main` | `a-;` (normal), `a-;` (visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | ->>>>>>> 009823c (fixed match replace) -======= -| Clear secondary selections | `clear.secondary` | `,` (normal), `,` (visual) | `[".selections.filter", { expression: "i === count" , ... }]` | -| Clear main selections | `clear.main` | `a-,` (normal), `a-,` (visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | ->>>>>>> 03ae8e0 (fix x and ,/;) +| Title | Identifier | Keybinding | Commands | +| -------------------------- | ----------------------- | ------------------------------------------------ | ------------------------------------------------------------------------ | +| Keep matching selections | `filter.regexp` | `s-k` (helix: normal) , `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | +| Clear matching selections | `filter.regexp.inverse` | `s-a-k` (helix: normal), `s-a-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | +| Clear secondary selections | `clear.secondary` | `,` (helix: normal) , `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | +| Clear main selections | `clear.main` | `a-,` (helix: normal) , `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | This command: - accepts an argument of type `{ expression?: string }`. @@ -2096,11 +1533,8 @@ This command: - takes an argument `interactive` of type `boolean`. - takes an argument `inverse` of type `boolean`. -<<<<<<< HEAD -Default keybinding: `$` (kakoune: normal) -======= -Default keybinding: `$` (normal), `$` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `$` (helix: normal) +`$` (helix: visual) @@ -2110,19 +1544,14 @@ 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` (helix: normal), `s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | This command: - accepts an argument of type `{ re?: string | RegExp }`. - takes an argument `interactive` of type `boolean`. -<<<<<<< HEAD -======= -Default keybinding: `s` (normal), `s` (visual) - ->>>>>>> 009823c (fixed match replace) ### [`selections.split`](./selections.ts#L379-L390) @@ -2135,11 +1564,8 @@ This command: - takes an argument `excludeEmpty` of type `boolean`. - takes an argument `interactive` of type `boolean`. -<<<<<<< HEAD -Default keybinding: `s-s` (kakoune: normal) -======= -Default keybinding: `s-s` (normal), `s-s` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-s` (helix: normal) +`s-s` (helix: visual) @@ -2149,19 +1575,14 @@ 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` (helix: normal), `a-s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `excludeEol` of type `boolean`. -<<<<<<< HEAD -======= -Default keybinding: `a-s` (normal), `a-s` (visual) - ->>>>>>> 009823c (fixed match replace) ### [`selections.expandToLines`](./selections.ts#L474-L481) @@ -2172,11 +1593,8 @@ Expand selections to contain full lines (including end-of-line characters). -<<<<<<< HEAD -Default keybinding: `x` (kakoune: normal) -======= -Default keybinding: `s-x` (normal), `s-x` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-x` (helix: normal) +`s-x` (helix: visual) @@ -2200,11 +1618,8 @@ Trim whitespace at beginning and end of selections. -<<<<<<< HEAD -Default keybinding: `_` (kakoune: normal) -======= -Default keybinding: `_` (normal), `_` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `_` (helix: normal) +`_` (helix: visual) @@ -2224,15 +1639,8 @@ This command: - takes an argument `empty` of type `boolean`. - takes an argument `where` of type `"active" | "anchor" | "start" | "end" | "both"`. -<<<<<<< HEAD -<<<<<<< HEAD -Default keybinding: `;` (kakoune: normal) -======= -Default keybinding: `,` (normal), `,` (visual) ->>>>>>> 009823c (fixed match replace) -======= -Default keybinding: `;` (normal), `;` (visual) ->>>>>>> 03ae8e0 (fix x and ,/;) +Default keybinding: `;` (helix: normal) +`;` (helix: visual) @@ -2286,24 +1694,15 @@ Copy selections below. #### Variant -<<<<<<< HEAD -| Title | Identifier | Keybinding | Command | -| --------------------- | ------------ | ------------------------- | ----------------------------------------- | -| Copy selections above | `copy.above` | `s-a-c` (kakoune: normal) | `[".selections.copy", { direction: -1 }]` | -======= -| Title | Identifier | Keybinding | Command | -| --------------------- | ------------ | ---------------------------------- | ----------------------------------------- | -| Copy selections above | `copy.above` | `s-a-c` (normal), `s-a-c` (normal) | `[".selections.copy", { direction: -1 }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| --------------------- | ------------ | ------------------------------------------------ | ----------------------------------------- | +| Copy selections above | `copy.above` | `s-a-c` (helix: normal), `s-a-c` (helix: visual) | `[".selections.copy", { direction: -1 }]` | This command: - may be repeated with a given number of repetitions. -<<<<<<< HEAD -Default keybinding: `s-c` (kakoune: normal) -======= -Default keybinding: `s-c` (normal), `s-c` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `s-c` (helix: normal) +`s-c` (helix: visual) @@ -2339,11 +1738,8 @@ This command: - takes an argument `display` of type `boolean | undefined`. - takes an argument `until` of type `AutoDisposable.Event[]`. -<<<<<<< HEAD -Default keybinding: `enter` (dance: normal) -======= -Default keybinding: `enter` (normal), `enter` (visual) ->>>>>>> 009823c (fixed match replace) +Default keybinding: `enter` (helix: normal) +`enter` (helix: visual) ## [`selections.rotate`](./selections.rotate.ts) @@ -2395,24 +1791,16 @@ TODO: ( seems to be broken. Fix it... The following keybinding is also available: -<<<<<<< HEAD -| 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` | `)` (normal), `)` (visual) | `[".selections.rotate.selections", { reverse: true }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Identifier | Keybinding | Command | +| ----------------------------------------------------- | -------------------- | ---------------------------------------- | ------------------------------------------------------ | +| Rotate selections counter-clockwise (selections only) | `selections.reverse` | `)` (helix: normal), `)` (helix: visual) | `[".selections.rotate.selections", { reverse: true }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `reverse` of type `boolean`. -<<<<<<< HEAD -Default keybinding: `(` (kakoune: normal) -======= -Default keybinding: `(` (normal), `(` (visual) +Default keybinding: `(` (helix: normal) +`(` (helix: visual) ## [`space`](./space.ts) @@ -2420,10 +1808,9 @@ General purpose space menu. #### Predefined keybindings -| Title | Keybinding | Command | -| ----------------------- | ---------------------------------- | --------------------------------------- | -| Show space menu | `space` (normal), `space` (visual) | `[".openMenu", { menu: "space", ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Keybinding | Command | +| ----------------------- | ------------------------------------------------ | --------------------------------------- | +| Show space menu | `space` (helix: normal), `space` (helix: visual) | `[".openMenu", { menu: "space", ... }]` | ## [`view`](./view.ts) @@ -2431,17 +1818,10 @@ Moving the editor view. #### Predefined keybindings -<<<<<<< HEAD -| 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 | `z` (normal), `z` (visual) | `[".openMenu", { menu: "view", ... }]` | -| Show view menu (locked) | `s-z` (normal), `s-z` (visual) | `[".openMenu", { menu: "view", locked: true, ... }]` | ->>>>>>> 009823c (fixed match replace) +| Title | Keybinding | Command | +| ----------------------- | -------------------------------------------- | ---------------------------------------------------- | +| Show view menu | `z` (helix: normal), `z` (helix: visual) | `[".openMenu", { menu: "view", ... }]` | +| Show view menu (locked) | `s-z` (helix: normal), `s-z` (helix: visual) | `[".openMenu", { menu: "view", locked: true, ... }]` | @@ -2452,21 +1832,13 @@ Reveals a position based on the main cursor. This command: - takes an argument `at` of type `"top" | "center" | "bottom"`. -<<<<<<< HEAD -======= ## [`window`](./window.ts) Window menu. #### Predefined keybindings -<<<<<<< HEAD -| Title | Keybinding | Command | -| ----------------------- | ------------------------------ | --------------------------------------- | -| Show window menu | `c-w` (normal), `c-w` (visual) | `[".openMenu", { menu: "window", ... }]` | ->>>>>>> 009823c (fixed match replace) -======= -| Title | Identifier | Keybinding | Command | -| ----------------------- | ------------------------------ | ------------------------------ | ---------------------------------------- | -| Show window menu | `windowMenu` | `c-w` (normal), `c-w` (visual) | `[".openMenu", { menu: "window", ... }]` | ->>>>>>> 8587503 (- fixed insert mode not accessible from visual mode) +| Title | Identifier | Keybinding | Command | +| ----------------------- | ------------------------------ | -------------------------------------------- | ---------------------------------------- | +| Show window menu | `windowMenu` | `c-w` (helix: normal), `c-w` (helix: visual) | `[".openMenu", { menu: "window", ... }]` | + diff --git a/src/commands/edit.ts b/src/commands/edit.ts index 67a11a7..b7743dc 100644 --- a/src/commands/edit.ts +++ b/src/commands/edit.ts @@ -31,20 +31,20 @@ declare module "./edit"; * * | Title | Identifier | Keybinding | Commands | * | ---------------------------------- | ------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | - * | Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual), `c-r` (helix: insert) | `[".selectRegister", { +register }], [".edit.insert", { ... }]` | + * | Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual) | `[".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` (helix: normal) `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | - * | Paste after and select | `paste.after.select` | `p` (helix: normal) `p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , shift: "select", ... }]` | + * | Paste before and select | `paste.before.select` | `s-p` (helix: normal), `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | + * | Paste after and select | `paste.after.select` | `p` (helix: normal) , `p` (helix: visual) | `[".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` (helix: normal) `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | - * | Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | - * | Delete | `delete` | `a-d` (helix: normal) `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | - * | Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | - * | Copy and delete | `yank-delete` | `d` (helix: normal) `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | - * | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | - * | Copy and replace | `yank-replace` | `s-r` (helix: normal), `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | + * | Paste all before and select | `pasteAll.before.select` | `s-a-p` (helix: normal), `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | + * | Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) , `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | + * | Delete | `delete` | `a-d` (helix: normal) , `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | + * | Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) , `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | + * | Copy and delete | `yank-delete` | `d` (helix: normal) , `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | + * | Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) , `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | + * | Copy and replace | `yank-replace` | `s-r` (helix: normal) , `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | */ export async function insert( _: Context, @@ -351,8 +351,6 @@ export function copyIndentation( * keep the current selections. * * - * @keys `s-a-o` (normal), `s-a-o` (visual) - * * #### Additional keybindings * * | Title | Identifier | Keybinding | Commands | @@ -390,8 +388,6 @@ export function newLine_above( * keep the current selections. * * - * @keys `a-o` (helix: normal), `a-o` (helix: visual) - * * #### Additional keybindings * * | Title | Identifier | Keybinding | Commands | diff --git a/src/commands/history.ts b/src/commands/history.ts index b469064..2c7e188 100644 --- a/src/commands/history.ts +++ b/src/commands/history.ts @@ -98,7 +98,7 @@ export async function repeat( /** * Repeat last edit without a command. * - * @keys `.` (helix: normal), `NumPad_Decimal` (helix: normal), `.` (helix: visual), `NumPad_Decimal` (helix: visual) + * @keys `.` (helix: normal) , `NumPad_Decimal` (helix: normal) , `.` (helix: visual) , `NumPad_Decimal` (helix: visual) * @noreplay */ export async function repeat_edit(_: Context, repetitions: number) { @@ -167,7 +167,7 @@ const recordingPerRegister = new WeakMap(); /** * Start recording. * - * @keys `s-q` (helix: normal, !recording), `s-q` (helix: visual, !recording) + * @keys `s-q` (helix: normal, !recording) , `s-q` (helix: visual, !recording) * @noreplay */ export function recording_start( @@ -188,7 +188,7 @@ export function recording_start( /** * Stop recording. * - * @keys `escape` (helix: normal, recording), `s-q` (helix: normal, recording), `escape` (helix: visual, recording), `s-q` (helix: visual, recording) + * @keys `escape` (helix: normal, recording) , `s-q` (helix: normal, recording) , `escape` (helix: visual, recording) , `s-q` (helix: visual, recording) * @noreplay */ export function recording_stop( diff --git a/src/commands/layouts/azerty.fr.md b/src/commands/layouts/azerty.fr.md index ab968ba..50d6cfe 100644 --- a/src/commands/layouts/azerty.fr.md +++ b/src/commands/layouts/azerty.fr.md @@ -11,49 +11,52 @@ devdev.copyLastErrorMessageCopies the last encountered error message dev.setSelectionBehaviorSet the selection behavior of the specified mode -editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal') -edit.case.swapSwap caseAlt+` (editorTextFocus && dance.mode == 'normal') -edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal') -edit.case.toUpperTransform to upper caseShift+` (editorTextFocus && dance.mode == 'normal') -edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal') -edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal') -edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal') -edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal') -edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal') -edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal') -edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal') +editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal')Shift+7 (editorTextFocus && dance.mode == 'visual') +edit.case.swapSwap caseShift+` (editorTextFocus && dance.mode == 'normal')Shift+` (editorTextFocus && dance.mode == 'visual') +edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal')` (editorTextFocus && dance.mode == 'visual') +edit.case.toUpperTransform to upper caseAlt+` (editorTextFocus && dance.mode == 'normal')Alt+` (editorTextFocus && dance.mode == 'visual') +edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal')Shift+Alt+7 (editorTextFocus && dance.mode == 'visual') +edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal')Shift+Alt+, (editorTextFocus && dance.mode == 'visual') +edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal')Shift+, (editorTextFocus && dance.mode == 'visual') +edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal')Alt+D (editorTextFocus && dance.mode == 'visual') +edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal')Alt+C (editorTextFocus && dance.mode == 'visual') +edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal')Shift+O (editorTextFocus && dance.mode == 'visual') +edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal')O (editorTextFocus && dance.mode == 'visual') edit.paste.afterPaste after -edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal') +edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal')P (editorTextFocus && dance.mode == 'visual') edit.paste.beforePaste before -edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal') +edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal')Shift+P (editorTextFocus && dance.mode == 'visual') edit.pasteAll.afterPaste all after -edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal') +edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal')Alt+P (editorTextFocus && dance.mode == 'visual') edit.pasteAll.beforePaste all before -edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal') -edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'insert') -edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal') -edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal') -edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal') -edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal') -edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal') +edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal')Shift+Alt+P (editorTextFocus && dance.mode == 'visual') +edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'visual') +edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal')D (editorTextFocus && dance.mode == 'visual') +edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal')C (editorTextFocus && dance.mode == 'visual') +edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal')Shift+R (editorTextFocus && dance.mode == 'visual') +edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal')Shift+. (editorTextFocus && dance.mode == 'visual') +edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal')Shift+Alt+. (editorTextFocus && dance.mode == 'visual') edit.insertInsert contents of registerShift+Alt+R (editorTextFocus && dance.mode == 'normal') -edit.joinJoin linesAlt+J (editorTextFocus && dance.mode == 'normal') +edit.joinJoin linesShift+J (editorTextFocus && dance.mode == 'normal')Shift+J (editorTextFocus && dance.mode == 'visual') edit.join.selectJoin lines and select inserted separatorsShift+Alt+J (editorTextFocus && dance.mode == 'normal') -edit.newLine.aboveInsert new line above each selectionShift+Alt+O (editorTextFocus && dance.mode == 'normal') -edit.newLine.belowInsert new line below each selectionAlt+O (editorTextFocus && dance.mode == 'normal') -edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal') +edit.newLine.aboveInsert new line above each selection +edit.newLine.belowInsert new line below each selection +edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal')R (editorTextFocus && dance.mode == 'visual') historyhistory.repeat.seekRepeat last seekAlt+. (editorTextFocus && dance.mode == 'normal') history.repeat.selectionRepeat last selection change -history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal') -history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording) -history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording) -history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal') +history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal')Q (editorTextFocus && dance.mode == 'visual') +history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && !dance.isRecording) +history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Escape (editorTextFocus && dance.mode == 'visual' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && dance.isRecording) +history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal')Shift+U (editorTextFocus && dance.mode == 'visual') history.redo.selectionsRedo a change of selectionsShift+Alt+U (editorTextFocus && dance.mode == 'normal') history.repeatRepeat last change -history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal') -history.undoUndoU (editorTextFocus && dance.mode == 'normal') +history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal'). (editorTextFocus && dance.mode == 'visual')NumPad_Decimal (editorTextFocus && dance.mode == 'visual') +history.undoUndoU (editorTextFocus && dance.mode == 'normal')U (editorTextFocus && dance.mode == 'visual') history.undo.selectionsUndo a change of selectionsAlt+U (editorTextFocus && dance.mode == 'normal') keybindingskeybindings.setupSet up Dance keybindings +matchmatch.surroundAdd stuff surround +match.surrounddeleteDelete stuff surround +match.surroundreplaceReplace stuff surround misccancelCancel Dance operationEscape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible)Escape (editorTextFocus && dance.mode == 'input') changeInputChange current input ifEmptyExecutes one of the specified commands depending on whether the current @@ -61,30 +64,31 @@ selections are empty ignoreIgnore key openMenuOpen menu runRun code -selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal') +selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal')Shift+' (editorTextFocus && dance.mode == 'visual') updateCountUpdate Dance count updateRegisterUpdate the contents of a register -modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal') -modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal') -modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal') -modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal') +modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal')A (editorTextFocus && dance.mode == 'visual') +modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal')I (editorTextFocus && dance.mode == 'visual') +modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal')Shift+A (editorTextFocus && dance.mode == 'visual') +modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal')Shift+I (editorTextFocus && dance.mode == 'visual') modes.set.insertSet mode to Insert -modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert') -modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal') -modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert') +modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert')Escape (editorTextFocus && dance.mode == 'visual')V (editorTextFocus && dance.mode == 'visual') +modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal') +modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert') +modes.set.visualSet mode to VisualV (editorTextFocus && dance.mode == 'normal') modes.setSet Dance mode modes.set.temporarilySet Dance mode temporarily searchsearch.nextSelect next matchN (editorTextFocus && dance.mode == 'normal') -search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal') -search.backwardSearch backwardAlt+/ (editorTextFocus && dance.mode == 'normal') +search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal')/ (editorTextFocus && dance.mode == 'visual')NumPad_Divide (editorTextFocus && dance.mode == 'visual') +search.backwardSearch backwardShift+/ (editorTextFocus && dance.mode == 'normal') search.backward.extendSearch backward (extend)Shift+Alt+/ (editorTextFocus && dance.mode == 'normal') -search.extendSearch (extend)Shift+/ (editorTextFocus && dance.mode == 'normal') -search.next.addAdd next matchShift+N (editorTextFocus && dance.mode == 'normal') -search.previousSelect previous matchAlt+N (editorTextFocus && dance.mode == 'normal') -search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal') -search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal') +search.extendSearch (extend)Alt+/ (editorTextFocus && dance.mode == 'normal') +search.next.addAdd next matchAlt+N (editorTextFocus && dance.mode == 'normal')N (editorTextFocus && dance.mode == 'visual') +search.previousSelect previous matchShift+N (editorTextFocus && dance.mode == 'normal') +search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal')Shift+N (editorTextFocus && dance.mode == 'visual') +search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal')Shift+8 (editorTextFocus && dance.mode == 'visual')NumPad_Multiply (editorTextFocus && dance.mode == 'visual') search.selectionSearch current selectionShift+Alt+8 (editorTextFocus && dance.mode == 'normal')Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal') -seekseek.enclosingSelect to next enclosing characterM (editorTextFocus && dance.mode == 'normal') +seekseek.enclosingSelect to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal') seek.leapLeap forward seek.objectSelect object seek.seekSelect to character (excluded)T (editorTextFocus && dance.mode == 'normal') @@ -98,30 +102,30 @@ selections are empty seek.askObject.inner.start.extendExtend to inner object startShift+Alt+[ (editorTextFocus && dance.mode == 'normal') seek.askObject.startSelect to whole object start[ (editorTextFocus && dance.mode == 'normal') seek.askObject.start.extendExtend to whole object startShift+[ (editorTextFocus && dance.mode == 'normal') -seek.backwardSelect to character (excluded, backward)Alt+T (editorTextFocus && dance.mode == 'normal') +seek.backwardSelect to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'normal') seek.enclosing.backwardSelect to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'normal') -seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal') -seek.enclosing.extend.backwardExtend to previous enclosing characterShift+Alt+M (editorTextFocus && dance.mode == 'normal') -seek.extendExtend to character (excluded)Shift+T (editorTextFocus && dance.mode == 'normal') -seek.extend.backwardExtend to character (excluded, backward)Shift+Alt+T (editorTextFocus && dance.mode == 'normal') -seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal') -seek.included.backwardSelect to character (included, backward)Alt+F (editorTextFocus && dance.mode == 'normal') -seek.included.extendExtend to character (included)Shift+F (editorTextFocus && dance.mode == 'normal') -seek.included.extend.backwardExtend to character (included, backward)Shift+Alt+F (editorTextFocus && dance.mode == 'normal') +seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'visual') +seek.enclosing.extend.backwardExtend to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'visual') +seek.extendExtend to character (excluded)T (editorTextFocus && dance.mode == 'visual') +seek.extend.backwardExtend to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'visual') +seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal') +seek.included.backwardSelect to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'normal') +seek.included.extendExtend to character (included)F (editorTextFocus && dance.mode == 'visual') +seek.included.extend.backwardExtend to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'visual') seek.leap.backwardLeap backward seek.word.backwardSelect to previous word startB (editorTextFocus && dance.mode == 'normal') -seek.word.extendExtend to next word startShift+W (editorTextFocus && dance.mode == 'normal') -seek.word.extend.backwardExtend to previous word startShift+B (editorTextFocus && dance.mode == 'normal') -seek.word.wsSelect to next non-whitespace word startAlt+W (editorTextFocus && dance.mode == 'normal') -seek.word.ws.backwardSelect to previous non-whitespace word startAlt+B (editorTextFocus && dance.mode == 'normal') -seek.word.ws.extendExtend to next non-whitespace word startShift+Alt+W (editorTextFocus && dance.mode == 'normal') -seek.word.ws.extend.backwardExtend to previous non-whitespace word startShift+Alt+B (editorTextFocus && dance.mode == 'normal') -seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.extendExtend to next word endShift+E (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.wsSelect to next non-whitespace word endAlt+E (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.ws.extendExtend to next non-whitespace word endShift+Alt+E (editorTextFocus && dance.mode == 'normal') +seek.word.backward.extendExtend to previous word startB (editorTextFocus && dance.mode == 'visual') +seek.word.extendExtend to next word startW (editorTextFocus && dance.mode == 'visual') +seek.word.wsSelect to next WORD startShift+W (editorTextFocus && dance.mode == 'normal') +seek.word.ws.backwardSelect to previous WORD startShift+B (editorTextFocus && dance.mode == 'normal') +seek.word.ws.backward.extendExtend to previous WORD startShift+B (editorTextFocus && dance.mode == 'visual') +seek.word.ws.extendExtend to next WORD startShift+W (editorTextFocus && dance.mode == 'visual') +seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal') +seek.wordEnd.extendExtend to next word endE (editorTextFocus && dance.mode == 'visual') +seek.wordEnd.wsSelect to next WORD endShift+E (editorTextFocus && dance.mode == 'normal') +seek.wordEnd.ws.extendExtend to next WORD endShift+E (editorTextFocus && dance.mode == 'visual') seek.wordSelect to next word startW (editorTextFocus && dance.mode == 'normal') -selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal') +selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal')Shift+5 (editorTextFocus && dance.mode == 'visual') select.firstVisibleLineSelect to first visible line select.horizontallySelect horizontally select.lastLineSelect to last line @@ -129,60 +133,60 @@ selections are empty select.line.aboveSelect line above select.line.above.extendExtend to line above select.line.belowSelect line below -select.line.below.extendExtend to line below -select.lineEndSelect to line endAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal') +select.line.below.extendExtend to line belowX (editorTextFocus && dance.mode == 'normal')X (editorTextFocus && dance.mode == 'visual') +select.lineEndSelect to line end. TODO: helixAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal') select.lineStartSelect to line startAlt+H (editorTextFocus && dance.mode == 'normal')Home (editorTextFocus && dance.mode == 'normal') select.middleVisibleLineSelect to middle visible line -select.documentEnd.extendExtend to last character -select.documentEnd.jumpJump to last character -select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal') -select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal') -select.firstLine.extendExtend to first line -select.firstLine.jumpJump to first line -select.firstVisibleLine.extendExtend to first visible line -select.firstVisibleLine.jumpJump to first visible line -select.lastLine.extendExtend to last line -select.lastLine.jumpJump to last line -select.lastVisibleLine.extendExtend to last visible line -select.lastVisibleLine.jumpJump to last visible line -select.left.extendExtend leftShift+H (editorTextFocus && dance.mode == 'normal')Shift+Left (editorTextFocus && dance.mode == 'normal') -select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal') -select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal') -select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal') -select.lineStart.jumpJump to line start -select.lineStart.skipBlank.extendExtend to line start (skip blank) -select.lineStart.skipBlank.jumpJump to line start (skip blank) -select.middleVisibleLine.extendExtend to middle visible line -select.middleVisibleLine.jumpJump to middle visible line -select.right.extendExtend rightShift+L (editorTextFocus && dance.mode == 'normal')Shift+Right (editorTextFocus && dance.mode == 'normal') -select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal') -select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal') -select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal') -select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal') -select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal') +select.documentEnd.extendExtend to last character +select.documentEnd.jumpJump to last character +select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal')J (editorTextFocus && dance.mode == 'visual')Down (editorTextFocus && dance.mode == 'visual') +select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal') +select.firstLine.extendExtend to first line +select.firstLine.jumpJump to first line +select.firstVisibleLine.extendExtend to first visible line +select.firstVisibleLine.jumpJump to first visible line +select.lastLine.extendExtend to last line +select.lastLine.jumpJump to last line +select.lastVisibleLine.extendExtend to last visible line +select.lastVisibleLine.jumpJump to last visible line +select.left.extendExtend leftShift+Left (editorTextFocus && dance.mode == 'normal')H (editorTextFocus && dance.mode == 'visual')Left (editorTextFocus && dance.mode == 'visual') +select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal') +select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal') +select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal') +select.lineStart.jumpJump to line start +select.lineStart.skipBlank.extendExtend to line start (skip blank) +select.lineStart.skipBlank.jumpJump to line start (skip blank) +select.middleVisibleLine.extendExtend to middle visible line +select.middleVisibleLine.jumpJump to middle visible line +select.right.extendExtend rightShift+Right (editorTextFocus && dance.mode == 'normal')L (editorTextFocus && dance.mode == 'visual')Right (editorTextFocus && dance.mode == 'visual') +select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal') +select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal')G (editorTextFocus && dance.mode == 'visual') +select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal') +select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal')K (editorTextFocus && dance.mode == 'visual')Up (editorTextFocus && dance.mode == 'visual') +select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal') select.toSelect to select.verticallySelect vertically selectionsselections.changeDirectionChange direction of selectionsAlt+; (editorTextFocus && dance.mode == 'normal') selections.changeOrderReverse selections -selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal') -selections.expandToLinesExpand to linesX (editorTextFocus && dance.mode == 'normal') -selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal') +selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal')Shift+C (editorTextFocus && dance.mode == 'visual') +selections.expandToLinesExpand to linesShift+X (editorTextFocus && dance.mode == 'normal')Shift+X (editorTextFocus && dance.mode == 'visual') +selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal')Shift+4 (editorTextFocus && dance.mode == 'visual') selections.mergeMerge contiguous selectionsShift+Alt+- (editorTextFocus && dance.mode == 'normal') selections.openOpen selected file selections.pipePipe selectionsShift+Alt+\ (editorTextFocus && dance.mode == 'normal') -selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal') -selections.restoreRestore selectionsZ (editorTextFocus && dance.mode == 'normal') +selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal'); (editorTextFocus && dance.mode == 'visual') +selections.restoreRestore selections. TODO: Needed?Alt+Z (editorTextFocus && dance.mode == 'normal') selections.restore.withCurrentCombine register selections with current onesAlt+Z (editorTextFocus && dance.mode == 'normal') -selections.saveSave selectionsShift+Z (editorTextFocus && dance.mode == 'normal') -selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal') +selections.saveSave selectionsShift+Alt+Z (editorTextFocus && dance.mode == 'normal') +selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal')Y (editorTextFocus && dance.mode == 'visual') selections.selectSelect within selections -selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal') -selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal') -selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal') +selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal')Alt+, (editorTextFocus && dance.mode == 'visual') +selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal'), (editorTextFocus && dance.mode == 'visual') +selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal')Shift+Alt+C (editorTextFocus && dance.mode == 'visual') selections.faceBackwardBackward selections selections.faceForwardForward selectionsShift+Alt+; (editorTextFocus && dance.mode == 'normal') -selections.filter.regexpKeep matching selectionsAlt+K (editorTextFocus && dance.mode == 'normal') -selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal') +selections.filter.regexpKeep matching selectionsShift+K (editorTextFocus && dance.mode == 'normal')Shift+K (editorTextFocus && dance.mode == 'visual') +selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal')Shift+Alt+K (editorTextFocus && dance.mode == 'visual') selections.hideIndicesHide selection indices selections.orderAscendingOrder selections ascending selections.orderDescendingOrder selections descending @@ -190,22 +194,23 @@ selections are empty selections.pipe.prependPipe and prependShift+Alt+1 (editorTextFocus && dance.mode == 'normal') selections.pipe.replacePipe and replaceShift+\ (editorTextFocus && dance.mode == 'normal') selections.reduce.edgesReduce selections to their endsShift+Alt+S (editorTextFocus && dance.mode == 'normal') -selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal') +selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal')S (editorTextFocus && dance.mode == 'visual') selections.showIndicesShow selection indices -selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal') +selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal')Alt+S (editorTextFocus && dance.mode == 'visual') selections.sortSort selections -selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal') +selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal')Shift+S (editorTextFocus && dance.mode == 'visual') selections.splitLinesSplit selections at line boundaries -selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal') +selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal')Enter (editorTextFocus && dance.mode == 'visual') selections.trimLinesTrim linesAlt+X (editorTextFocus && dance.mode == 'normal') -selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal') +selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal')Shift+- (editorTextFocus && dance.mode == 'visual') selections.rotateselections.rotate.bothRotate selections clockwiseShift+Alt+9 (editorTextFocus && dance.mode == 'normal') selections.rotate.contentsRotate selections clockwise (contents only) -selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal') +selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal')Shift+9 (editorTextFocus && dance.mode == 'visual') selections.rotate.both.reverseRotate selections counter-clockwiseShift+Alt+0 (editorTextFocus && dance.mode == 'normal') selections.rotate.contents.reverseRotate selections counter-clockwise (contents only) -selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal') +selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal')Shift+0 (editorTextFocus && dance.mode == 'visual') viewview.lineReveals a position based on the main cursor +windowwindow.windowMenuShow window menuCtrl+W (editorTextFocus && dance.mode == 'normal')Ctrl+W (editorTextFocus && dance.mode == 'visual') @@ -259,22 +264,22 @@ Specify `all` to paste all contents next to each selection. #### Additional commands -| 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 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 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) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | -| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (kakoune: normal) | `[".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", ... }]` | +| Title | Identifier | Keybinding | Commands | +| ---------------------------------- | ------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual) | `[".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` (helix: normal), `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | +| Paste after and select | `paste.after.select` | `p` (helix: normal) , `p` (helix: visual) | `[".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` (helix: normal), `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | +| Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) , `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | +| Delete | `delete` | `a-d` (helix: normal) , `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | +| Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) , `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and delete | `yank-delete` | `d` (helix: normal) , `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | +| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) , `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and replace | `yank-replace` | `s-r` (helix: normal) , `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | This command: - accepts a register (by default, it uses `dquote`). @@ -298,7 +303,8 @@ Join lines. This command: - takes an argument `separator` of type `string`. -Default keybinding: `a-j` (kakoune: normal) +Default keybinding: `s-j` (helix: normal) +`s-j` (helix: visual) @@ -322,7 +328,8 @@ Indent selected lines. This command: - may be repeated with a given number of repetitions. -Default keybinding: `>` (kakoune: normal) +Default keybinding: `>` (helix: normal) +`>` (helix: visual) @@ -334,7 +341,8 @@ Indent selected lines (including empty lines). This command: - may be repeated with a given number of repetitions. -Default keybinding: `a->` (kakoune: normal) +Default keybinding: `a->` (helix: normal) +`a->` (helix: visual) @@ -346,7 +354,8 @@ Deindent selected lines. This command: - may be repeated with a given number of repetitions. -Default keybinding: `a-<` (kakoune: normal) +Default keybinding: `a-<` (helix: normal) +`a-<` (helix: visual) @@ -358,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: `<` (helix: normal) +`<` (helix: visual) @@ -368,7 +378,8 @@ Transform to lower case. -Default keybinding: `` ` `` (kakoune: normal) +Default keybinding: `` ` `` (helix: normal) +`` ` `` (helix: visual) @@ -378,7 +389,8 @@ Transform to upper case. -Default keybinding: `` s-` `` (kakoune: normal) +Default keybinding: `` a-` `` (helix: normal) +`` a-` `` (helix: visual) @@ -388,7 +400,8 @@ Swap case. -Default keybinding: `` a-` `` (kakoune: normal) +Default keybinding: `~` (helix: normal) +`~` (helix: visual) @@ -401,7 +414,8 @@ 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` (helix: normal) +`r` (helix: visual) @@ -416,7 +430,8 @@ before the first character of each selection. This command: - takes an argument `fill` of type `string`. -Default keybinding: `&` (kakoune: normal) +Default keybinding: `&` (helix: normal) +`&` (helix: visual) @@ -431,11 +446,12 @@ given) to all other ones. This command: - may be repeated with a given number of repetitions. -Default keybinding: `a-&` (kakoune: normal) +Default keybinding: `a-&` (helix: normal) +`a-&` (helix: visual) -### [`edit.newLine.above`](../edit.ts#L347-L365) +### [`edit.newLine.above`](../edit.ts#L347-L364) Insert new line above each selection. @@ -445,19 +461,17 @@ 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` (helix: normal), `s-o` (helix: visual) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -Default keybinding: `s-a-o` (kakoune: normal) - -### [`edit.newLine.below`](../edit.ts#L385-L403) +### [`edit.newLine.below`](../edit.ts#L384-L401) Insert new line below each selection. @@ -467,16 +481,14 @@ 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` (helix: normal), `o` (helix: visual) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -Default keybinding: `a-o` (kakoune: normal) - ## [`history`](../history.ts) Interact with history. @@ -491,7 +503,8 @@ Undo. This command: - does not require an active text editor. -Default keybinding: `u` (kakoune: normal) +Default keybinding: `u` (helix: normal) +`u` (helix: visual) @@ -503,7 +516,8 @@ Redo. This command: - does not require an active text editor. -Default keybinding: `s-u` (kakoune: normal) +Default keybinding: `s-u` (helix: normal) +`s-u` (helix: visual) @@ -555,8 +569,7 @@ 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: `.` (helix: normal) , `NumPad_Decimal` (helix: normal) , `.` (helix: visual) , `NumPad_Decimal` (helix: visual) @@ -570,7 +583,8 @@ This command: - does not require an active text editor. - may be repeated with a given number of repetitions. -Default keybinding: `q` (kakoune: normal) +Default keybinding: `q` (helix: normal) +`q` (helix: visual) @@ -582,7 +596,7 @@ Start recording. This command: - accepts a register (by default, it uses `arobase`). -Default keybinding: `s-q` (kakoune: normal, !recording) +Default keybinding: `s-q` (helix: normal, !recording) , `s-q` (helix: visual, !recording) @@ -594,8 +608,7 @@ Stop recording. This command: - accepts a register (by default, it uses `arobase`). -Default keybinding: `escape` (kakoune: normal, recording) -`s-q` (kakoune: normal, recording) +Default keybinding: `escape` (helix: normal, recording) , `s-q` (helix: normal, recording) , `escape` (helix: visual, recording) , `s-q` (helix: visual, recording) ## [`keybindings`](../keybindings.ts) @@ -610,6 +623,46 @@ Set up Dance keybindings. This command: - accepts a register (by default, it uses `dquote`). +## [`match`](../match.ts) + +Match menu. + +| Title | Keybinding | Command | +| ----------------------- | ------------------- | ---------------------------------- | +| Show match menu | `m` (helix: normal) | `[".openMenu", { menu: "match" }]` | +| Show match menu | `m` (helix: visual) | `[".openMenu", { menu: "match" }]` | + + + +### [`match.surroundreplace`](../match.ts#L22-L30) + +Replace stuff surround + + +This command: +- takes an input `input` of type `string`. + + + +### [`match.surrounddelete`](../match.ts#L96-L103) + +Delete stuff surround + + +This command: +- takes an input `input` of type `string`. + + + +### [`match.surround`](../match.ts#L159-L168) + +Add stuff surround + + +This command: +- accepts a register (by default, it uses `dquote`). +- takes an input `input` of type `string`. + ## [`misc`](../misc.ts) Miscellaneous commands that don't deserve their own category. @@ -617,13 +670,14 @@ Miscellaneous commands that don't deserve their own category. By default, Dance also exports the following keybindings for existing commands: -| Keybinding | Command | -| -------------------- | -------------------------------------------- | -| `s-;` (core: normal) | `["workbench.action.showCommands", { ... }]` | +| Keybinding | Command | +| -------------------------------------------- | -------------------------------------------- | +| `s-;` (helix: normal), `s-;` (helix: visual) | `["workbench.action.showCommands", { ... }]` | +| `c-c` (helix: normal), `c-c` (helix: visual) | `["editor.action.commentLine", { ... }]` | -### [`cancel`](../misc.ts#L20-L25) +### [`cancel`](../misc.ts#L21-L26) Cancel Dance operation. @@ -636,7 +690,7 @@ Default keybinding: `escape` (core: normal, !recording, "!markersNavigationVisib -### [`ignore`](../misc.ts#L31-L34) +### [`ignore`](../misc.ts#L32-L35) Ignore key. @@ -645,7 +699,7 @@ This command: -### [`run`](../misc.ts#L40-L149) +### [`run`](../misc.ts#L41-L150) Run code. @@ -755,7 +809,7 @@ This command: -### [`selectRegister`](../misc.ts#L185-L199) +### [`selectRegister`](../misc.ts#L186-L200) Select register for next command. @@ -768,11 +822,12 @@ current document. This command: - takes an input `register` of type `string | Register`. -Default keybinding: `"` (kakoune: normal) +Default keybinding: `"` (helix: normal) +`"` (helix: visual) -### [`updateRegister`](../misc.ts#L215-L226) +### [`updateRegister`](../misc.ts#L216-L227) Update the contents of a register. @@ -783,7 +838,7 @@ This command: -### [`updateCount`](../misc.ts#L252-L281) +### [`updateCount`](../misc.ts#L253-L282) Update Dance count. @@ -791,18 +846,18 @@ Update the current counter used to repeat the next command. #### Additional keybindings -| Title | Keybinding | Command | -| ------------------------------ | -------------------------------------------- | ------------------------------------ | -| Add the digit 0 to the counter | `0` (core: normal), `NumPad0` (core: normal) | `[".updateCount", { addDigits: 0 }]` | -| Add the digit 1 to the counter | `1` (core: normal), `NumPad1` (core: normal) | `[".updateCount", { addDigits: 1 }]` | -| Add the digit 2 to the counter | `2` (core: normal), `NumPad2` (core: normal) | `[".updateCount", { addDigits: 2 }]` | -| Add the digit 3 to the counter | `3` (core: normal), `NumPad3` (core: normal) | `[".updateCount", { addDigits: 3 }]` | -| Add the digit 4 to the counter | `4` (core: normal), `NumPad4` (core: normal) | `[".updateCount", { addDigits: 4 }]` | -| Add the digit 5 to the counter | `5` (core: normal), `NumPad5` (core: normal) | `[".updateCount", { addDigits: 5 }]` | -| Add the digit 6 to the counter | `6` (core: normal), `NumPad6` (core: normal) | `[".updateCount", { addDigits: 6 }]` | -| Add the digit 7 to the counter | `7` (core: normal), `NumPad7` (core: normal) | `[".updateCount", { addDigits: 7 }]` | -| Add the digit 8 to the counter | `8` (core: normal), `NumPad8` (core: normal) | `[".updateCount", { addDigits: 8 }]` | -| Add the digit 9 to the counter | `9` (core: normal), `NumPad9` (core: normal) | `[".updateCount", { addDigits: 9 }]` | +| Title | Keybinding | Command | +| ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------ | +| Add the digit 0 to the counter | `0` (helix: normal), `NumPad0` (helix: normal), `0` (helix: visual), `NumPad0` (helix: visual) | `[".updateCount", { addDigits: 0 }]` | +| Add the digit 1 to the counter | `1` (helix: normal), `NumPad1` (helix: normal), `1` (helix: visual), `NumPad1` (helix: visual) | `[".updateCount", { addDigits: 1 }]` | +| Add the digit 2 to the counter | `2` (helix: normal), `NumPad2` (helix: normal), `2` (helix: visual), `NumPad2` (helix: visual) | `[".updateCount", { addDigits: 2 }]` | +| Add the digit 3 to the counter | `3` (helix: normal), `NumPad3` (helix: normal), `3` (helix: visual), `NumPad3` (helix: visual) | `[".updateCount", { addDigits: 3 }]` | +| Add the digit 4 to the counter | `4` (helix: normal), `NumPad4` (helix: normal), `4` (helix: visual), `NumPad4` (helix: visual) | `[".updateCount", { addDigits: 4 }]` | +| Add the digit 5 to the counter | `5` (helix: normal), `NumPad5` (helix: normal), `5` (helix: visual), `NumPad5` (helix: visual) | `[".updateCount", { addDigits: 5 }]` | +| Add the digit 6 to the counter | `6` (helix: normal), `NumPad6` (helix: normal), `6` (helix: visual), `NumPad6` (helix: visual) | `[".updateCount", { addDigits: 6 }]` | +| Add the digit 7 to the counter | `7` (helix: normal), `NumPad7` (helix: normal), `7` (helix: visual), `NumPad7` (helix: visual) | `[".updateCount", { addDigits: 7 }]` | +| Add the digit 8 to the counter | `8` (helix: normal), `NumPad8` (helix: normal), `8` (helix: visual), `NumPad8` (helix: visual) | `[".updateCount", { addDigits: 8 }]` | +| Add the digit 9 to the counter | `9` (helix: normal), `NumPad9` (helix: normal), `9` (helix: visual), `NumPad9` (helix: visual) | `[".updateCount", { addDigits: 9 }]` | This command: @@ -812,7 +867,7 @@ This command: -### [`openMenu`](../misc.ts#L309-L331) +### [`openMenu`](../misc.ts#L310-L332) Open menu. @@ -836,7 +891,7 @@ This command: -### [`changeInput`](../misc.ts#L372-L386) +### [`changeInput`](../misc.ts#L373-L387) Change current input. @@ -853,7 +908,7 @@ This command: -### [`ifEmpty`](../misc.ts#L396-L407) +### [`ifEmpty`](../misc.ts#L397-L408) Executes one of the specified commands depending on whether the current selections are empty. @@ -869,25 +924,26 @@ Set modes. -### [`modes.set`](../modes.ts#L9-L30) +### [`modes.set`](../modes.ts#L9-L31) Set Dance mode. #### Variants -| Title | Identifier | Keybinding | Command | -| ------------------ | ------------ | -------------------------- | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (kakoune: insert) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Title | Identifier | Keybinding | Command | +| ------------------ | ------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------- | +| Set mode to Normal | `set.normal` | `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | +| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | 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` (helix: normal), `i` (helix: visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | +| Insert after | `insert.after` | `a` (helix: normal), `a` (helix: visual) | `[".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` (helix: normal), `s-i` (helix: visual) | `[".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` (helix: normal), `s-a` (helix: visual) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | This command: @@ -895,7 +951,7 @@ This command: -### [`modes.set.temporarily`](../modes.ts#L34-L46) +### [`modes.set.temporarily`](../modes.ts#L35-L47) Set Dance mode temporarily. @@ -922,11 +978,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` | `a-/` (helix: normal) | `[".search", { shift: "extend", ... }]` | +| Search backward | `backward` | `?` (helix: normal) | `[".search", { direction: -1 , ... }]` | +| Search backward (extend) | `backward.extend` | `a-?` (helix: normal) | `[".search", { direction: -1, shift: "extend", ... }]` | This command: - accepts a register (by default, it uses `slash`). @@ -935,8 +991,7 @@ 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: `/` (helix: normal) , `NumPad_Divide` (helix: normal) , `/` (helix: visual) , `NumPad_Divide` (helix: visual) @@ -945,16 +1000,15 @@ 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` | `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) | `[".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-*` (helix: normal) , `a-NumPad_Multiply` (helix: normal) @@ -963,18 +1017,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` | `a-n` (helix: normal), `n` (helix: visual) | `[".search.next", { add: true, ... }]` | +| Select previous match | `previous` | `s-n` (helix: normal) | `[".search.next", { direction: -1 , ... }]` | +| Add previous match | `previous.add` | `s-a-n` (helix: normal), `s-n` (helix: visual) | `[".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` (helix: normal) ## [`seek`](../seek.ts) @@ -989,15 +1043,15 @@ Select to character (excluded). #### Variants -| Title | Identifier | Keybinding | Command | -| ---------------------------------------- | -------------------------- | ------------------------- | ------------------------------------------------------------------- | -| Extend to character (excluded) | `extend` | `s-t` (kakoune: normal) | `[".seek", { shift: "extend" , ... }]` | -| Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal) | `[".seek", { direction: -1, ... }]` | -| Extend to character (excluded, backward) | `extend.backward` | `s-a-t` (kakoune: normal) | `[".seek", { shift: "extend", direction: -1, ... }]` | -| Select to character (included) | `included` | `f` (kakoune: normal) | `[".seek", { include: true , ... }]` | -| Extend to character (included) | `included.extend` | `s-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend" , ... }]` | -| Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal) | `[".seek", { include: true, direction: -1, ... }]` | -| Extend to character (included, backward) | `included.extend.backward` | `s-a-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | +| Title | Identifier | Keybinding | Command | +| ---------------------------------------- | -------------------------- | ----------------------- | ------------------------------------------------------------------- | +| Select to character (excluded, backward) | `backward` | `s-t` (helix: normal) | `[".seek", { direction: -1, ... }]` | +| Select to character (included) | `included` | `f` (helix: normal) | `[".seek", { include: true , ... }]` | +| Select to character (included, backward) | `included.backward` | `s-f` (helix: normal) | `[".seek", { include: true, direction: -1, ... }]` | +| Extend to character (excluded) | `extend` | `t` (helix: visual) | `[".seek", { shift: "extend" , ... }]` | +| Extend to character (excluded, backward) | `extend.backward` | `s-t` (helix: visual) | `[".seek", { shift: "extend", direction: -1, ... }]` | +| Extend to character (included) | `included.extend` | `f` (helix: visual) | `[".seek", { include: true, shift: "extend" , ... }]` | +| Extend to character (included, backward) | `included.extend.backward` | `s-f` (helix: visual) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1015,17 +1069,17 @@ Select to next enclosing character. #### Variants -| Title | Identifier | Keybinding | Command | -| -------------------------------------- | --------------------------- | ------------------------- | -------------------------------------------------------------- | -| Extend to next enclosing character | `enclosing.extend` | `s-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend" , ... }]` | -| Select to previous enclosing character | `enclosing.backward` | `a-m` (kakoune: normal) | `[".seek.enclosing", { direction: -1, ... }]` | -| Extend to previous enclosing character | `enclosing.extend.backward` | `s-a-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | +| Title | Identifier | Keybinding | Command | +| -------------------------------------- | --------------------------- | --------------------- | -------------------------------------------------------------- | +| Extend to next enclosing character | `enclosing.extend` | `s-m` (helix: visual) | `[".seek.enclosing", { shift: "extend" , ... }]` | +| Select to previous enclosing character | `enclosing.backward` | `a-m` (helix: normal) | `[".seek.enclosing", { direction: -1, ... }]` | +| Extend to previous enclosing character | `enclosing.extend.backward` | `a-m` (helix: visual) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | This command: - takes an argument `open` of type `boolean`. - takes an argument `pairs` of type `readonly string[]`. -Default keybinding: `m` (kakoune: normal) +Default keybinding: `s-m` (helix: normal) @@ -1038,26 +1092,26 @@ Select the word and following whitespaces on the right of the end of each select #### Variants -| Title | Identifier | Keybinding | Command | -| -------------------------------------------- | ------------------------- | ------------------------- | ------------------------------------------------------------------------------------- | -| Extend to next word start | `word.extend` | `s-w` (kakoune: normal) | `[".seek.word", { shift: "extend" , ... }]` | -| Select to previous word start | `word.backward` | `b` (kakoune: normal) | `[".seek.word", { direction: -1, ... }]` | -| Extend to previous word start | `word.extend.backward` | `s-b` (kakoune: normal) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | -| Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal) | `[".seek.word", { ws: true , ... }]` | -| Extend to next non-whitespace word start | `word.ws.extend` | `s-a-w` (kakoune: normal) | `[".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, ... }]` | -| Extend to previous non-whitespace word start | `word.ws.extend.backward` | `s-a-b` (kakoune: normal) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | -| Select to next word end | `wordEnd` | `e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | -| Extend to next word end | `wordEnd.extend` | `s-e` (kakoune: normal) | `[".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 , ... }]` | -| Extend to next non-whitespace word end | `wordEnd.ws.extend` | `s-a-e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , ... }]` | +| Title | Identifier | Keybinding | Command | +| -------------------------------------------- | ------------------------- | ----------------------- | ------------------------------------------------------------------------------------ | +| Select to next WORD start | `word.ws` | `s-w` (helix: normal) | `[".seek.word", { ws: true , ... }]` | +| Select to previous word start | `word.backward` | `b` (helix: normal) | `[".seek.word", { direction: -1, ... }]` | +| Select to previous WORD start | `word.ws.backward` | `s-b` (helix: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | +| Select to next word end | `wordEnd` | `e` (helix: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | +| Select to next WORD end | `wordEnd.ws` | `s-e` (helix: normal) | `[".seek.word", { stopAtEnd: true, ws: true , ... }]` | +| Extend to next word start | `word.extend` | `w` (helix: visual) | `[".seek.word", { shift: "extend" , ... }]` | +| Extend to next WORD start | `word.ws.extend` | `s-w` (helix: visual) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | +| Extend to previous word start | `word.backward.extend` | `b` (helix: visual) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | +| Extend to previous WORD start | `word.ws.backward.extend` | `s-b` (helix: visual) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | +| Extend to next word end | `wordEnd.extend` | `e` (helix: visual) | `[".seek.word", { stopAtEnd: true, shift: "extend" , ... }]` | +| Extend to next WORD end | `wordEnd.ws.extend` | `s-e` (helix: visual) | `[".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `stopAtEnd` of type `boolean`. - takes an argument `ws` of type `boolean`. -Default keybinding: `w` (kakoune: normal) +Default keybinding: `w` (helix: normal) @@ -1128,32 +1182,39 @@ Select whole buffer. -Default keybinding: `%` (kakoune: normal) +Default keybinding: `%` (helix: normal) +`%` (helix: visual) -### [`select.vertically`](../select.ts#L31-L64) +### [`select.vertically`](../select.ts#L31-L70) Select vertically. + TODO: Keep s-down and s-up? + #### Variants -| Title | Identifier | Keybinding | Command | -| ----------- | ------------- | --------------------------------------------------- | ----------------------------------------------------------------- | -| Jump down | `down.jump` | `j` (kakoune: normal) , `down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | -| Extend down | `down.extend` | `s-j` (kakoune: normal), `s-down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | -| Jump up | `up.jump` | `k` (kakoune: normal) , `up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | -| Extend up | `up.extend` | `s-k` (kakoune: normal), `s-up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| ----------- | ------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | +| Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | +| Extend down | `down.extend` | `s-j` (helix: normal), `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | +| Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | +| Extend up | `up.extend` | `s-k` (helix: normal), `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) | `[".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` (helix: normal), `c-f` (helix: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | +| `c-d` (helix: normal), `c-d` (helix: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | +| `c-b` (helix: normal), `c-b` (helix: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | +| `c-u` (helix: normal), `c-u` (helix: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | +| `c-f` (helix: visual) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | +| `c-d` (helix: visual) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | +| `c-b` (helix: visual) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | +| `c-u` (helix: visual) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | This command: - may be repeated with a given number of repetitions. @@ -1162,19 +1223,21 @@ This command: -### [`select.horizontally`](../select.ts#L217-L239) +### [`select.horizontally`](../select.ts#L223-L247) Select horizontally. +TODO: keep s-left and s-right? + #### Variants -| Title | Identifier | Keybinding | Command | -| ------------ | -------------- | ---------------------------------------------------- | ------------------------------------------------------------------- | -| Jump right | `right.jump` | `l` (kakoune: normal) , `right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | -| Extend right | `right.extend` | `s-l` (kakoune: normal), `s-right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | -| Jump left | `left.jump` | `h` (kakoune: normal) , `left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | -| Extend left | `left.extend` | `s-h` (kakoune: normal), `s-left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| ------------ | -------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | +| Jump right | `right.jump` | `l` (helix: normal) , `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | +| Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual) , `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | +| Jump left | `left.jump` | `h` (helix: normal) , `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | +| Extend left | `left.extend` | `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1182,7 +1245,7 @@ This command: -### [`select.to`](../select.ts#L286-L304) +### [`select.to`](../select.ts#L294-L312) Select to. @@ -1191,10 +1254,10 @@ line. If no count is specified, this command will shift open the `goto` menu. #### Variants -| Title | Identifier | Keybinding | Command | -| --------- | ----------- | ----------------------- | ------------------------------------------ | -| Go to | `to.jump` | `g` (kakoune: normal) | `[".select.to", { shift: "jump" , ... }]` | -| Extend to | `to.extend` | `s-g` (kakoune: normal) | `[".select.to", { shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| --------- | ----------- | ------------------------------------------ | ------------------------------------------ | +| Go to | `to.jump` | `g` (helix: normal) | `[".select.to", { shift: "jump" , ... }]` | +| Extend to | `to.extend` | `s-g` (helix: normal), `g` (helix: visual) | `[".select.to", { shift: "extend", ... }]` | This command: - accepts an argument of type `object`. @@ -1202,7 +1265,7 @@ This command: -### [`select.line.below`](../select.ts#L314-L317) +### [`select.line.below`](../select.ts#L322-L325) Select line below. @@ -1211,16 +1274,20 @@ This command: -### [`select.line.below.extend`](../select.ts#L342-L345) +### [`select.line.below.extend`](../select.ts#L350-L355) Extend to line below. + This command: - may be repeated with a given number of repetitions. +Default keybinding: `x` (helix: normal) +`x` (helix: visual) + -### [`select.line.above`](../select.ts#L372-L375) +### [`select.line.above`](../select.ts#L382-L385) Select line above. @@ -1229,7 +1296,7 @@ This command: -### [`select.line.above.extend`](../select.ts#L399-L402) +### [`select.line.above.extend`](../select.ts#L409-L412) Extend to line above. @@ -1238,34 +1305,34 @@ This command: -### [`select.lineStart`](../select.ts#L448-L470) +### [`select.lineStart`](../select.ts#L458-L480) 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` (helix: normal), `s-home` (helix: 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", ... }]` | 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) +Default keybinding: `a-h` (helix: normal) +`home` (helix: normal) -### [`select.lineEnd`](../select.ts#L495-L517) +### [`select.lineEnd`](../select.ts#L505-L527) -Select to line end. +Select to line end. TODO: helix @@ -1286,7 +1353,7 @@ Default keybinding: `a-l` (kakoune: normal) -### [`select.lastLine`](../select.ts#L545-L555) +### [`select.lastLine`](../select.ts#L555-L565) Select to last line. @@ -1299,7 +1366,7 @@ Select to last line. -### [`select.firstVisibleLine`](../select.ts#L566-L576) +### [`select.firstVisibleLine`](../select.ts#L576-L586) Select to first visible line. @@ -1312,7 +1379,7 @@ Select to first visible line. -### [`select.middleVisibleLine`](../select.ts#L583-L593) +### [`select.middleVisibleLine`](../select.ts#L593-L603) Select to middle visible line. @@ -1325,7 +1392,7 @@ Select to middle visible line. -### [`select.lastVisibleLine`](../select.ts#L600-L610) +### [`select.lastVisibleLine`](../select.ts#L610-L620) Select to last visible line. @@ -1350,7 +1417,8 @@ Copy selections text. This command: - accepts a register (by default, it uses `dquote`). -Default keybinding: `y` (kakoune: normal) +Default keybinding: `y` (helix: normal) +`y` (helix: visual) @@ -1365,19 +1433,19 @@ This command: - takes an argument `untilDelay` of type `number`. - takes an argument `until` of type `AutoDisposable.Event[]`. -Default keybinding: `s-z` (kakoune: normal) +Default keybinding: `s-a-z` (helix: normal) ### [`selections.restore`](../selections.ts#L95-L103) -Restore selections. +Restore selections. TODO: Needed? This command: - accepts a register (by default, it uses `caret`). -Default keybinding: `z` (kakoune: normal) +Default keybinding: `a-z` (helix: normal) @@ -1436,12 +1504,12 @@ 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` | `s-k` (helix: normal) , `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | +| Clear matching selections | `filter.regexp.inverse` | `s-a-k` (helix: normal), `s-a-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | +| Clear secondary selections | `clear.secondary` | `,` (helix: normal) , `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | +| Clear main selections | `clear.main` | `a-,` (helix: normal) , `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | This command: - accepts an argument of type `{ expression?: string }`. @@ -1450,7 +1518,8 @@ This command: - takes an argument `interactive` of type `boolean`. - takes an argument `inverse` of type `boolean`. -Default keybinding: `$` (kakoune: normal) +Default keybinding: `$` (helix: normal) +`$` (helix: visual) @@ -1460,9 +1529,9 @@ 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` (helix: normal), `s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | This command: - accepts an argument of type `{ re?: string | RegExp }`. @@ -1480,7 +1549,8 @@ 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` (helix: normal) +`s-s` (helix: visual) @@ -1490,9 +1560,9 @@ 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` (helix: normal), `a-s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | This command: - may be repeated with a given number of repetitions. @@ -1508,7 +1578,8 @@ Expand selections to contain full lines (including end-of-line characters). -Default keybinding: `x` (kakoune: normal) +Default keybinding: `s-x` (helix: normal) +`s-x` (helix: visual) @@ -1532,7 +1603,8 @@ Trim whitespace at beginning and end of selections. -Default keybinding: `_` (kakoune: normal) +Default keybinding: `_` (helix: normal) +`_` (helix: visual) @@ -1552,7 +1624,8 @@ 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: `;` (helix: normal) +`;` (helix: visual) @@ -1606,14 +1679,15 @@ Copy selections below. #### Variant -| Title | Identifier | Keybinding | Command | -| --------------------- | ------------ | ------------------------- | ----------------------------------------- | -| Copy selections above | `copy.above` | `s-a-c` (kakoune: normal) | `[".selections.copy", { direction: -1 }]` | +| Title | Identifier | Keybinding | Command | +| --------------------- | ------------ | ------------------------------------------------ | ----------------------------------------- | +| Copy selections above | `copy.above` | `s-a-c` (helix: normal), `s-a-c` (helix: visual) | `[".selections.copy", { direction: -1 }]` | This command: - may be repeated with a given number of repetitions. -Default keybinding: `s-c` (kakoune: normal) +Default keybinding: `s-c` (helix: normal) +`s-c` (helix: visual) @@ -1649,7 +1723,8 @@ This command: - takes an argument `display` of type `boolean | undefined`. - takes an argument `until` of type `AutoDisposable.Event[]`. -Default keybinding: `enter` (dance: normal) +Default keybinding: `enter` (helix: normal) +`enter` (helix: visual) ## [`selections.rotate`](../selections.rotate.ts) @@ -1692,22 +1767,35 @@ This command: -### [`selections.rotate.selections`](../selections.rotate.ts#L45-L56) +### [`selections.rotate.selections`](../selections.rotate.ts#L45-L58) Rotate selections clockwise (selections only). +TODO: ( seems to be broken. Fix it... + 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` | `)` (helix: normal), `)` (helix: visual) | `[".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: `(` (helix: normal) +`(` (helix: visual) + +## [`space`](../space.ts) + +General purpose space menu. + +#### Predefined keybindings + +| Title | Keybinding | Command | +| ----------------------- | ------------------------------------------------ | --------------------------------------- | +| Show space menu | `space` (helix: normal), `space` (helix: visual) | `[".openMenu", { menu: "space", ... }]` | ## [`view`](../view.ts) @@ -1715,10 +1803,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 | `z` (helix: normal), `z` (helix: visual) | `[".openMenu", { menu: "view", ... }]` | +| Show view menu (locked) | `s-z` (helix: normal), `s-z` (helix: visual) | `[".openMenu", { menu: "view", locked: true, ... }]` | @@ -1729,3 +1817,13 @@ Reveals a position based on the main cursor. This command: - takes an argument `at` of type `"top" | "center" | "bottom"`. +## [`window`](../window.ts) + +Window menu. + +#### Predefined keybindings + +| Title | Identifier | Keybinding | Command | +| ----------------------- | ------------------------------ | -------------------------------------------- | ---------------------------------------- | +| Show window menu | `windowMenu` | `c-w` (helix: normal), `c-w` (helix: visual) | `[".openMenu", { menu: "window", ... }]` | + diff --git a/src/commands/layouts/qwerty.md b/src/commands/layouts/qwerty.md index 7c6d8a0..0703164 100644 --- a/src/commands/layouts/qwerty.md +++ b/src/commands/layouts/qwerty.md @@ -11,49 +11,52 @@ devdev.copyLastErrorMessageCopies the last encountered error message dev.setSelectionBehaviorSet the selection behavior of the specified mode -editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal') -edit.case.swapSwap caseAlt+` (editorTextFocus && dance.mode == 'normal') -edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal') -edit.case.toUpperTransform to upper caseShift+` (editorTextFocus && dance.mode == 'normal') -edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal') -edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal') -edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal') -edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal') -edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal') -edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal') -edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal') +editedit.alignAlign selectionsShift+7 (editorTextFocus && dance.mode == 'normal')Shift+7 (editorTextFocus && dance.mode == 'visual') +edit.case.swapSwap caseShift+` (editorTextFocus && dance.mode == 'normal')Shift+` (editorTextFocus && dance.mode == 'visual') +edit.case.toLowerTransform to lower case` (editorTextFocus && dance.mode == 'normal')` (editorTextFocus && dance.mode == 'visual') +edit.case.toUpperTransform to upper caseAlt+` (editorTextFocus && dance.mode == 'normal')Alt+` (editorTextFocus && dance.mode == 'visual') +edit.copyIndentationCopy indentationShift+Alt+7 (editorTextFocus && dance.mode == 'normal')Shift+Alt+7 (editorTextFocus && dance.mode == 'visual') +edit.deindentDeindent selected linesShift+Alt+, (editorTextFocus && dance.mode == 'normal')Shift+Alt+, (editorTextFocus && dance.mode == 'visual') +edit.deindent.withIncompleteDeindent selected lines (including incomplete indent)Shift+, (editorTextFocus && dance.mode == 'normal')Shift+, (editorTextFocus && dance.mode == 'visual') +edit.deleteDeleteAlt+D (editorTextFocus && dance.mode == 'normal')Alt+D (editorTextFocus && dance.mode == 'visual') +edit.delete-insertDelete and switch to InsertAlt+C (editorTextFocus && dance.mode == 'normal')Alt+C (editorTextFocus && dance.mode == 'visual') +edit.newLine.above.insertInsert new line above and switch to insertShift+O (editorTextFocus && dance.mode == 'normal')Shift+O (editorTextFocus && dance.mode == 'visual') +edit.newLine.below.insertInsert new line below and switch to insertO (editorTextFocus && dance.mode == 'normal')O (editorTextFocus && dance.mode == 'visual') edit.paste.afterPaste after -edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal') +edit.paste.after.selectPaste after and selectP (editorTextFocus && dance.mode == 'normal')P (editorTextFocus && dance.mode == 'visual') edit.paste.beforePaste before -edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal') +edit.paste.before.selectPaste before and selectShift+P (editorTextFocus && dance.mode == 'normal')Shift+P (editorTextFocus && dance.mode == 'visual') edit.pasteAll.afterPaste all after -edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal') +edit.pasteAll.after.selectPaste all after and selectAlt+P (editorTextFocus && dance.mode == 'normal')Alt+P (editorTextFocus && dance.mode == 'visual') edit.pasteAll.beforePaste all before -edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal') -edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'insert') -edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal') -edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal') -edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal') -edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal') -edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal') +edit.pasteAll.before.selectPaste all before and selectShift+Alt+P (editorTextFocus && dance.mode == 'normal')Shift+Alt+P (editorTextFocus && dance.mode == 'visual') +edit.selectRegister-insertPick register and replaceCtrl+R (editorTextFocus && dance.mode == 'normal')Ctrl+R (editorTextFocus && dance.mode == 'visual') +edit.yank-deleteCopy and deleteD (editorTextFocus && dance.mode == 'normal')D (editorTextFocus && dance.mode == 'visual') +edit.yank-delete-insertCopy, delete and switch to InsertC (editorTextFocus && dance.mode == 'normal')C (editorTextFocus && dance.mode == 'visual') +edit.yank-replaceCopy and replaceShift+R (editorTextFocus && dance.mode == 'normal')Shift+R (editorTextFocus && dance.mode == 'visual') +edit.indentIndent selected linesShift+. (editorTextFocus && dance.mode == 'normal')Shift+. (editorTextFocus && dance.mode == 'visual') +edit.indent.withEmptyIndent selected lines (including empty lines)Shift+Alt+. (editorTextFocus && dance.mode == 'normal')Shift+Alt+. (editorTextFocus && dance.mode == 'visual') edit.insertInsert contents of registerShift+Alt+R (editorTextFocus && dance.mode == 'normal') -edit.joinJoin linesAlt+J (editorTextFocus && dance.mode == 'normal') +edit.joinJoin linesShift+J (editorTextFocus && dance.mode == 'normal')Shift+J (editorTextFocus && dance.mode == 'visual') edit.join.selectJoin lines and select inserted separatorsShift+Alt+J (editorTextFocus && dance.mode == 'normal') -edit.newLine.aboveInsert new line above each selectionShift+Alt+O (editorTextFocus && dance.mode == 'normal') -edit.newLine.belowInsert new line below each selectionAlt+O (editorTextFocus && dance.mode == 'normal') -edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal') +edit.newLine.aboveInsert new line above each selection +edit.newLine.belowInsert new line below each selection +edit.replaceCharactersReplace charactersR (editorTextFocus && dance.mode == 'normal')R (editorTextFocus && dance.mode == 'visual') historyhistory.repeat.seekRepeat last seekAlt+. (editorTextFocus && dance.mode == 'normal') history.repeat.selectionRepeat last selection change -history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal') -history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording) -history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording) -history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal') +history.recording.playReplay recordingQ (editorTextFocus && dance.mode == 'normal')Q (editorTextFocus && dance.mode == 'visual') +history.recording.startStart recordingShift+Q (editorTextFocus && dance.mode == 'normal' && !dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && !dance.isRecording) +history.recording.stopStop recordingEscape (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'normal' && dance.isRecording)Escape (editorTextFocus && dance.mode == 'visual' && dance.isRecording)Shift+Q (editorTextFocus && dance.mode == 'visual' && dance.isRecording) +history.redoRedoShift+U (editorTextFocus && dance.mode == 'normal')Shift+U (editorTextFocus && dance.mode == 'visual') history.redo.selectionsRedo a change of selectionsShift+Alt+U (editorTextFocus && dance.mode == 'normal') history.repeatRepeat last change -history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal') -history.undoUndoU (editorTextFocus && dance.mode == 'normal') +history.repeat.editRepeat last edit without a command. (editorTextFocus && dance.mode == 'normal')NumPad_Decimal (editorTextFocus && dance.mode == 'normal'). (editorTextFocus && dance.mode == 'visual')NumPad_Decimal (editorTextFocus && dance.mode == 'visual') +history.undoUndoU (editorTextFocus && dance.mode == 'normal')U (editorTextFocus && dance.mode == 'visual') history.undo.selectionsUndo a change of selectionsAlt+U (editorTextFocus && dance.mode == 'normal') keybindingskeybindings.setupSet up Dance keybindings +matchmatch.surroundAdd stuff surround +match.surrounddeleteDelete stuff surround +match.surroundreplaceReplace stuff surround misccancelCancel Dance operationEscape (editorTextFocus && dance.mode == 'normal' && !dance.isRecording && !markersNavigationVisible)Escape (editorTextFocus && dance.mode == 'input') changeInputChange current input ifEmptyExecutes one of the specified commands depending on whether the current @@ -61,30 +64,31 @@ selections are empty ignoreIgnore key openMenuOpen menu runRun code -selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal') +selectRegisterSelect register for next commandShift+' (editorTextFocus && dance.mode == 'normal')Shift+' (editorTextFocus && dance.mode == 'visual') updateCountUpdate Dance count updateRegisterUpdate the contents of a register -modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal') -modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal') -modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal') -modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal') +modesmodes.insert.afterInsert afterA (editorTextFocus && dance.mode == 'normal')A (editorTextFocus && dance.mode == 'visual') +modes.insert.beforeInsert beforeI (editorTextFocus && dance.mode == 'normal')I (editorTextFocus && dance.mode == 'visual') +modes.insert.lineEndInsert at line endShift+A (editorTextFocus && dance.mode == 'normal')Shift+A (editorTextFocus && dance.mode == 'visual') +modes.insert.lineStartInsert at line startShift+I (editorTextFocus && dance.mode == 'normal')Shift+I (editorTextFocus && dance.mode == 'visual') modes.set.insertSet mode to Insert -modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert') -modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal') -modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert') +modes.set.normalSet mode to NormalEscape (editorTextFocus && dance.mode == 'insert')Escape (editorTextFocus && dance.mode == 'visual')V (editorTextFocus && dance.mode == 'visual') +modes.set.temporarily.insertTemporary Insert modeCtrl+V (editorTextFocus && dance.mode == 'normal') +modes.set.temporarily.normalTemporary Normal modeCtrl+V (editorTextFocus && dance.mode == 'insert') +modes.set.visualSet mode to VisualV (editorTextFocus && dance.mode == 'normal') modes.setSet Dance mode modes.set.temporarilySet Dance mode temporarily searchsearch.nextSelect next matchN (editorTextFocus && dance.mode == 'normal') -search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal') -search.backwardSearch backwardAlt+/ (editorTextFocus && dance.mode == 'normal') +search.searchSearch/ (editorTextFocus && dance.mode == 'normal')NumPad_Divide (editorTextFocus && dance.mode == 'normal')/ (editorTextFocus && dance.mode == 'visual')NumPad_Divide (editorTextFocus && dance.mode == 'visual') +search.backwardSearch backwardShift+/ (editorTextFocus && dance.mode == 'normal') search.backward.extendSearch backward (extend)Shift+Alt+/ (editorTextFocus && dance.mode == 'normal') -search.extendSearch (extend)Shift+/ (editorTextFocus && dance.mode == 'normal') -search.next.addAdd next matchShift+N (editorTextFocus && dance.mode == 'normal') -search.previousSelect previous matchAlt+N (editorTextFocus && dance.mode == 'normal') -search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal') -search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal') +search.extendSearch (extend)Alt+/ (editorTextFocus && dance.mode == 'normal') +search.next.addAdd next matchAlt+N (editorTextFocus && dance.mode == 'normal')N (editorTextFocus && dance.mode == 'visual') +search.previousSelect previous matchShift+N (editorTextFocus && dance.mode == 'normal') +search.previous.addAdd previous matchShift+Alt+N (editorTextFocus && dance.mode == 'normal')Shift+N (editorTextFocus && dance.mode == 'visual') +search.selection.smartSearch current selection (smart)Shift+8 (editorTextFocus && dance.mode == 'normal')NumPad_Multiply (editorTextFocus && dance.mode == 'normal')Shift+8 (editorTextFocus && dance.mode == 'visual')NumPad_Multiply (editorTextFocus && dance.mode == 'visual') search.selectionSearch current selectionShift+Alt+8 (editorTextFocus && dance.mode == 'normal')Alt+NumPad_Multiply (editorTextFocus && dance.mode == 'normal') -seekseek.enclosingSelect to next enclosing characterM (editorTextFocus && dance.mode == 'normal') +seekseek.enclosingSelect to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal') seek.leapLeap forward seek.objectSelect object seek.seekSelect to character (excluded)T (editorTextFocus && dance.mode == 'normal') @@ -98,30 +102,30 @@ selections are empty seek.askObject.inner.start.extendExtend to inner object startShift+Alt+[ (editorTextFocus && dance.mode == 'normal') seek.askObject.startSelect to whole object start[ (editorTextFocus && dance.mode == 'normal') seek.askObject.start.extendExtend to whole object startShift+[ (editorTextFocus && dance.mode == 'normal') -seek.backwardSelect to character (excluded, backward)Alt+T (editorTextFocus && dance.mode == 'normal') +seek.backwardSelect to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'normal') seek.enclosing.backwardSelect to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'normal') -seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'normal') -seek.enclosing.extend.backwardExtend to previous enclosing characterShift+Alt+M (editorTextFocus && dance.mode == 'normal') -seek.extendExtend to character (excluded)Shift+T (editorTextFocus && dance.mode == 'normal') -seek.extend.backwardExtend to character (excluded, backward)Shift+Alt+T (editorTextFocus && dance.mode == 'normal') -seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal') -seek.included.backwardSelect to character (included, backward)Alt+F (editorTextFocus && dance.mode == 'normal') -seek.included.extendExtend to character (included)Shift+F (editorTextFocus && dance.mode == 'normal') -seek.included.extend.backwardExtend to character (included, backward)Shift+Alt+F (editorTextFocus && dance.mode == 'normal') +seek.enclosing.extendExtend to next enclosing characterShift+M (editorTextFocus && dance.mode == 'visual') +seek.enclosing.extend.backwardExtend to previous enclosing characterAlt+M (editorTextFocus && dance.mode == 'visual') +seek.extendExtend to character (excluded)T (editorTextFocus && dance.mode == 'visual') +seek.extend.backwardExtend to character (excluded, backward)Shift+T (editorTextFocus && dance.mode == 'visual') +seek.includedSelect to character (included)F (editorTextFocus && dance.mode == 'normal') +seek.included.backwardSelect to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'normal') +seek.included.extendExtend to character (included)F (editorTextFocus && dance.mode == 'visual') +seek.included.extend.backwardExtend to character (included, backward)Shift+F (editorTextFocus && dance.mode == 'visual') seek.leap.backwardLeap backward seek.word.backwardSelect to previous word startB (editorTextFocus && dance.mode == 'normal') -seek.word.extendExtend to next word startShift+W (editorTextFocus && dance.mode == 'normal') -seek.word.extend.backwardExtend to previous word startShift+B (editorTextFocus && dance.mode == 'normal') -seek.word.wsSelect to next non-whitespace word startAlt+W (editorTextFocus && dance.mode == 'normal') -seek.word.ws.backwardSelect to previous non-whitespace word startAlt+B (editorTextFocus && dance.mode == 'normal') -seek.word.ws.extendExtend to next non-whitespace word startShift+Alt+W (editorTextFocus && dance.mode == 'normal') -seek.word.ws.extend.backwardExtend to previous non-whitespace word startShift+Alt+B (editorTextFocus && dance.mode == 'normal') -seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.extendExtend to next word endShift+E (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.wsSelect to next non-whitespace word endAlt+E (editorTextFocus && dance.mode == 'normal') -seek.wordEnd.ws.extendExtend to next non-whitespace word endShift+Alt+E (editorTextFocus && dance.mode == 'normal') +seek.word.backward.extendExtend to previous word startB (editorTextFocus && dance.mode == 'visual') +seek.word.extendExtend to next word startW (editorTextFocus && dance.mode == 'visual') +seek.word.wsSelect to next WORD startShift+W (editorTextFocus && dance.mode == 'normal') +seek.word.ws.backwardSelect to previous WORD startShift+B (editorTextFocus && dance.mode == 'normal') +seek.word.ws.backward.extendExtend to previous WORD startShift+B (editorTextFocus && dance.mode == 'visual') +seek.word.ws.extendExtend to next WORD startShift+W (editorTextFocus && dance.mode == 'visual') +seek.wordEndSelect to next word endE (editorTextFocus && dance.mode == 'normal') +seek.wordEnd.extendExtend to next word endE (editorTextFocus && dance.mode == 'visual') +seek.wordEnd.wsSelect to next WORD endShift+E (editorTextFocus && dance.mode == 'normal') +seek.wordEnd.ws.extendExtend to next WORD endShift+E (editorTextFocus && dance.mode == 'visual') seek.wordSelect to next word startW (editorTextFocus && dance.mode == 'normal') -selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal') +selectselect.bufferSelect whole bufferShift+5 (editorTextFocus && dance.mode == 'normal')Shift+5 (editorTextFocus && dance.mode == 'visual') select.firstVisibleLineSelect to first visible line select.horizontallySelect horizontally select.lastLineSelect to last line @@ -129,60 +133,60 @@ selections are empty select.line.aboveSelect line above select.line.above.extendExtend to line above select.line.belowSelect line below -select.line.below.extendExtend to line below -select.lineEndSelect to line endAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal') +select.line.below.extendExtend to line belowX (editorTextFocus && dance.mode == 'normal')X (editorTextFocus && dance.mode == 'visual') +select.lineEndSelect to line end. TODO: helixAlt+L (editorTextFocus && dance.mode == 'normal')End (editorTextFocus && dance.mode == 'normal') select.lineStartSelect to line startAlt+H (editorTextFocus && dance.mode == 'normal')Home (editorTextFocus && dance.mode == 'normal') select.middleVisibleLineSelect to middle visible line -select.documentEnd.extendExtend to last character -select.documentEnd.jumpJump to last character -select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal') -select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal') -select.firstLine.extendExtend to first line -select.firstLine.jumpJump to first line -select.firstVisibleLine.extendExtend to first visible line -select.firstVisibleLine.jumpJump to first visible line -select.lastLine.extendExtend to last line -select.lastLine.jumpJump to last line -select.lastVisibleLine.extendExtend to last visible line -select.lastVisibleLine.jumpJump to last visible line -select.left.extendExtend leftShift+H (editorTextFocus && dance.mode == 'normal')Shift+Left (editorTextFocus && dance.mode == 'normal') -select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal') -select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal') -select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal') -select.lineStart.jumpJump to line start -select.lineStart.skipBlank.extendExtend to line start (skip blank) -select.lineStart.skipBlank.jumpJump to line start (skip blank) -select.middleVisibleLine.extendExtend to middle visible line -select.middleVisibleLine.jumpJump to middle visible line -select.right.extendExtend rightShift+L (editorTextFocus && dance.mode == 'normal')Shift+Right (editorTextFocus && dance.mode == 'normal') -select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal') -select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal') -select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal') -select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal') -select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal') +select.documentEnd.extendExtend to last character +select.documentEnd.jumpJump to last character +select.down.extendExtend downShift+J (editorTextFocus && dance.mode == 'normal')Shift+Down (editorTextFocus && dance.mode == 'normal')J (editorTextFocus && dance.mode == 'visual')Down (editorTextFocus && dance.mode == 'visual') +select.down.jumpJump downJ (editorTextFocus && dance.mode == 'normal')Down (editorTextFocus && dance.mode == 'normal') +select.firstLine.extendExtend to first line +select.firstLine.jumpJump to first line +select.firstVisibleLine.extendExtend to first visible line +select.firstVisibleLine.jumpJump to first visible line +select.lastLine.extendExtend to last line +select.lastLine.jumpJump to last line +select.lastVisibleLine.extendExtend to last visible line +select.lastVisibleLine.jumpJump to last visible line +select.left.extendExtend leftShift+Left (editorTextFocus && dance.mode == 'normal')H (editorTextFocus && dance.mode == 'visual')Left (editorTextFocus && dance.mode == 'visual') +select.left.jumpJump leftH (editorTextFocus && dance.mode == 'normal')Left (editorTextFocus && dance.mode == 'normal') +select.lineEnd.extendExtend to line endShift+Alt+L (editorTextFocus && dance.mode == 'normal')Shift+End (editorTextFocus && dance.mode == 'normal') +select.lineStart.extendExtend to line startShift+Alt+H (editorTextFocus && dance.mode == 'normal')Shift+Home (editorTextFocus && dance.mode == 'normal') +select.lineStart.jumpJump to line start +select.lineStart.skipBlank.extendExtend to line start (skip blank) +select.lineStart.skipBlank.jumpJump to line start (skip blank) +select.middleVisibleLine.extendExtend to middle visible line +select.middleVisibleLine.jumpJump to middle visible line +select.right.extendExtend rightShift+Right (editorTextFocus && dance.mode == 'normal')L (editorTextFocus && dance.mode == 'visual')Right (editorTextFocus && dance.mode == 'visual') +select.right.jumpJump rightL (editorTextFocus && dance.mode == 'normal')Right (editorTextFocus && dance.mode == 'normal') +select.to.extendExtend toShift+G (editorTextFocus && dance.mode == 'normal')G (editorTextFocus && dance.mode == 'visual') +select.to.jumpGo toG (editorTextFocus && dance.mode == 'normal') +select.up.extendExtend upShift+K (editorTextFocus && dance.mode == 'normal')Shift+Up (editorTextFocus && dance.mode == 'normal')K (editorTextFocus && dance.mode == 'visual')Up (editorTextFocus && dance.mode == 'visual') +select.up.jumpJump upK (editorTextFocus && dance.mode == 'normal')Up (editorTextFocus && dance.mode == 'normal') select.toSelect to select.verticallySelect vertically selectionsselections.changeDirectionChange direction of selectionsAlt+; (editorTextFocus && dance.mode == 'normal') selections.changeOrderReverse selections -selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal') -selections.expandToLinesExpand to linesX (editorTextFocus && dance.mode == 'normal') -selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal') +selections.copyCopy selections belowShift+C (editorTextFocus && dance.mode == 'normal')Shift+C (editorTextFocus && dance.mode == 'visual') +selections.expandToLinesExpand to linesShift+X (editorTextFocus && dance.mode == 'normal')Shift+X (editorTextFocus && dance.mode == 'visual') +selections.filterFilter selectionsShift+4 (editorTextFocus && dance.mode == 'normal')Shift+4 (editorTextFocus && dance.mode == 'visual') selections.mergeMerge contiguous selectionsShift+Alt+- (editorTextFocus && dance.mode == 'normal') selections.openOpen selected file selections.pipePipe selectionsShift+Alt+\ (editorTextFocus && dance.mode == 'normal') -selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal') -selections.restoreRestore selectionsZ (editorTextFocus && dance.mode == 'normal') +selections.reduceReduce selections to their cursor; (editorTextFocus && dance.mode == 'normal'); (editorTextFocus && dance.mode == 'visual') +selections.restoreRestore selections. TODO: Needed?Alt+Z (editorTextFocus && dance.mode == 'normal') selections.restore.withCurrentCombine register selections with current onesAlt+Z (editorTextFocus && dance.mode == 'normal') -selections.saveSave selectionsShift+Z (editorTextFocus && dance.mode == 'normal') -selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal') +selections.saveSave selectionsShift+Alt+Z (editorTextFocus && dance.mode == 'normal') +selections.saveTextCopy selections textY (editorTextFocus && dance.mode == 'normal')Y (editorTextFocus && dance.mode == 'visual') selections.selectSelect within selections -selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal') -selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal') -selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal') +selections.clear.mainClear main selectionsAlt+, (editorTextFocus && dance.mode == 'normal')Alt+, (editorTextFocus && dance.mode == 'visual') +selections.clear.secondaryClear secondary selections, (editorTextFocus && dance.mode == 'normal'), (editorTextFocus && dance.mode == 'visual') +selections.copy.aboveCopy selections aboveShift+Alt+C (editorTextFocus && dance.mode == 'normal')Shift+Alt+C (editorTextFocus && dance.mode == 'visual') selections.faceBackwardBackward selections selections.faceForwardForward selectionsShift+Alt+; (editorTextFocus && dance.mode == 'normal') -selections.filter.regexpKeep matching selectionsAlt+K (editorTextFocus && dance.mode == 'normal') -selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal') +selections.filter.regexpKeep matching selectionsShift+K (editorTextFocus && dance.mode == 'normal')Shift+K (editorTextFocus && dance.mode == 'visual') +selections.filter.regexp.inverseClear matching selectionsShift+Alt+K (editorTextFocus && dance.mode == 'normal')Shift+Alt+K (editorTextFocus && dance.mode == 'visual') selections.hideIndicesHide selection indices selections.orderAscendingOrder selections ascending selections.orderDescendingOrder selections descending @@ -190,22 +194,23 @@ selections are empty selections.pipe.prependPipe and prependShift+Alt+1 (editorTextFocus && dance.mode == 'normal') selections.pipe.replacePipe and replaceShift+\ (editorTextFocus && dance.mode == 'normal') selections.reduce.edgesReduce selections to their endsShift+Alt+S (editorTextFocus && dance.mode == 'normal') -selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal') +selections.select.orLeapLeap or selectS (editorTextFocus && dance.mode == 'normal')S (editorTextFocus && dance.mode == 'visual') selections.showIndicesShow selection indices -selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal') +selections.splitLines.orLeap.backwardLeap or select backwardAlt+S (editorTextFocus && dance.mode == 'normal')Alt+S (editorTextFocus && dance.mode == 'visual') selections.sortSort selections -selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal') +selections.splitSplit selectionsShift+S (editorTextFocus && dance.mode == 'normal')Shift+S (editorTextFocus && dance.mode == 'visual') selections.splitLinesSplit selections at line boundaries -selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal') +selections.toggleIndicesToggle selection indicesEnter (editorTextFocus && dance.mode == 'normal')Enter (editorTextFocus && dance.mode == 'visual') selections.trimLinesTrim linesAlt+X (editorTextFocus && dance.mode == 'normal') -selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal') +selections.trimWhitespaceTrim whitespaceShift+- (editorTextFocus && dance.mode == 'normal')Shift+- (editorTextFocus && dance.mode == 'visual') selections.rotateselections.rotate.bothRotate selections clockwiseShift+Alt+9 (editorTextFocus && dance.mode == 'normal') selections.rotate.contentsRotate selections clockwise (contents only) -selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal') +selections.rotate.selectionsRotate selections clockwise (selections only)Shift+9 (editorTextFocus && dance.mode == 'normal')Shift+9 (editorTextFocus && dance.mode == 'visual') selections.rotate.both.reverseRotate selections counter-clockwiseShift+Alt+0 (editorTextFocus && dance.mode == 'normal') selections.rotate.contents.reverseRotate selections counter-clockwise (contents only) -selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal') +selections.rotate.selections.reverseRotate selections counter-clockwise (selections only)Shift+0 (editorTextFocus && dance.mode == 'normal')Shift+0 (editorTextFocus && dance.mode == 'visual') viewview.lineReveals a position based on the main cursor +windowwindow.windowMenuShow window menuCtrl+W (editorTextFocus && dance.mode == 'normal')Ctrl+W (editorTextFocus && dance.mode == 'visual') @@ -259,22 +264,22 @@ Specify `all` to paste all contents next to each selection. #### Additional commands -| 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 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 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) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | -| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (kakoune: normal) | `[".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", ... }]` | +| Title | Identifier | Keybinding | Commands | +| ---------------------------------- | ------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| Pick register and replace | `selectRegister-insert` | `c-r` (helix: normal), `c-r` (helix: visual) | `[".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` (helix: normal), `s-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", shift: "select", ... }]` | +| Paste after and select | `paste.after.select` | `p` (helix: normal) , `p` (helix: visual) | `[".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` (helix: normal), `s-a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "start", all: true, shift: "select", ... }]` | +| Paste all after and select | `pasteAll.after.select` | `a-p` (helix: normal) , `a-p` (helix: visual) | `[".edit.insert", { handleNewLine: true, where: "end" , all: true, shift: "select", ... }]` | +| Delete | `delete` | `a-d` (helix: normal) , `a-d` (helix: visual) | `[".edit.insert", { register: "_", ... }]` | +| Delete and switch to Insert | `delete-insert` | `a-c` (helix: normal) , `a-c` (helix: visual) | `[".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and delete | `yank-delete` | `d` (helix: normal) , `d` (helix: visual) | `[".selections.saveText", { +register }], [".edit.insert", { register: "_", ... }]` | +| Copy, delete and switch to Insert | `yank-delete-insert` | `c` (helix: normal) , `c` (helix: visual) | `[".selections.saveText", { +register }], [".modes.set", { mode: "insert", +mode }], [".edit.insert", { register: "_", ... }]` | +| Copy and replace | `yank-replace` | `s-r` (helix: normal) , `s-r` (helix: visual) | `[".selections.saveText", { register: "tmp" }], [".edit.insert"], [".updateRegister", { copyFrom: "tmp", ... }]` | This command: - accepts a register (by default, it uses `dquote`). @@ -298,7 +303,8 @@ Join lines. This command: - takes an argument `separator` of type `string`. -Default keybinding: `a-j` (kakoune: normal) +Default keybinding: `s-j` (helix: normal) +`s-j` (helix: visual) @@ -322,7 +328,8 @@ Indent selected lines. This command: - may be repeated with a given number of repetitions. -Default keybinding: `>` (kakoune: normal) +Default keybinding: `>` (helix: normal) +`>` (helix: visual) @@ -334,7 +341,8 @@ Indent selected lines (including empty lines). This command: - may be repeated with a given number of repetitions. -Default keybinding: `a->` (kakoune: normal) +Default keybinding: `a->` (helix: normal) +`a->` (helix: visual) @@ -346,7 +354,8 @@ Deindent selected lines. This command: - may be repeated with a given number of repetitions. -Default keybinding: `a-<` (kakoune: normal) +Default keybinding: `a-<` (helix: normal) +`a-<` (helix: visual) @@ -358,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: `<` (helix: normal) +`<` (helix: visual) @@ -368,7 +378,8 @@ Transform to lower case. -Default keybinding: `` ` `` (kakoune: normal) +Default keybinding: `` ` `` (helix: normal) +`` ` `` (helix: visual) @@ -378,7 +389,8 @@ Transform to upper case. -Default keybinding: `` s-` `` (kakoune: normal) +Default keybinding: `` a-` `` (helix: normal) +`` a-` `` (helix: visual) @@ -388,7 +400,8 @@ Swap case. -Default keybinding: `` a-` `` (kakoune: normal) +Default keybinding: `~` (helix: normal) +`~` (helix: visual) @@ -401,7 +414,8 @@ 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` (helix: normal) +`r` (helix: visual) @@ -416,7 +430,8 @@ before the first character of each selection. This command: - takes an argument `fill` of type `string`. -Default keybinding: `&` (kakoune: normal) +Default keybinding: `&` (helix: normal) +`&` (helix: visual) @@ -431,11 +446,12 @@ given) to all other ones. This command: - may be repeated with a given number of repetitions. -Default keybinding: `a-&` (kakoune: normal) +Default keybinding: `a-&` (helix: normal) +`a-&` (helix: visual) -### [`edit.newLine.above`](../edit.ts#L347-L365) +### [`edit.newLine.above`](../edit.ts#L347-L364) Insert new line above each selection. @@ -445,19 +461,17 @@ 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` (helix: normal), `s-o` (helix: visual) | `[".edit.newLine.above", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -Default keybinding: `s-a-o` (kakoune: normal) - -### [`edit.newLine.below`](../edit.ts#L385-L403) +### [`edit.newLine.below`](../edit.ts#L384-L401) Insert new line below each selection. @@ -467,16 +481,14 @@ 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` (helix: normal), `o` (helix: visual) | `[".edit.newLine.below", { shift: "select" }], [".modes.insert.before", { ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `shift` of type `Shift`. -Default keybinding: `a-o` (kakoune: normal) - ## [`history`](../history.ts) Interact with history. @@ -491,7 +503,8 @@ Undo. This command: - does not require an active text editor. -Default keybinding: `u` (kakoune: normal) +Default keybinding: `u` (helix: normal) +`u` (helix: visual) @@ -503,7 +516,8 @@ Redo. This command: - does not require an active text editor. -Default keybinding: `s-u` (kakoune: normal) +Default keybinding: `s-u` (helix: normal) +`s-u` (helix: visual) @@ -555,8 +569,7 @@ 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: `.` (helix: normal) , `NumPad_Decimal` (helix: normal) , `.` (helix: visual) , `NumPad_Decimal` (helix: visual) @@ -570,7 +583,8 @@ This command: - does not require an active text editor. - may be repeated with a given number of repetitions. -Default keybinding: `q` (kakoune: normal) +Default keybinding: `q` (helix: normal) +`q` (helix: visual) @@ -582,7 +596,7 @@ Start recording. This command: - accepts a register (by default, it uses `arobase`). -Default keybinding: `s-q` (kakoune: normal, !recording) +Default keybinding: `s-q` (helix: normal, !recording) , `s-q` (helix: visual, !recording) @@ -594,8 +608,7 @@ Stop recording. This command: - accepts a register (by default, it uses `arobase`). -Default keybinding: `escape` (kakoune: normal, recording) -`s-q` (kakoune: normal, recording) +Default keybinding: `escape` (helix: normal, recording) , `s-q` (helix: normal, recording) , `escape` (helix: visual, recording) , `s-q` (helix: visual, recording) ## [`keybindings`](../keybindings.ts) @@ -610,6 +623,46 @@ Set up Dance keybindings. This command: - accepts a register (by default, it uses `dquote`). +## [`match`](../match.ts) + +Match menu. + +| Title | Keybinding | Command | +| ----------------------- | ------------------- | ---------------------------------- | +| Show match menu | `m` (helix: normal) | `[".openMenu", { menu: "match" }]` | +| Show match menu | `m` (helix: visual) | `[".openMenu", { menu: "match" }]` | + + + +### [`match.surroundreplace`](../match.ts#L22-L30) + +Replace stuff surround + + +This command: +- takes an input `input` of type `string`. + + + +### [`match.surrounddelete`](../match.ts#L96-L103) + +Delete stuff surround + + +This command: +- takes an input `input` of type `string`. + + + +### [`match.surround`](../match.ts#L159-L168) + +Add stuff surround + + +This command: +- accepts a register (by default, it uses `dquote`). +- takes an input `input` of type `string`. + ## [`misc`](../misc.ts) Miscellaneous commands that don't deserve their own category. @@ -617,13 +670,14 @@ Miscellaneous commands that don't deserve their own category. By default, Dance also exports the following keybindings for existing commands: -| Keybinding | Command | -| -------------------- | -------------------------------------------- | -| `s-;` (core: normal) | `["workbench.action.showCommands", { ... }]` | +| Keybinding | Command | +| -------------------------------------------- | -------------------------------------------- | +| `s-;` (helix: normal), `s-;` (helix: visual) | `["workbench.action.showCommands", { ... }]` | +| `c-c` (helix: normal), `c-c` (helix: visual) | `["editor.action.commentLine", { ... }]` | -### [`cancel`](../misc.ts#L20-L25) +### [`cancel`](../misc.ts#L21-L26) Cancel Dance operation. @@ -636,7 +690,7 @@ Default keybinding: `escape` (core: normal, !recording, "!markersNavigationVisib -### [`ignore`](../misc.ts#L31-L34) +### [`ignore`](../misc.ts#L32-L35) Ignore key. @@ -645,7 +699,7 @@ This command: -### [`run`](../misc.ts#L40-L149) +### [`run`](../misc.ts#L41-L150) Run code. @@ -755,7 +809,7 @@ This command: -### [`selectRegister`](../misc.ts#L185-L199) +### [`selectRegister`](../misc.ts#L186-L200) Select register for next command. @@ -768,11 +822,12 @@ current document. This command: - takes an input `register` of type `string | Register`. -Default keybinding: `"` (kakoune: normal) +Default keybinding: `"` (helix: normal) +`"` (helix: visual) -### [`updateRegister`](../misc.ts#L215-L226) +### [`updateRegister`](../misc.ts#L216-L227) Update the contents of a register. @@ -783,7 +838,7 @@ This command: -### [`updateCount`](../misc.ts#L252-L281) +### [`updateCount`](../misc.ts#L253-L282) Update Dance count. @@ -791,18 +846,18 @@ Update the current counter used to repeat the next command. #### Additional keybindings -| Title | Keybinding | Command | -| ------------------------------ | -------------------------------------------- | ------------------------------------ | -| Add the digit 0 to the counter | `0` (core: normal), `NumPad0` (core: normal) | `[".updateCount", { addDigits: 0 }]` | -| Add the digit 1 to the counter | `1` (core: normal), `NumPad1` (core: normal) | `[".updateCount", { addDigits: 1 }]` | -| Add the digit 2 to the counter | `2` (core: normal), `NumPad2` (core: normal) | `[".updateCount", { addDigits: 2 }]` | -| Add the digit 3 to the counter | `3` (core: normal), `NumPad3` (core: normal) | `[".updateCount", { addDigits: 3 }]` | -| Add the digit 4 to the counter | `4` (core: normal), `NumPad4` (core: normal) | `[".updateCount", { addDigits: 4 }]` | -| Add the digit 5 to the counter | `5` (core: normal), `NumPad5` (core: normal) | `[".updateCount", { addDigits: 5 }]` | -| Add the digit 6 to the counter | `6` (core: normal), `NumPad6` (core: normal) | `[".updateCount", { addDigits: 6 }]` | -| Add the digit 7 to the counter | `7` (core: normal), `NumPad7` (core: normal) | `[".updateCount", { addDigits: 7 }]` | -| Add the digit 8 to the counter | `8` (core: normal), `NumPad8` (core: normal) | `[".updateCount", { addDigits: 8 }]` | -| Add the digit 9 to the counter | `9` (core: normal), `NumPad9` (core: normal) | `[".updateCount", { addDigits: 9 }]` | +| Title | Keybinding | Command | +| ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------------------------ | +| Add the digit 0 to the counter | `0` (helix: normal), `NumPad0` (helix: normal), `0` (helix: visual), `NumPad0` (helix: visual) | `[".updateCount", { addDigits: 0 }]` | +| Add the digit 1 to the counter | `1` (helix: normal), `NumPad1` (helix: normal), `1` (helix: visual), `NumPad1` (helix: visual) | `[".updateCount", { addDigits: 1 }]` | +| Add the digit 2 to the counter | `2` (helix: normal), `NumPad2` (helix: normal), `2` (helix: visual), `NumPad2` (helix: visual) | `[".updateCount", { addDigits: 2 }]` | +| Add the digit 3 to the counter | `3` (helix: normal), `NumPad3` (helix: normal), `3` (helix: visual), `NumPad3` (helix: visual) | `[".updateCount", { addDigits: 3 }]` | +| Add the digit 4 to the counter | `4` (helix: normal), `NumPad4` (helix: normal), `4` (helix: visual), `NumPad4` (helix: visual) | `[".updateCount", { addDigits: 4 }]` | +| Add the digit 5 to the counter | `5` (helix: normal), `NumPad5` (helix: normal), `5` (helix: visual), `NumPad5` (helix: visual) | `[".updateCount", { addDigits: 5 }]` | +| Add the digit 6 to the counter | `6` (helix: normal), `NumPad6` (helix: normal), `6` (helix: visual), `NumPad6` (helix: visual) | `[".updateCount", { addDigits: 6 }]` | +| Add the digit 7 to the counter | `7` (helix: normal), `NumPad7` (helix: normal), `7` (helix: visual), `NumPad7` (helix: visual) | `[".updateCount", { addDigits: 7 }]` | +| Add the digit 8 to the counter | `8` (helix: normal), `NumPad8` (helix: normal), `8` (helix: visual), `NumPad8` (helix: visual) | `[".updateCount", { addDigits: 8 }]` | +| Add the digit 9 to the counter | `9` (helix: normal), `NumPad9` (helix: normal), `9` (helix: visual), `NumPad9` (helix: visual) | `[".updateCount", { addDigits: 9 }]` | This command: @@ -812,7 +867,7 @@ This command: -### [`openMenu`](../misc.ts#L309-L331) +### [`openMenu`](../misc.ts#L310-L332) Open menu. @@ -836,7 +891,7 @@ This command: -### [`changeInput`](../misc.ts#L372-L386) +### [`changeInput`](../misc.ts#L373-L387) Change current input. @@ -853,7 +908,7 @@ This command: -### [`ifEmpty`](../misc.ts#L396-L407) +### [`ifEmpty`](../misc.ts#L397-L408) Executes one of the specified commands depending on whether the current selections are empty. @@ -869,25 +924,26 @@ Set modes. -### [`modes.set`](../modes.ts#L9-L30) +### [`modes.set`](../modes.ts#L9-L31) Set Dance mode. #### Variants -| Title | Identifier | Keybinding | Command | -| ------------------ | ------------ | -------------------------- | ----------------------------------------------------------- | -| Set mode to Normal | `set.normal` | `escape` (kakoune: insert) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | -| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Title | Identifier | Keybinding | Command | +| ------------------ | ------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------- | +| Set mode to Normal | `set.normal` | `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | +| Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | +| Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | 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` (helix: normal), `i` (helix: visual) | `[".selections.faceBackward", { record: false }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "start", record: false, empty: true, ... }]` | +| Insert after | `insert.after` | `a` (helix: normal), `a` (helix: visual) | `[".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` (helix: normal), `s-i` (helix: visual) | `[".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` (helix: normal), `s-a` (helix: visual) | `[".select.lineEnd" , { shift: "jump" }], [".modes.set", { mode: "insert", +mode }], [".selections.reduce", { where: "end" , record: false, empty: true, ... }]` | This command: @@ -895,7 +951,7 @@ This command: -### [`modes.set.temporarily`](../modes.ts#L34-L46) +### [`modes.set.temporarily`](../modes.ts#L35-L47) Set Dance mode temporarily. @@ -922,11 +978,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` | `a-/` (helix: normal) | `[".search", { shift: "extend", ... }]` | +| Search backward | `backward` | `?` (helix: normal) | `[".search", { direction: -1 , ... }]` | +| Search backward (extend) | `backward.extend` | `a-?` (helix: normal) | `[".search", { direction: -1, shift: "extend", ... }]` | This command: - accepts a register (by default, it uses `slash`). @@ -935,8 +991,7 @@ 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: `/` (helix: normal) , `NumPad_Divide` (helix: normal) , `/` (helix: visual) , `NumPad_Divide` (helix: visual) @@ -945,16 +1000,15 @@ 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` | `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) | `[".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-*` (helix: normal) , `a-NumPad_Multiply` (helix: normal) @@ -963,18 +1017,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` | `a-n` (helix: normal), `n` (helix: visual) | `[".search.next", { add: true, ... }]` | +| Select previous match | `previous` | `s-n` (helix: normal) | `[".search.next", { direction: -1 , ... }]` | +| Add previous match | `previous.add` | `s-a-n` (helix: normal), `s-n` (helix: visual) | `[".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` (helix: normal) ## [`seek`](../seek.ts) @@ -989,15 +1043,15 @@ Select to character (excluded). #### Variants -| Title | Identifier | Keybinding | Command | -| ---------------------------------------- | -------------------------- | ------------------------- | ------------------------------------------------------------------- | -| Extend to character (excluded) | `extend` | `s-t` (kakoune: normal) | `[".seek", { shift: "extend" , ... }]` | -| Select to character (excluded, backward) | `backward` | `a-t` (kakoune: normal) | `[".seek", { direction: -1, ... }]` | -| Extend to character (excluded, backward) | `extend.backward` | `s-a-t` (kakoune: normal) | `[".seek", { shift: "extend", direction: -1, ... }]` | -| Select to character (included) | `included` | `f` (kakoune: normal) | `[".seek", { include: true , ... }]` | -| Extend to character (included) | `included.extend` | `s-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend" , ... }]` | -| Select to character (included, backward) | `included.backward` | `a-f` (kakoune: normal) | `[".seek", { include: true, direction: -1, ... }]` | -| Extend to character (included, backward) | `included.extend.backward` | `s-a-f` (kakoune: normal) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | +| Title | Identifier | Keybinding | Command | +| ---------------------------------------- | -------------------------- | ----------------------- | ------------------------------------------------------------------- | +| Select to character (excluded, backward) | `backward` | `s-t` (helix: normal) | `[".seek", { direction: -1, ... }]` | +| Select to character (included) | `included` | `f` (helix: normal) | `[".seek", { include: true , ... }]` | +| Select to character (included, backward) | `included.backward` | `s-f` (helix: normal) | `[".seek", { include: true, direction: -1, ... }]` | +| Extend to character (excluded) | `extend` | `t` (helix: visual) | `[".seek", { shift: "extend" , ... }]` | +| Extend to character (excluded, backward) | `extend.backward` | `s-t` (helix: visual) | `[".seek", { shift: "extend", direction: -1, ... }]` | +| Extend to character (included) | `included.extend` | `f` (helix: visual) | `[".seek", { include: true, shift: "extend" , ... }]` | +| Extend to character (included, backward) | `included.extend.backward` | `s-f` (helix: visual) | `[".seek", { include: true, shift: "extend", direction: -1, ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1015,17 +1069,17 @@ Select to next enclosing character. #### Variants -| Title | Identifier | Keybinding | Command | -| -------------------------------------- | --------------------------- | ------------------------- | -------------------------------------------------------------- | -| Extend to next enclosing character | `enclosing.extend` | `s-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend" , ... }]` | -| Select to previous enclosing character | `enclosing.backward` | `a-m` (kakoune: normal) | `[".seek.enclosing", { direction: -1, ... }]` | -| Extend to previous enclosing character | `enclosing.extend.backward` | `s-a-m` (kakoune: normal) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | +| Title | Identifier | Keybinding | Command | +| -------------------------------------- | --------------------------- | --------------------- | -------------------------------------------------------------- | +| Extend to next enclosing character | `enclosing.extend` | `s-m` (helix: visual) | `[".seek.enclosing", { shift: "extend" , ... }]` | +| Select to previous enclosing character | `enclosing.backward` | `a-m` (helix: normal) | `[".seek.enclosing", { direction: -1, ... }]` | +| Extend to previous enclosing character | `enclosing.extend.backward` | `a-m` (helix: visual) | `[".seek.enclosing", { shift: "extend", direction: -1, ... }]` | This command: - takes an argument `open` of type `boolean`. - takes an argument `pairs` of type `readonly string[]`. -Default keybinding: `m` (kakoune: normal) +Default keybinding: `s-m` (helix: normal) @@ -1038,26 +1092,26 @@ Select the word and following whitespaces on the right of the end of each select #### Variants -| Title | Identifier | Keybinding | Command | -| -------------------------------------------- | ------------------------- | ------------------------- | ------------------------------------------------------------------------------------- | -| Extend to next word start | `word.extend` | `s-w` (kakoune: normal) | `[".seek.word", { shift: "extend" , ... }]` | -| Select to previous word start | `word.backward` | `b` (kakoune: normal) | `[".seek.word", { direction: -1, ... }]` | -| Extend to previous word start | `word.extend.backward` | `s-b` (kakoune: normal) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | -| Select to next non-whitespace word start | `word.ws` | `a-w` (kakoune: normal) | `[".seek.word", { ws: true , ... }]` | -| Extend to next non-whitespace word start | `word.ws.extend` | `s-a-w` (kakoune: normal) | `[".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, ... }]` | -| Extend to previous non-whitespace word start | `word.ws.extend.backward` | `s-a-b` (kakoune: normal) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | -| Select to next word end | `wordEnd` | `e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | -| Extend to next word end | `wordEnd.extend` | `s-e` (kakoune: normal) | `[".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 , ... }]` | -| Extend to next non-whitespace word end | `wordEnd.ws.extend` | `s-a-e` (kakoune: normal) | `[".seek.word", { stopAtEnd: true , ws: true, shift: "extend" , ... }]` | +| Title | Identifier | Keybinding | Command | +| -------------------------------------------- | ------------------------- | ----------------------- | ------------------------------------------------------------------------------------ | +| Select to next WORD start | `word.ws` | `s-w` (helix: normal) | `[".seek.word", { ws: true , ... }]` | +| Select to previous word start | `word.backward` | `b` (helix: normal) | `[".seek.word", { direction: -1, ... }]` | +| Select to previous WORD start | `word.ws.backward` | `s-b` (helix: normal) | `[".seek.word", { ws: true, direction: -1, ... }]` | +| Select to next word end | `wordEnd` | `e` (helix: normal) | `[".seek.word", { stopAtEnd: true , ... }]` | +| Select to next WORD end | `wordEnd.ws` | `s-e` (helix: normal) | `[".seek.word", { stopAtEnd: true, ws: true , ... }]` | +| Extend to next word start | `word.extend` | `w` (helix: visual) | `[".seek.word", { shift: "extend" , ... }]` | +| Extend to next WORD start | `word.ws.extend` | `s-w` (helix: visual) | `[".seek.word", { ws: true, shift: "extend" , ... }]` | +| Extend to previous word start | `word.backward.extend` | `b` (helix: visual) | `[".seek.word", { shift: "extend", direction: -1, ... }]` | +| Extend to previous WORD start | `word.ws.backward.extend` | `s-b` (helix: visual) | `[".seek.word", { ws: true, shift: "extend", direction: -1, ... }]` | +| Extend to next word end | `wordEnd.extend` | `e` (helix: visual) | `[".seek.word", { stopAtEnd: true, shift: "extend" , ... }]` | +| Extend to next WORD end | `wordEnd.ws.extend` | `s-e` (helix: visual) | `[".seek.word", { stopAtEnd: true, ws: true, shift: "extend" , ... }]` | This command: - may be repeated with a given number of repetitions. - takes an argument `stopAtEnd` of type `boolean`. - takes an argument `ws` of type `boolean`. -Default keybinding: `w` (kakoune: normal) +Default keybinding: `w` (helix: normal) @@ -1128,32 +1182,39 @@ Select whole buffer. -Default keybinding: `%` (kakoune: normal) +Default keybinding: `%` (helix: normal) +`%` (helix: visual) -### [`select.vertically`](../select.ts#L31-L64) +### [`select.vertically`](../select.ts#L31-L70) Select vertically. + TODO: Keep s-down and s-up? + #### Variants -| Title | Identifier | Keybinding | Command | -| ----------- | ------------- | --------------------------------------------------- | ----------------------------------------------------------------- | -| Jump down | `down.jump` | `j` (kakoune: normal) , `down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | -| Extend down | `down.extend` | `s-j` (kakoune: normal), `s-down` (kakoune: normal) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | -| Jump up | `up.jump` | `k` (kakoune: normal) , `up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | -| Extend up | `up.extend` | `s-k` (kakoune: normal), `s-up` (kakoune: normal) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| ----------- | ------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | +| Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | +| Extend down | `down.extend` | `s-j` (helix: normal), `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | +| Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | +| Extend up | `up.extend` | `s-k` (helix: normal), `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) | `[".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` (helix: normal), `c-f` (helix: insert) | `[".select.vertically", { direction: 1, by: "page" , shift: "jump" }]` | +| `c-d` (helix: normal), `c-d` (helix: insert) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "jump" }]` | +| `c-b` (helix: normal), `c-b` (helix: insert) | `[".select.vertically", { direction: -1, by: "page" , shift: "jump" }]` | +| `c-u` (helix: normal), `c-u` (helix: insert) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "jump" }]` | +| `c-f` (helix: visual) | `[".select.vertically", { direction: 1, by: "page" , shift: "extend" }]` | +| `c-d` (helix: visual) | `[".select.vertically", { direction: 1, by: "halfPage", shift: "extend" }]` | +| `c-b` (helix: visual) | `[".select.vertically", { direction: -1, by: "page" , shift: "extend" }]` | +| `c-u` (helix: visual) | `[".select.vertically", { direction: -1, by: "halfPage", shift: "extend" }]` | This command: - may be repeated with a given number of repetitions. @@ -1162,19 +1223,21 @@ This command: -### [`select.horizontally`](../select.ts#L217-L239) +### [`select.horizontally`](../select.ts#L223-L247) Select horizontally. +TODO: keep s-left and s-right? + #### Variants -| Title | Identifier | Keybinding | Command | -| ------------ | -------------- | ---------------------------------------------------- | ------------------------------------------------------------------- | -| Jump right | `right.jump` | `l` (kakoune: normal) , `right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | -| Extend right | `right.extend` | `s-l` (kakoune: normal), `s-right` (kakoune: normal) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | -| Jump left | `left.jump` | `h` (kakoune: normal) , `left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | -| Extend left | `left.extend` | `s-h` (kakoune: normal), `s-left` (kakoune: normal) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| ------------ | -------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | +| Jump right | `right.jump` | `l` (helix: normal) , `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | +| Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual) , `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | +| Jump left | `left.jump` | `h` (helix: normal) , `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | +| Extend left | `left.extend` | `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | This command: - may be repeated with a given number of repetitions. @@ -1182,7 +1245,7 @@ This command: -### [`select.to`](../select.ts#L286-L304) +### [`select.to`](../select.ts#L294-L312) Select to. @@ -1191,10 +1254,10 @@ line. If no count is specified, this command will shift open the `goto` menu. #### Variants -| Title | Identifier | Keybinding | Command | -| --------- | ----------- | ----------------------- | ------------------------------------------ | -| Go to | `to.jump` | `g` (kakoune: normal) | `[".select.to", { shift: "jump" , ... }]` | -| Extend to | `to.extend` | `s-g` (kakoune: normal) | `[".select.to", { shift: "extend", ... }]` | +| Title | Identifier | Keybinding | Command | +| --------- | ----------- | ------------------------------------------ | ------------------------------------------ | +| Go to | `to.jump` | `g` (helix: normal) | `[".select.to", { shift: "jump" , ... }]` | +| Extend to | `to.extend` | `s-g` (helix: normal), `g` (helix: visual) | `[".select.to", { shift: "extend", ... }]` | This command: - accepts an argument of type `object`. @@ -1202,7 +1265,7 @@ This command: -### [`select.line.below`](../select.ts#L314-L317) +### [`select.line.below`](../select.ts#L322-L325) Select line below. @@ -1211,16 +1274,20 @@ This command: -### [`select.line.below.extend`](../select.ts#L342-L345) +### [`select.line.below.extend`](../select.ts#L350-L355) Extend to line below. + This command: - may be repeated with a given number of repetitions. +Default keybinding: `x` (helix: normal) +`x` (helix: visual) + -### [`select.line.above`](../select.ts#L372-L375) +### [`select.line.above`](../select.ts#L382-L385) Select line above. @@ -1229,7 +1296,7 @@ This command: -### [`select.line.above.extend`](../select.ts#L399-L402) +### [`select.line.above.extend`](../select.ts#L409-L412) Extend to line above. @@ -1238,34 +1305,34 @@ This command: -### [`select.lineStart`](../select.ts#L448-L470) +### [`select.lineStart`](../select.ts#L458-L480) 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` (helix: normal), `s-home` (helix: 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", ... }]` | 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) +Default keybinding: `a-h` (helix: normal) +`home` (helix: normal) -### [`select.lineEnd`](../select.ts#L495-L517) +### [`select.lineEnd`](../select.ts#L505-L527) -Select to line end. +Select to line end. TODO: helix @@ -1286,7 +1353,7 @@ Default keybinding: `a-l` (kakoune: normal) -### [`select.lastLine`](../select.ts#L545-L555) +### [`select.lastLine`](../select.ts#L555-L565) Select to last line. @@ -1299,7 +1366,7 @@ Select to last line. -### [`select.firstVisibleLine`](../select.ts#L566-L576) +### [`select.firstVisibleLine`](../select.ts#L576-L586) Select to first visible line. @@ -1312,7 +1379,7 @@ Select to first visible line. -### [`select.middleVisibleLine`](../select.ts#L583-L593) +### [`select.middleVisibleLine`](../select.ts#L593-L603) Select to middle visible line. @@ -1325,7 +1392,7 @@ Select to middle visible line. -### [`select.lastVisibleLine`](../select.ts#L600-L610) +### [`select.lastVisibleLine`](../select.ts#L610-L620) Select to last visible line. @@ -1350,7 +1417,8 @@ Copy selections text. This command: - accepts a register (by default, it uses `dquote`). -Default keybinding: `y` (kakoune: normal) +Default keybinding: `y` (helix: normal) +`y` (helix: visual) @@ -1365,19 +1433,19 @@ This command: - takes an argument `untilDelay` of type `number`. - takes an argument `until` of type `AutoDisposable.Event[]`. -Default keybinding: `s-z` (kakoune: normal) +Default keybinding: `s-a-z` (helix: normal) ### [`selections.restore`](../selections.ts#L95-L103) -Restore selections. +Restore selections. TODO: Needed? This command: - accepts a register (by default, it uses `caret`). -Default keybinding: `z` (kakoune: normal) +Default keybinding: `a-z` (helix: normal) @@ -1436,12 +1504,12 @@ 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` | `s-k` (helix: normal) , `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | +| Clear matching selections | `filter.regexp.inverse` | `s-a-k` (helix: normal), `s-a-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | +| Clear secondary selections | `clear.secondary` | `,` (helix: normal) , `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | +| Clear main selections | `clear.main` | `a-,` (helix: normal) , `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | This command: - accepts an argument of type `{ expression?: string }`. @@ -1450,7 +1518,8 @@ This command: - takes an argument `interactive` of type `boolean`. - takes an argument `inverse` of type `boolean`. -Default keybinding: `$` (kakoune: normal) +Default keybinding: `$` (helix: normal) +`$` (helix: visual) @@ -1460,9 +1529,9 @@ 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` (helix: normal), `s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { ... }]], otherwise: [[".selections.select", { ... }]] }]` | This command: - accepts an argument of type `{ re?: string | RegExp }`. @@ -1480,7 +1549,8 @@ 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` (helix: normal) +`s-s` (helix: visual) @@ -1490,9 +1560,9 @@ 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` (helix: normal), `a-s` (helix: visual) | `[".ifEmpty", { then: [[".seek.leap", { direction: -1, ... }]], otherwise: [[".selections.splitLines", { ... }]] }]` | This command: - may be repeated with a given number of repetitions. @@ -1508,7 +1578,8 @@ Expand selections to contain full lines (including end-of-line characters). -Default keybinding: `x` (kakoune: normal) +Default keybinding: `s-x` (helix: normal) +`s-x` (helix: visual) @@ -1532,7 +1603,8 @@ Trim whitespace at beginning and end of selections. -Default keybinding: `_` (kakoune: normal) +Default keybinding: `_` (helix: normal) +`_` (helix: visual) @@ -1552,7 +1624,8 @@ 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: `;` (helix: normal) +`;` (helix: visual) @@ -1606,14 +1679,15 @@ Copy selections below. #### Variant -| Title | Identifier | Keybinding | Command | -| --------------------- | ------------ | ------------------------- | ----------------------------------------- | -| Copy selections above | `copy.above` | `s-a-c` (kakoune: normal) | `[".selections.copy", { direction: -1 }]` | +| Title | Identifier | Keybinding | Command | +| --------------------- | ------------ | ------------------------------------------------ | ----------------------------------------- | +| Copy selections above | `copy.above` | `s-a-c` (helix: normal), `s-a-c` (helix: visual) | `[".selections.copy", { direction: -1 }]` | This command: - may be repeated with a given number of repetitions. -Default keybinding: `s-c` (kakoune: normal) +Default keybinding: `s-c` (helix: normal) +`s-c` (helix: visual) @@ -1649,7 +1723,8 @@ This command: - takes an argument `display` of type `boolean | undefined`. - takes an argument `until` of type `AutoDisposable.Event[]`. -Default keybinding: `enter` (dance: normal) +Default keybinding: `enter` (helix: normal) +`enter` (helix: visual) ## [`selections.rotate`](../selections.rotate.ts) @@ -1692,22 +1767,35 @@ This command: -### [`selections.rotate.selections`](../selections.rotate.ts#L45-L56) +### [`selections.rotate.selections`](../selections.rotate.ts#L45-L58) Rotate selections clockwise (selections only). +TODO: ( seems to be broken. Fix it... + 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` | `)` (helix: normal), `)` (helix: visual) | `[".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: `(` (helix: normal) +`(` (helix: visual) + +## [`space`](../space.ts) + +General purpose space menu. + +#### Predefined keybindings + +| Title | Keybinding | Command | +| ----------------------- | ------------------------------------------------ | --------------------------------------- | +| Show space menu | `space` (helix: normal), `space` (helix: visual) | `[".openMenu", { menu: "space", ... }]` | ## [`view`](../view.ts) @@ -1715,10 +1803,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 | `z` (helix: normal), `z` (helix: visual) | `[".openMenu", { menu: "view", ... }]` | +| Show view menu (locked) | `s-z` (helix: normal), `s-z` (helix: visual) | `[".openMenu", { menu: "view", locked: true, ... }]` | @@ -1729,3 +1817,13 @@ Reveals a position based on the main cursor. This command: - takes an argument `at` of type `"top" | "center" | "bottom"`. +## [`window`](../window.ts) + +Window menu. + +#### Predefined keybindings + +| Title | Identifier | Keybinding | Command | +| ----------------------- | ------------------------------ | -------------------------------------------- | ---------------------------------------- | +| Show window menu | `windowMenu` | `c-w` (helix: normal), `c-w` (helix: visual) | `[".openMenu", { menu: "window", ... }]` | + diff --git a/src/commands/load-all.ts b/src/commands/load-all.ts index f4af539..2c638fb 100644 --- a/src/commands/load-all.ts +++ b/src/commands/load-all.ts @@ -235,6 +235,7 @@ import { lineStart as select_lineStart, line_above as select_line_above, line_above_extend as select_line_above_extend, + line_below as select_line_below, line_below_extend as select_line_below_extend, middleVisibleLine as select_middleVisibleLine, to as select_to, @@ -551,6 +552,11 @@ export const commands: Commands = function () { (_, argument) => _.runAsync((_) => select_line_above_extend(_, getCount(_, argument))), CommandDescriptor.Flags.RequiresActiveEditor, ), + "dance.select.line.below": new CommandDescriptor( + "dance.select.line.below", + (_, argument) => _.runAsync((_) => select_line_below(_, getCount(_, argument))), + CommandDescriptor.Flags.RequiresActiveEditor, + ), "dance.select.line.below.extend": new CommandDescriptor( "dance.select.line.below.extend", (_, argument) => _.runAsync((_) => select_line_below_extend(_, getCount(_, argument))), diff --git a/src/commands/match.ts b/src/commands/match.ts index 316f74f..abf81cd 100644 --- a/src/commands/match.ts +++ b/src/commands/match.ts @@ -12,10 +12,10 @@ import { select } from "./selections"; /** * Match menu. * - * | Title | Keybinding | Command | - * | ----------------------- | ------------ | ---------------------------------- | - * | Show match menu | `m` (normal) | `[".openMenu", { menu: "match" }]` | - * | Show match menu | `m` (visual) | `[".openMenu", { menu: "match" }]` | + * | Title | Keybinding | Command | + * | ----------------------- | ------------------- | ---------------------------------- | + * | Show match menu | `m` (helix: normal) | `[".openMenu", { menu: "match" }]` | + * | Show match menu | `m` (helix: visual) | `[".openMenu", { menu: "match" }]` | */ declare module "./match"; @@ -184,8 +184,8 @@ export async function surround( endText = input; } - await insert(_, selections, register, true, false, 0, false, undefined, endText, "end"); - await insert(_, selections, register, true, false, 0, false, undefined, startText, "start"); + await insert(_, selections, register, true, false, false, 0, undefined, endText, "end"); + await insert(_, selections, register, true, false, false, 0, undefined, startText, "start"); } diff --git a/src/commands/modes.ts b/src/commands/modes.ts index e7472a9..014805d 100644 --- a/src/commands/modes.ts +++ b/src/commands/modes.ts @@ -11,11 +11,11 @@ declare module "./modes"; * * #### Variants * - * | Title | Identifier | Keybinding | Command | - * | ------------------ | ------------ | -------------------------------------------------- | ----------------------------------------------------------- | - * | Set mode to Normal | `set.normal` | `escape` (helix: insert), `escape` (helix: visual), `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | - * | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | - * | Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | + * | Title | Identifier | Keybinding | Command | + * | ------------------ | ------------ | ------------------------------------------------------------------------- | ----------------------------------------------------------- | + * | Set mode to Normal | `set.normal` | `escape` (helix: insert) , `escape` (helix: visual) , `v` (helix: visual) | `[".modes.set", { mode: "normal" }], ["hideSuggestWidget"]` | + * | Set mode to Insert | `set.insert` | | `[".modes.set", { mode: "insert" }]` | + * | Set mode to Visual | `set.visual` | `v` (helix: normal) | `[".modes.set", { mode: "visual" }]` | * * Other variants are provided to switch to insert mode: * diff --git a/src/commands/search.ts b/src/commands/search.ts index dabb83d..8bbeba2 100644 --- a/src/commands/search.ts +++ b/src/commands/search.ts @@ -14,7 +14,7 @@ declare module "./search"; /** * Search. * - * @keys `/` (helix: normal), `NumPad_Divide` (helix: normal), `/` (helix: visual), `NumPad_Divide` (helix: visual) + * @keys `/` (helix: normal) , `NumPad_Divide` (helix: normal) , `/` (helix: visual) , `NumPad_Divide` (helix: visual) * * | Title | Identifier | Keybinding | Command | * | ------------------------ | ----------------- | --------------------- | ------------------------------------------------------ | @@ -83,11 +83,11 @@ export async function search( /** * Search current selection. * - * @keys `a-*` (helix: normal), `a-NumPad_Multiply` (helix: normal) + * @keys `a-*` (helix: normal) , `a-NumPad_Multiply` (helix: normal) * - * | Title | Identifier | Keybinding | Command | - * | -------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | - * | Search current selection (smart) | `selection.smart` | `*` (helix: normal), `NumPad_Multiply` (helix: normal), `*` (helix: visual), `NumPad_Multiply` (helix: visual) | `[".search.selection", { smart: true, +register }]` | + * | Title | Identifier | Keybinding | Command | + * | -------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | + * | Search current selection (smart) | `selection.smart` | `*` (helix: normal) , `NumPad_Multiply` (helix: normal) , `*` (helix: visual) , `NumPad_Multiply` (helix: visual) | `[".search.selection", { smart: true, +register }]` | */ export function selection( document: vscode.TextDocument, diff --git a/src/commands/select.ts b/src/commands/select.ts index fd1ebd3..5440f5f 100644 --- a/src/commands/select.ts +++ b/src/commands/select.ts @@ -38,12 +38,12 @@ const preferredColumnsToken = * * #### Variants * - * | Title | Identifier | Keybinding | Command | - * | ----------- | ------------- | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | - * | Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | - * | Extend down | `down.extend` | `s-j` (helix: helix: normal),`s-down` (helix: normal), `j` (helix: visual), `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | - * | Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | - * | Extend up | `up.extend` | `s-k` (helix: helix: normal),`s-up` (helix: normal) , `k` (helix: visual), `up` (helix: visual) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | + * | Title | Identifier | Keybinding | Command | + * | ----------- | ------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | + * | Jump down | `down.jump` | `j` (helix: normal) , `down` (helix: normal) | `[".select.vertically", { direction: 1, shift: "jump" , ... }]` | + * | Extend down | `down.extend` | `s-j` (helix: normal), `s-down` (helix: normal) , `j` (helix: visual) , `down` (helix: visual) | `[".select.vertically", { direction: 1, shift: "extend", ... }]` | + * | Jump up | `up.jump` | `k` (helix: normal) , `up` (helix: normal) | `[".select.vertically", { direction: -1, shift: "jump" , ... }]` | + * | Extend up | `up.extend` | `s-k` (helix: normal), `s-up` (helix: normal) , `k` (helix: visual) , `up` (helix: visual) | `[".select.vertically", { direction: -1, shift: "extend", ... }]` | * * The following keybindings are also defined: * @@ -230,12 +230,12 @@ export function vertically( * * #### Variants * - * | Title | Identifier | Keybinding | Command | - * | ------------ | -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------- | - * | Jump right | `right.jump` | `l` (helix: normal), `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | - * | Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual), `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | - * | Jump left | `left.jump` | `h` (helix: normal), `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | - * | Extend left | `left.extend` | `s-left` (helix: normal), `h` (helix: visual), `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | + * | Title | Identifier | Keybinding | Command | + * | ------------ | -------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------- | + * | Jump right | `right.jump` | `l` (helix: normal) , `right` (helix: normal) | `[".select.horizontally", { direction: 1, shift: "jump" , ... }]` | + * | Extend right | `right.extend` | `s-right` (helix: normal), `l` (helix: visual) , `right` (helix: visual) | `[".select.horizontally", { direction: 1, shift: "extend", ... }]` | + * | Jump left | `left.jump` | `h` (helix: normal) , `left` (helix: normal) | `[".select.horizontally", { direction: -1, shift: "jump" , ... }]` | + * | Extend left | `left.extend` | `s-left` (helix: normal) , `h` (helix: visual) , `left` (helix: visual) | `[".select.horizontally", { direction: -1, shift: "extend", ... }]` | */ export function horizontally( _: Context, @@ -458,18 +458,18 @@ export function line_above_extend(_: Context, count: number) { /** * Select to line start. * - * @keys `a-h` (kakoune: normal), `home` (kakoune: normal) + * @keys `a-h` (helix: normal), `home` (helix: 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` (helix: normal), `s-home` (helix: 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", ... }]` | */ export function lineStart( _: Context, diff --git a/src/commands/selections.ts b/src/commands/selections.ts index 396c1a7..5beda2a 100644 --- a/src/commands/selections.ts +++ b/src/commands/selections.ts @@ -297,10 +297,10 @@ const filterHistory: string[] = []; * * | Title | Identifier | Keybinding | Commands | * | -------------------------- | ----------------------- | ------------------------------------------------ | ------------------------------------------------------------------------ | - * | Keep matching selections | `filter.regexp` | `s-k` (helix: normal), `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | + * | Keep matching selections | `filter.regexp` | `s-k` (helix: normal) , `s-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/" , ... }]` | * | Clear matching selections | `filter.regexp.inverse` | `s-a-k` (helix: normal), `s-a-k` (helix: visual) | `[".selections.filter", { defaultExpression: "/", inverse: true, ... }]` | - * | Clear secondary selections | `clear.secondary` | `,` (helix: normal), `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | - * | Clear main selections | `clear.main` | `a-,` (helix: normal), `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | + * | Clear secondary selections | `clear.secondary` | `,` (helix: normal) , `,` (helix: visual) | `[".selections.filter", { expression: "i === count" , ... }]` | + * | Clear main selections | `clear.main` | `a-,` (helix: normal) , `a-,` (helix: visual) | `[".selections.filter", { expression: "i !== count" , ... }]` | */ export function filter( _: Context, @@ -799,7 +799,7 @@ export async function sort( /** * Copy selections below. * - * @keys `s-c` (normal), `s-c` (visual) + * @keys `s-c` (helix: normal), `s-c` (helix: visual) * * #### Variant * @@ -876,7 +876,7 @@ const indicesToken = PerEditorState.registerState(/* isDisposabl /** * Toggle selection indices. * - * @keys `enter` (dance: normal), `enter` (dance: visual) + * @keys `enter` (helix: normal), `enter` (helix: visual) * * #### Variants * diff --git a/src/commands/space.ts b/src/commands/space.ts index d7443fe..cccaa3f 100644 --- a/src/commands/space.ts +++ b/src/commands/space.ts @@ -5,8 +5,8 @@ import * as vscode from "vscode"; * * #### Predefined keybindings * - * | Title | Keybinding | Command | - * | ----------------------- | ---------------------------------- | --------------------------------------- | - * | Show space menu | `space` (normal), `space` (visual) | `[".openMenu", { menu: "space", ... }]` | + * | Title | Keybinding | Command | + * | ----------------------- | ------------------------------------------------ | --------------------------------------- | + * | Show space menu | `space` (helix: normal), `space` (helix: visual) | `[".openMenu", { menu: "space", ... }]` | */ declare module "./space"; \ No newline at end of file diff --git a/src/commands/window.ts b/src/commands/window.ts index 3458f53..0d6a74c 100644 --- a/src/commands/window.ts +++ b/src/commands/window.ts @@ -5,8 +5,8 @@ import * as vscode from "vscode"; * * #### Predefined keybindings * - * | Title | Identifier | Keybinding | Command | - * | ----------------------- | ------------------------------ | ------------------------------ | ---------------------------------------- | - * | Show window menu | `windowMenu` | `c-w` (normal), `c-w` (visual) | `[".openMenu", { menu: "window", ... }]` | + * | Title | Identifier | Keybinding | Command | + * | ----------------------- | ------------------------------ | -------------------------------------------- | ---------------------------------------- | + * | Show window menu | `windowMenu` | `c-w` (helix: normal), `c-w` (helix: visual) | `[".openMenu", { menu: "window", ... }]` | */ declare module "./window"; \ No newline at end of file