Commands are defined in commands.yaml
, and then exported
to VS Code-compatible commands
and key bindings.
They are implemented in src/commands
.
ID | Title | Description | Key bindings |
---|---|---|---|
dance.toggle |
Toggle | Toggles Dance key bindings. | |
dance.set.normal |
Set mode to Normal | Set Dance mode to Normal. | Escape (dance.mode == 'insert' ) |
dance.set.insert |
Set mode to Insert | Set Dance mode to Insert. | |
dance.tmp.normal |
Temporary normal mode | Switches to normal mode temporarily. | Ctrl+V (dance.mode == 'insert' ) |
dance.tmp.insert |
Temporary insert mode | Switches to insert mode temporarily. | Ctrl+V (dance.mode == 'normal' ) |
dance.insert.before |
Insert before | Start insert before the current selections. | I (dance.mode == 'normal' ) |
dance.insert.after |
Insert after | Start insert after the current selections. | A (dance.mode == 'normal' ) |
dance.insert.lineStart |
Insert at line start | Start insert at line start of each selection. | Shift+I (dance.mode == 'normal' ) |
dance.insert.lineEnd |
Insert at line end | Start insert at line end of each selection. | Shift+A (dance.mode == 'normal' ) |
dance.insert.newLine.below |
Insert new line below | Create new line and start insert below. | O (dance.mode == 'normal' ) |
dance.insert.newLine.above |
Insert new line above | Create new line and start insert above. | Shift+O (dance.mode == 'normal' ) |
dance.newLine.below |
Add new line below | Add a new line below, without entering insert mode. | Alt+O (dance.mode == 'normal' ) |
dance.newLine.above |
Add new line above | Add a new line above, without entering insert mode. | Shift+Alt+O (dance.mode == 'normal' ) |
dance.repeat.insert |
Repeat last insert-mode change | Repeat last insert-mode change. | . (dance.mode == 'normal' ) |
dance.repeat.objectOrSelectTo |
Repeat last object select / character find | Repeat last object select / character find. | Alt+. (dance.mode == 'normal' ) |
dance.left |
Move left | Move left. | Left (dance.mode == 'normal' ), H (dance.mode == 'normal' ) |
dance.right |
Move right | Move right. | Right (dance.mode == 'normal' ), L (dance.mode == 'normal' ) |
dance.up |
Move up | Move up. | Up (dance.mode == 'normal' ), K (dance.mode == 'normal' ) |
dance.down |
Move down | Move down. | Down (dance.mode == 'normal' ), J (dance.mode == 'normal' ) |
dance.up.page |
Scroll one page up | Scroll one page up. | Ctrl+B (dance.mode == 'normal' ), Ctrl+B (dance.mode == 'insert' ) |
dance.down.page |
Scroll one page down | Scroll one page down. | Ctrl+F (dance.mode == 'normal' ), Ctrl+F (dance.mode == 'insert' ) |
dance.up.halfPage |
Scroll half a page up | Scroll half a page up. | Ctrl+U (dance.mode == 'normal' ), Ctrl+U (dance.mode == 'insert' ) |
dance.down.halfPage |
Scroll half a page down | Scroll half a page down. | Ctrl+D (dance.mode == 'normal' ), Ctrl+D (dance.mode == 'insert' ) |
dance.select.to.included |
Select to | Select to the next character pressed, including it. | F (dance.mode == 'normal' ) |
dance.select.to.excluded |
Select until | Select until the next character pressed, excluding it. | T (dance.mode == 'normal' ) |
dance.select.buffer |
Select whole buffer | Select whole buffer. | Shift+5 (dance.mode == 'normal' ) |
dance.select.line |
Select line | Select line on which the end of each selection lies (or next line when end lies on an end-of-line). | X (dance.mode == 'normal' ) |
dance.select.toLineBegin |
Select to line beginning | Select to line beginning. | Alt+H (dance.mode == 'normal' ), Home (dance.mode == 'normal' ) |
dance.select.toLineEnd |
Select to line end | Select to line end. | Alt+L (dance.mode == 'normal' ), End (dance.mode == 'normal' ) |
dance.select.enclosing |
Select enclosing characters | Select enclosing characters. | M (dance.mode == 'normal' ) |
dance.expandLines |
Extend lines | Extend selections to contain full lines (including end-of-lines). | Alt+X (dance.mode == 'normal' ) |
dance.trimLines |
Trim lines | Trim selections to only contain full lines (from start to line break). | Shift+Alt+X (dance.mode == 'normal' ) |
dance.trimSelections |
Trim selections | Trim whitespace at beginning and end of selections. | Shift+- (dance.mode == 'normal' ) |
dance.select.word |
Select to next word start | Select the word and following whitespaces on the right of the end of each selection. | W (dance.mode == 'normal' ) |
dance.select.word.previous |
Select to previous word start | Select preceding whitespaces and the word on the left of the end of each selection. | B (dance.mode == 'normal' ) |
dance.select.word.end |
Select to next word end | Select preceding whitespaces and the word on the right of the end of each selection. | E (dance.mode == 'normal' ) |
dance.select.word.alt |
Select to next non-whitespace word start | Select the non-whitespace word and following whitespaces on the right of the end of each selection. | Alt+W (dance.mode == 'normal' ) |
dance.select.word.alt.previous |
Select to previous non-whitespace word start | Select preceding whitespaces and the non-whitespace word on the left of the end of each selection. | Alt+B (dance.mode == 'normal' ) |
dance.select.word.alt.end |
Select to next non-whitespace word end | Select preceding whitespaces and the non-whitespace word on the right of the end of each selection. | Alt+E (dance.mode == 'normal' ) |
dance.select |
Select | Select within current selections according to a RegExp. | S (dance.mode == 'normal' ) |
dance.split |
Split | Split within current selections according to a RegExp. | Shift+S (dance.mode == 'normal' ) |
dance.split.lines |
Split lines | Split selections into lines. | Alt+S (dance.mode == 'normal' ) |
dance.select.firstLast |
Select first and last characters | Select first and last characters of each selection. | Shift+Alt+S (dance.mode == 'normal' ) |
dance.select.copy |
Copy selection to next line | Copy selection to next line. | Shift+C (dance.mode == 'normal' ) |
dance.select.copy.backwards |
Copy selection to previous line | Copy selection to previous line. | Shift+Alt+C (dance.mode == 'normal' ) |
dance.selections.reduce |
Reduce selections | Reduce selections to their cursor. | ; (dance.mode == 'normal' ) |
dance.selections.flip |
Flip selections | Flip the direction of each selection. | Alt+; (dance.mode == 'normal' ) |
dance.selections.forward |
Forward selections | Ensure selections are in forward direction (the active cursor is after the anchor). | Shift+Alt+; (dance.mode == 'normal' ) |
dance.selections.backward |
Backward selections | Ensure selections are in backward direction (the active cursor is before the anchor). | |
dance.selections.clear |
Clear selections | Clear selections (except main) | Space (dance.mode == 'normal' ) |
dance.selections.clearMain |
Clear main selection | Clear main selection. | Alt+Space (dance.mode == 'normal' ) |
dance.selections.keepMatching |
Keep matching selections | Keep selections that match a RegExp. | Alt+K (dance.mode == 'normal' ) |
dance.selections.clearMatching |
Clear matching selections | Clear selections that match a RegExp. | Shift+Alt+K (dance.mode == 'normal' ) |
dance.selections.merge |
Merge contiguous selections | Merge contiguous selections together, including across lines. | Shift+Alt+- (dance.mode == 'normal' ) |
dance.selections.align |
Align selections | Align selections, aligning the cursor of each selection by inserting spaces before the first character of each selection. | Shift+7 (dance.mode == 'normal' ) |
dance.selections.align.copy |
Copy indentation | Copy the indentation of the main selection (or the count one if a count is given) to all other ones. | Shift+Alt+7 (dance.mode == 'normal' ) |
dance.delete.yank |
Yank and delete | Yank and delete selections. | D (dance.mode == 'normal' ) |
dance.delete.insert.yank |
Yank, delete and insert | Yank, delete and enter insert mode. | C (dance.mode == 'normal' ) |
dance.delete.noYank |
Delete without yank | Delete selections without yanking. | Alt+D (dance.mode == 'normal' ) |
dance.delete.insert.noYank |
Delete and insert without yank | Delete selections without yanking and enter insert mode. | Alt+C (dance.mode == 'normal' ) |
dance.yank |
Yank | Yank selections. | Y (dance.mode == 'normal' ) |
dance.paste.after |
Paste after | Paste after the end of each selection. | P (dance.mode == 'normal' ) |
dance.paste.before |
Paste before | Paste before the start of each selection. | Shift+P (dance.mode == 'normal' ) |
dance.paste.select.after |
Paste after and select | Paste after the end of each selection and select pasted text. | Alt+P (dance.mode == 'normal' ) |
dance.paste.select.before |
Paste before and select | Paste before the start of each selection and select pasted text. | Shift+Alt+P (dance.mode == 'normal' ) |
dance.paste.replace |
Replace | Replace selections with yanked text. | Shift+R (dance.mode == 'normal' ) |
dance.paste.replace.every |
Replace with every | Replace selections with every yanked text. | Shift+Alt+R (dance.mode == 'normal' ) |
dance.replace.characters |
Replace character | Replace each selected character with the next entered one. | R (dance.mode == 'normal' ) |
dance.join |
Join lines | Join selected lines. | Alt+J (dance.mode == 'normal' ) |
dance.join.select |
Join lines and select spaces | Join selected lines and select spaces inserted in place of line breaks. | Shift+Alt+J (dance.mode == 'normal' ) |
dance.indent |
Indent | Indent selected lines. | Shift+. (dance.mode == 'normal' ) |
dance.indent.withEmpty |
Indent (including empty) | Indent selected lines (including empty lines). | Shift+Alt+. (dance.mode == 'normal' ) |
dance.deindent |
Deindent | Deindent selected lines. | Shift+Alt+, (dance.mode == 'normal' ) |
dance.deindent.further |
Deindent (including incomplete indent) | Deindent selected lines (and remove additional incomplete indent). | Shift+, (dance.mode == 'normal' ) |
dance.toLowerCase |
Transform to lowercase | Transform to lowercase. | ``` (dance.mode == 'normal' ) |
dance.toUpperCase |
Transform to uppercase | Transform to uppercase. | Shift+`` ( dance.mode == 'normal'`) |
dance.swapCase |
Swap case | Swap case. | Alt+`` ( dance.mode == 'normal'`) |
dance.pipe.filter |
Filter through pipe | Pipe each selection to a program, and keeps it if the program returns 0. | Shift+4 (dance.mode == 'normal' ) |
dance.pipe.replace |
Pipe and replace | Pipe each selection to a command, and replaces it with its output. | Shift+\ (dance.mode == 'normal' ) |
dance.pipe.ignore |
Pipe | Pipe each selection to a command, ignoring their results. | Shift+Alt+\ (dance.mode == 'normal' ) |
dance.pipe.append |
Pipe and append | Pipe each selection to a command, appending the output after the selection. | Shift+1 (dance.mode == 'normal' ) |
dance.pipe.prepend |
Pipe and prepend | Pipe each selection to a command, prepending the output before the selection. | Shift+Alt+1 (dance.mode == 'normal' ) |
dance.history.undo |
Undo | Undo. | U (dance.mode == 'normal' ) |
dance.history.backward |
Move backward in history | Move backward in history. | Alt+U (dance.mode == 'normal' ) |
dance.history.redo |
Redo | Redo. | Shift+U (dance.mode == 'normal' ) |
dance.history.forward |
Move forward in history | Move forward in history. | Shift+Alt+U (dance.mode == 'normal' ) |
dance.history.repeat |
Repeat last change | Repeat last change. | |
dance.history.repeat.selection |
Repeat last selection change | Repeat last selection change. | |
dance.history.repeat.edit |
Repeat last edit change | Repeat last edit change. | |
dance.macros.record.start |
Start recording macro | Start recording macro. | Shift+Q (dance.mode == 'normal' && !dance.recordingMacro ) |
dance.macros.record.stop |
Stop recording macro | Stop recording macro. | Escape (dance.mode == 'normal' ) |
dance.macros.play |
Play macro | Play macro. | Q (dance.mode == 'normal' ) |
dance.rotate |
Rotate | Rotate each selection clockwise. | Shift+9 (dance.mode == 'normal' ) |
dance.rotate.backwards |
Rotate backwards | Rotate each selection counter-clockwise. | Shift+0 (dance.mode == 'normal' ) |
dance.rotate.content |
Rotate selection content | Rotate each selection (as well as its content) clockwise. | Shift+Alt+9 (dance.mode == 'normal' ) |
dance.rotate.content.backwards |
Rotate selection content backwards | Rotate each selection (as well as its content) counter-clockwise. | Shift+Alt+0 (dance.mode == 'normal' ) |
dance.rotate.contentOnly |
Rotate content only | Rotate each selection content clockwise, without changing selections. | |
dance.rotate.contentOnly.backwards |
Rotate content only backwards | Rotate each selection content counter-clockwise, without changing selections. | |
dance.search |
Search | Search for the given input string. | / (dance.mode == 'normal' ) |
dance.search.backwards |
Search backwards | Search for the given input string before the current selections. | Alt+/ (dance.mode == 'normal' ) |
dance.search.selection.smart |
Search current selections (smart) | Search current selections (smart). | Shift+8 (dance.mode == 'normal' ) |
dance.search.selection |
Search current selections | Search current selections. | Shift+Alt+8 (dance.mode == 'normal' ) |
dance.search.next |
Select next match | Select next match after the main selection. | N (dance.mode == 'normal' ) |
dance.search.next.add |
Add next match | Add a new selection with the next match after the main selection. | Shift+N (dance.mode == 'normal' ) |
dance.search.previous |
Select previous match | Select previous match before the main selection. | Alt+N (dance.mode == 'normal' ) |
dance.search.previous.add |
Add previous match | Add a new selection with the previous match before the main selection. | Shift+Alt+N (dance.mode == 'normal' ) |
Select whole object | Select whole object. | Alt+A (dance.mode == 'normal' ), Alt+A (dance.mode == 'insert' ) |
|
Select inner object | Select inner object. | Alt+I (dance.mode == 'normal' ), Alt+I (dance.mode == 'insert' ) |
|
Select to the whole object start | Select to the whole object start. | [ (dance.mode == 'normal' ) |
|
Select to the whole object end | Select to the whole object end. | ] (dance.mode == 'normal' ) |
|
dance.objects.performSelection |
Perform selections specified in the arguments. | Perform selections specified in the arguments.. | |
dance.goto |
Go to... | Shows prompt to jump somewhere | G (dance.mode == 'normal' ) |
dance.goto.lineStart |
Go to line start | Go to line start. | |
dance.goto.lineStart.nonBlank |
Go to non-blank line start | Go to first non-whitespace character of the line | |
dance.goto.lineEnd |
Go to line end | Go to line end. | |
dance.goto.firstLine |
Go to first line | Go to first line. | |
dance.goto.lastLine |
Go to last line | Go to last line. | |
dance.goto.lastCharacter |
Go to last character of the document | Go to last character of the document. | |
dance.goto.firstVisibleLine |
Go to first visible line | Go to first visible line. | |
dance.goto.middleVisibleLine |
Go to middle visible line | Go to middle visible line. | |
dance.goto.lastVisibleLine |
Go to last visible line | Go to last visible line. | |
dance.goto.selectedFile |
Open file under selection | Open file under selection. | |
dance.goto.lastModification |
Go to last buffer modification position | Go to last buffer modification position. | |
dance.openMenu |
Open quick-jump menu | Open quick-jump menu. | |
dance.registers.insert |
Insert value in register | Insert value in register. | Ctrl+R (dance.mode == 'normal' ), Ctrl+R (dance.mode == 'insert' ) |
dance.registers.select |
Select register for next command | Select register for next command. | Shift+\' (dance.mode == 'normal' ) |
dance.marks.saveSelections |
Save selections | Save selections. | Shift+Z (dance.mode == 'normal' ) |
dance.marks.restoreSelections |
Restore selections | Restore selections. | Z (dance.mode == 'normal' ) |
dance.marks.combineSelections.fromCurrent |
Combine current selections with ones from register | Combine current selections with ones from register. | Shift+Alt+Z (dance.mode == 'normal' ) |
dance.marks.combineSelections.fromRegister |
Combine register selections with current ones | Combine register selections with current ones. | Alt+Z (dance.mode == 'normal' ) |
dance.cancel |
Cancel operation | Cancels waiting for input from the user | Escape (dance.mode == 'awaiting' ) |
Open Command Palette | Open the built-in Command Palette in VSCode | Shift+; (dance.mode == 'normal' ) |
|
dance.left.extend |
Move left (extend) | Move left (extend). | Shift+Left (dance.mode == 'normal' ), Shift+H (dance.mode == 'normal' ) |
dance.right.extend |
Move right (extend) | Move right (extend). | Shift+Right (dance.mode == 'normal' ), Shift+L (dance.mode == 'normal' ) |
dance.up.extend |
Move up (extend) | Move up (extend). | Shift+Up (dance.mode == 'normal' ), Shift+K (dance.mode == 'normal' ) |
dance.down.extend |
Move down (extend) | Move down (extend). | Shift+Down (dance.mode == 'normal' ), Shift+J (dance.mode == 'normal' ) |
dance.select.to.included.extend |
Extend to | Extend to the next character pressed, including it. | Shift+F (dance.mode == 'normal' ) |
dance.select.to.excluded.extend |
Extend until | Extend with until the next character pressed, excluding it. | Shift+T (dance.mode == 'normal' ) |
dance.select.line.extend |
Extend with line | Extend with line on which the end of each selection lies (or next line when end lies on an end-of-line). | Shift+X (dance.mode == 'normal' ) |
dance.select.toLineBegin.extend |
Extend to line beginning | Extend to line beginning. | Shift+Alt+H (dance.mode == 'normal' ), Shift+Home (dance.mode == 'normal' ) |
dance.select.toLineEnd.extend |
Extend to line end | Extend to line end. | Shift+Alt+L (dance.mode == 'normal' ), Shift+End (dance.mode == 'normal' ) |
dance.select.enclosing.extend |
Extend with enclosing characters | Extend with enclosing characters. | Shift+M (dance.mode == 'normal' ) |
dance.select.word.extend |
Extend to next word start | Extend with the word and following whitespaces on the right of the end of each selection. | Shift+W (dance.mode == 'normal' ) |
dance.select.word.previous.extend |
Extend to previous word start | Extend with preceding whitespaces and the word on the left of the end of each selection. | Shift+B (dance.mode == 'normal' ) |
dance.select.word.end.extend |
Extend to next word end | Extend with preceding whitespaces and the word on the right of the end of each selection. | Shift+E (dance.mode == 'normal' ) |
dance.select.word.alt.extend |
Extend to next non-whitespace word start | Extend with the non-whitespace word and following whitespaces on the right of the end of each selection. | Shift+Alt+W (dance.mode == 'normal' ) |
dance.select.word.alt.previous.extend |
Extend to previous non-whitespace word start | Extend with preceding whitespaces and the non-whitespace word on the left of the end of each selection. | Shift+Alt+B (dance.mode == 'normal' ) |
dance.select.word.alt.end.extend |
Extend to next non-whitespace word end | Extend with preceding whitespaces and the non-whitespace word on the right of the end of each selection. | Shift+Alt+E (dance.mode == 'normal' ) |
dance.search.extend |
Search (extend) | Search for the given input string (extend). | Shift+/ (dance.mode == 'normal' ) |
dance.search.backwards.extend |
Search backwards (extend) | Search for the given input string before the current selections (extend). | Shift+Alt+/ (dance.mode == 'normal' ) |
Extend to the whole object start | Extend to the whole object start. | Shift+[ (dance.mode == 'normal' ) |
|
Extend to the whole object end | Extend to the whole object end. | Shift+] (dance.mode == 'normal' ) |
|
dance.goto.extend |
Go to... (extend) | Shows prompt to jump somewhere | Shift+G (dance.mode == 'normal' ) |
dance.goto.lineStart.extend |
Go to line start (extend) | Go to line start (extend). | |
dance.goto.lineStart.nonBlank.extend |
Go to non-blank line start (extend) | Go to first non-whitespace character of the line | |
dance.goto.lineEnd.extend |
Go to line end (extend) | Go to line end (extend). | |
dance.goto.firstLine.extend |
Go to first line (extend) | Go to first line (extend). | |
dance.goto.lastLine.extend |
Go to last line (extend) | Go to last line (extend). | |
dance.goto.lastCharacter.extend |
Go to last character of the document (extend) | Go to last character of the document (extend). | |
dance.goto.firstVisibleLine.extend |
Go to first visible line (extend) | Go to first visible line (extend). | |
dance.goto.middleVisibleLine.extend |
Go to middle visible line (extend) | Go to middle visible line (extend). | |
dance.goto.lastVisibleLine.extend |
Go to last visible line (extend) | Go to last visible line (extend). | |
dance.goto.lastModification.extend |
Go to last buffer modification position (extend) | Go to last buffer modification position (extend). | |
dance.select.to.included.backwards |
Select to (backwards) | Select to the next character pressed, including it. (backwards) | Alt+F (dance.mode == 'normal' ) |
dance.select.to.excluded.backwards |
Select until (backwards) | Select until the next character pressed, excluding it. (backwards) | Alt+T (dance.mode == 'normal' ) |
dance.select.enclosing.backwards |
Select enclosing characters (backwards) | Select enclosing characters. (backwards) | Alt+M (dance.mode == 'normal' ) |
dance.select.to.included.extend.backwards |
Extend to (backwards) | Extend to the next character pressed, including it. (backwards) | Alt+Shift+F (dance.mode == 'normal' ) |
dance.select.to.excluded.extend.backwards |
Extend until (backwards) | Extend with until the next character pressed, excluding it. (backwards) | Alt+Shift+T (dance.mode == 'normal' ) |
dance.select.enclosing.extend.backwards |
Extend with enclosing characters (backwards) | Extend with enclosing characters. (backwards) | Alt+Shift+M (dance.mode == 'normal' ) |
Select to the inner object start | Select to the inner object start. | Alt+[ (dance.mode == 'normal' ) |
|
Select to the inner object end | Select to the inner object end. | Alt+] (dance.mode == 'normal' ) |
|
Extend to the inner object start | Extend to the inner object start. | Alt+Shift+[ (dance.mode == 'normal' ) |
|
Extend to the inner object end | Extend to the inner object end. | Alt+Shift+] (dance.mode == 'normal' ) |
|
dance.count.0 |
Count 0 | Adds 0 to the current counter for the next operation. | 0 (dance.mode == 'normal' ) |
dance.count.1 |
Count 1 | Adds 1 to the current counter for the next operation. | 1 (dance.mode == 'normal' ) |
dance.count.2 |
Count 2 | Adds 2 to the current counter for the next operation. | 2 (dance.mode == 'normal' ) |
dance.count.3 |
Count 3 | Adds 3 to the current counter for the next operation. | 3 (dance.mode == 'normal' ) |
dance.count.4 |
Count 4 | Adds 4 to the current counter for the next operation. | 4 (dance.mode == 'normal' ) |
dance.count.5 |
Count 5 | Adds 5 to the current counter for the next operation. | 5 (dance.mode == 'normal' ) |
dance.count.6 |
Count 6 | Adds 6 to the current counter for the next operation. | 6 (dance.mode == 'normal' ) |
dance.count.7 |
Count 7 | Adds 7 to the current counter for the next operation. | 7 (dance.mode == 'normal' ) |
dance.count.8 |
Count 8 | Adds 8 to the current counter for the next operation. | 8 (dance.mode == 'normal' ) |
dance.count.9 |
Count 9 | Adds 9 to the current counter for the next operation. | 9 (dance.mode == 'normal' ) |