Created
September 22, 2020 13:21
-
-
Save haberdashPI/89d4bd274dedd49d87add35ac75c0ad3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
{ | |
"keybindings": { | |
/////////////////////////////////// | |
// Basic selection operators, reset or extend selection | |
// 'entire' movements (select entire object, not just from start point) | |
"u": { | |
// word-like movement | |
"w": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subword", "boundary": "both", "selectWhole": true } | |
}, | |
"W": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "word", "boundary": "both", "selectWhole": true } | |
}, | |
"b": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subword", "boundary": "both", "value": -1, "selectWhole": true } | |
}, | |
"B": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "word", "boundary": "both", "value": -1, "selectWhole": true } | |
}, | |
// motions | |
"g": { | |
"w": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "both", "selectWhole": true } | |
}, | |
"b": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "both", "selectWhole": true, "value": -1 } | |
}, | |
"p": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "section", "boundary": "start", "selectWhole": true } | |
}, | |
"P": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "section", "boundary": "start", "selectWhole": true, "value": -1 } | |
}, | |
"s": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subsection", "boundary": "start", "selectWhole": true } | |
}, | |
"S": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subsection", "boundary": "start", "selectWhole": true, "value": -1 } | |
}, | |
}, | |
// paragraph-like | |
"p": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "paragraph", "boundary": "both", "selectWhole": true } | |
}, | |
"P": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "paragraph", "value": -1, "boundary": "both", "selectWhole": true } | |
}, | |
// function arguments | |
"s": { | |
// motions | |
"w": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": 1, "boundary": "both", "selectWhole": true } | |
}, | |
"b": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": -1, "boundary": "both", "selectWhole": true } | |
}, | |
"W": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": 1, "boundary": "start", "selectWhole": true } | |
}, | |
"B": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": -1, "boundary": "end", "selectWhole": true } | |
}, | |
}, | |
}, | |
// basic movement | |
"h": { "command": "cursorMove", "args": "{ to: 'left', select: __selecting }" }, | |
"j": { "command": "cursorMove", "args": "{ to: 'down', by: 'wrappedLine', select: __selecting }" }, | |
"k": { "command": "cursorMove", "args": "{ to: 'up', by: 'wrappedLine', select: __selecting }" }, | |
"l": { "command": "cursorMove", "args": "{ to: 'right', select: __selecting }" }, | |
// word-like movement | |
"w": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'subword', boundary: 'start', select: true }" | |
}, | |
"W": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'word', boundary: 'start', select: true }" | |
}, | |
"e": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'word', boundary: 'end', select: true }" | |
}, | |
"b": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'subword', boundary: 'start', value: -1, select: true }" | |
}, | |
"B": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'word', boundary: 'start', value: -1, select: true }" | |
}, | |
"E": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'word', boundary: 'end', value: -1, select: true }" | |
}, | |
// numbers | |
"@": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ value: -1, unit: 'integer', boundary: 'both', selectWhole: true }" | |
}, | |
"#": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ unit: 'integer', boundary: 'both', selectWhole: true }" | |
}, | |
/////////////////////// | |
// line related operators | |
"H": "cursorHomeSelect", | |
"L": { | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineEnd', select: true }" | |
}, | |
"G": [ | |
"expandLineSelection", | |
], | |
"K": { | |
"condition": "editor.selection.isSingleLine", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: false }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: true, value: 2 }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: true }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
}, | |
// TODO: handle last line of document specially | |
"J": { | |
"condition": "editor.selection.isSingleLine", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: false }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true, value: 2 }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
}, | |
// paragraph related | |
"p": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "paragraph", "boundary": "start", "select": true } | |
} | |
], | |
"P": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "paragraph", "value": -1, "boundary": "start", "select": true } | |
} | |
], | |
// // page movement | |
// "J": [ | |
// { | |
// "command": "editorScroll", | |
// "args": "{ to: 'down', by: 'halfPage' }" | |
// }, | |
// { | |
// "command": "cursorMove", | |
// "args": "{ to: 'viewPortBottom', select: __selecting }" | |
// }, | |
// ], | |
// "K": [ | |
// { | |
// "command": "editorScroll", | |
// "args": "{ to: 'up', by: 'halfPage' }" | |
// }, | |
// { | |
// "command": "cursorMove", | |
// "args": "{ to: 'viewPortTop', select: __selecting }" | |
// }, | |
// ], | |
// buffer related | |
"$": [ "editor.action.selectAll" ], | |
// search related | |
"/": [ "actions.find" | |
], | |
"*": [ | |
"actions.find", | |
"editor.action.nextMatchFindAction", | |
"closeFindWidget" | |
], | |
"&": [ | |
"actions.find", | |
"editor.action.previousMatchFindAction", | |
"closeFindWidget" | |
], | |
"n": [ | |
"editor.action.nextMatchFindAction" | |
], | |
"N": [ | |
"editor.action.previousMatchFindAction" | |
], | |
"?": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"backwards": false, | |
"selectTillMatch": true, | |
"wrapAround": true | |
} | |
}, | |
], | |
"f": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"acceptAfter": 1, | |
"backwards": false, | |
"selectTillMatch": true, | |
"wrapAround": true | |
} | |
}, | |
], | |
"F": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"acceptAfter": 1, | |
"backwards": true, | |
"selectTillMatch": true, | |
"wrapAround": true | |
} | |
}, | |
], | |
"t": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"acceptAfter": 1, | |
"backwards": false, | |
"selectTillMatch": true, | |
"typeAfterAccept": "h", | |
"typeBeforeNextMatch": "l", | |
"typeAfterNextMatch": "h", | |
"typeBeforePreviousMatch": "h", | |
"typeAfterPreviousMatch": "l", | |
"wrapAround": true | |
} | |
}, | |
], | |
"T": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"acceptAfter": 1, | |
"backwards": true, | |
"selectTillMatch": true, | |
"typeAfterAccept": "l", | |
"typeBeforeNextMatch": "h", | |
"typeAfterNextMatch": "l", | |
"typeBeforePreviousMatch": "l", | |
"typeAfterPreviousMatch": "h", | |
"wrapAround": true | |
} | |
}, | |
], | |
"m": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"caseSensitive": true, | |
"acceptAfter": 2, | |
"backwards": false, | |
"selectTillMatch": true, | |
"typeAfterAccept": "hh", | |
"typeBeforeNextMatch": "ll", | |
"typeAfterNextMatch": "hh", | |
"wrapAround": true | |
} | |
}, | |
], | |
"M": [ | |
{ | |
"command": "modaledit.search", | |
"args": { | |
"casSensitive": true, | |
"acceptAfter": 2, | |
"backwards": true, | |
"selectTillMatch": true, | |
"typeBeforePreviousMatch": "ll", | |
"typeAfterPreviousMatch": "hh", | |
"wrapAround": true | |
} | |
}, | |
], | |
";": [ | |
"modaledit.nextMatch", | |
], | |
",": [ | |
"modaledit.previousMatch", | |
], | |
//////////////////////// | |
// more complex syntactic selections | |
// "I": "select-indentation.expand-selection", | |
"%": "editor.action.jumpToBracket", | |
"'": "extension.selectSingleQuote", | |
"\"": "extension.selectDoubleQuote", | |
// the below is a bit hacky; I want to add these commandsto my extension | |
"[": [ | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": [ | |
"selection-utilities.active-at-start", | |
{ "command": "cursorMove", "args": { "to": "left", "select": true, "value": 2 } }, | |
"selection-utilities.active-at-end", | |
{ "command": "cursorMove", "args": { "to": "right", "select": true, "value": 2 } } | |
], | |
"false": [] | |
}, | |
{ | |
"command": "editor.action.selectToBracket", | |
"args": {"selectBrackets": false} | |
} | |
], | |
"{": [ | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": [ | |
"selection-utilities.active-at-start", | |
{ "command": "cursorMove", "args": { "to": "left", "select": true } }, | |
"selection-utilities.active-at-end", | |
{ "command": "cursorMove", "args": { "to": "right", "select": true } } | |
], | |
}, | |
{ | |
"command": "editor.action.selectToBracket", | |
"args": {"selectBrackets": true} | |
} | |
], | |
"`": "extension.selectBackTick", | |
"]": "vscode-select-by-indent.select-inner", | |
"}": "vscode-select-by-indent.select-outer", | |
//////////////////////// | |
// selection modifiers | |
"R": [ "selection-utilities.trim-selection-whitespace" ], | |
"U": [ | |
{ | |
"command": "vscode-custom-word-motions.narrowto", | |
"args": { | |
"unit": "subident", | |
"boundary": "both", | |
} | |
} | |
], | |
"x": [ "selection-utilities.add-next" ], | |
"X": [ "selection-utilities.skip-next" ], | |
"r": [ "modaledit.cancelMultipleSelections" ], | |
" ": [ "modaledit.enableSelection", ], | |
//////////////////////// | |
// actions | |
// insert/append text | |
"i": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "modaledit.enterInsert", | |
"false": [ | |
{ | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"modaledit.enterInsert" | |
] | |
}, | |
], | |
"a": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false }" | |
}, | |
"modaledit.enterInsert" | |
], | |
"false": [ | |
"selection-utilities.exchange-anchor-active", | |
{ | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"modaledit.enterInsert" | |
] | |
}, | |
], | |
"I": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineFirstNonWhitespaceCharacter', select: false }" | |
}, | |
"modaledit.enterInsert", | |
], | |
"A": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineEnd', select: false }" | |
}, | |
"modaledit.enterInsert", | |
], | |
// change | |
"c": [ | |
{ | |
"condition": "!editor.selection.isSingleLine && editor.selection.end.character == 0 && editor.selection.start.character == 0", | |
"false": [ | |
"deleteRight", | |
"modaledit.enterInsert" | |
], | |
"true": [ | |
"deleteRight", | |
"editor.action.insertLineBefore", | |
"modaledit.enterInsert" | |
] | |
}, | |
], | |
"C": [ | |
"modaledit.cancelMultipleSelections", | |
"deleteAllRight", | |
"modaledit.enterInsert", | |
], | |
// update numerical selection | |
"+": [ | |
{ | |
"condition": "editor.selections.length === 1", | |
"true": "editor.emmet.action.incrementNumberByOne", | |
"false": "extension.incrementSelection", | |
}, | |
], | |
"=": [ | |
{ | |
"condition": "editor.selections.length === 1", | |
"true": "editor.emmet.action.decrementNumberByOne", | |
"false": "extension.decrementSelection", | |
}, | |
], | |
// check | |
"^": "markdown-checkbox.markCheckbox", | |
// cut to clipboard | |
"d": [ | |
"editor.action.clipboardCutAction", | |
], | |
"D": [ | |
"modaledit.cancelMultipleSelections", | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineEnd', select: true }" | |
}, | |
"editor.action.clipboardCutAction", | |
], | |
"\\": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": [], | |
"false": ["modaledit.cancelMultipleSelections"], | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: true }" | |
}, | |
"editor.action.clipboardCutAction", | |
], | |
// copy to clipboard | |
"y": [ | |
"editor.action.clipboardCopyAction", | |
{ | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
], | |
"Y": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineEnd', select: true }" | |
}, | |
"editor.action.clipboardCopyAction", | |
"modaledit.cancelMultipleSelections" | |
], | |
// paste after | |
"v": [ | |
{ "condition": "!editor.selection.isEmpty", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": "cursorRight" | |
}, | |
"editor.action.clipboardPasteAction", | |
], | |
// paste before | |
"V": [ | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
}, | |
"false": [] | |
}, | |
"editor.action.clipboardPasteAction", | |
], | |
// begin line below | |
"o": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "editor.action.insertLineAfter", | |
"false": { | |
"condition": "!editor.selection.isReversed", | |
"true": "editor.action.insertLineBefore", | |
"false": [ | |
"selection-utilities.exchange-anchor-active", | |
"editor.action.insertLineBefore", | |
] | |
} | |
}, | |
"modaledit.enterInsert", | |
], | |
"O": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "editor.action.insertLineBefore", | |
"false": { | |
"condition": "editor.selection.isReversed", | |
"true": "editor.action.insertLineBefore", | |
"false": [ | |
"selection-utilities.exchange-anchor-active", | |
"editor.action.insertLineBefore", | |
] | |
} | |
}, | |
"modaledit.enterInsert", | |
], | |
// line indent | |
">": [ | |
"editor.action.indentLines", | |
], | |
"<": [ | |
"editor.action.outdentLines", | |
], | |
":": "workbench.action.quickOpen", | |
/////////////////////// | |
// history | |
"z": [ | |
"undo", | |
{ | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
], | |
"Z": [ | |
"redo", | |
{ | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
], | |
"-": "cursorUndo", | |
"_": "cursorRedo", | |
"q": [ | |
], | |
"Q": [ | |
{ | |
"command": "modaledit.replayRecordedKeys", | |
"args": "{ register: 'default' }" | |
}, | |
], | |
// ".": { | |
// "command": "modaledit.replayRecordedKeys", | |
// "args": "{ register: 'repeat' }" | |
// }, | |
".": [ | |
"modaledit.repeatLastSelection", | |
"modaledit.repeatLastChange", | |
], | |
// first leader | |
"g": { | |
".": "modaledit.repeatLastChange", | |
// motions | |
"w": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "start", "select": true } | |
}, | |
"b": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "start", "select": true, "value": -1 } | |
}, | |
"W": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "end", "select": true, "value": 1 } | |
}, | |
"B": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "WORD", "boundary": "end", "select": true, "value": -1 } | |
}, | |
"x": [ "selection-utilities.add-prev" ], | |
"X": [ "selection-utilities.skip-prev" ], | |
// actions | |
"r": [ | |
"git.stageSelectedRanges", | |
// "modaledit.touchText" | |
], | |
"R": [ | |
"git.unstageSelectedRanges", | |
// "modaledit.touchText" | |
], | |
"V": [ | |
"editor.action.clipboardPasteAction", | |
], | |
"v": [ | |
"clipboard-manager.editor.pickAndPaste", | |
], | |
"a": [ "selection-utilities.trim-whitespace" ], | |
"o": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "editor.action.insertLineAfter", | |
"false": { | |
"condition": "!editor.selection.isReversed", | |
"true": "editor.action.insertLineBefore", | |
"false": [ | |
"selection-utilities.exchange-anchor-active", | |
"editor.action.insertLineBefore", | |
] | |
} | |
}, | |
], | |
"O": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "editor.action.insertLineBefore", | |
"false": { | |
"condition": "editor.selection.isReversed", | |
"true": "editor.action.insertLineBefore", | |
"false": [ | |
"selection-utilities.exchange-anchor-active", | |
"editor.action.insertLineBefore", | |
] | |
} | |
}, | |
], | |
";": [ | |
"editor.action.commentLine", | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": { | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"false": [] | |
}, | |
], | |
":": [ | |
"editor.action.blockComment", | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": { | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"false": [] | |
}, | |
], | |
"/": [ | |
"comment-divider.makeSubHeader", | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": { | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"false": [] | |
}, | |
], | |
"l": [ | |
"terminal-polyglot.send-text", | |
// "modaledit.touchText", | |
"modaledit.cancelMultipleSelections", | |
], | |
"L": [ | |
"terminal-polyglot.send-block-text", | |
// "modaledit.touchText", | |
"modaledit.cancelMultipleSelections", | |
], | |
"q": [ | |
"rewrap.rewrapComment", | |
], | |
"y": [ | |
"editor.action.joinLines", | |
], | |
// view changes | |
"c": { | |
"command": "revealLine", | |
"args": "{ lineNumber: __line, at: 'center' }" | |
}, | |
"t": { | |
"command": "revealLine", | |
"args": "{ lineNumber: __line, at: 'top' }" | |
}, | |
"T": { | |
"command": "revealLine", | |
"args": "{ lineNumber: __line, at: 'bottom' }" | |
}, | |
"h": [ | |
"editor.action.showHover", | |
], | |
// motions | |
"p": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "section", "boundary": "start", "select": true } | |
}, | |
], | |
"P": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "section", "boundary": "start", "select": true, "value": -1 } | |
}, | |
], | |
"s": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subsection", "boundary": "start", "select": true } | |
}, | |
], | |
"S": [ | |
{ | |
"command": "vscode-custom-word-motions.moveby", | |
"args": { "unit": "subsection", "boundary": "start", "select": true, "value": -1 } | |
}, | |
], | |
"j": "cursorBottomSelect", | |
"k": "cursorTopSelect", | |
">": [ | |
"extension.selectAngleBrackets", | |
], | |
"<": [ | |
"extension.selectInTag", | |
], | |
"]": [ | |
"vscode-select-by-indent.select-outer-top-only", | |
], | |
"{": [ "bracketeer.removeBrackets", ], | |
"[": [ "bracketeer.swapBrackets", ], | |
"'": [ "bracketeer.swapQuotes", ], | |
"\"": [ "bracketeer.removeQuotes", ], | |
"e": [ "editor.action.marker.next", ], | |
"E": [ "editor.action.marker.prev", ], | |
"d": [ "editor.action.dirtydiff.next", ], | |
"D": [ "editor.action.dirtydiff.previous", ], | |
"f": [ "workbench.action.editor.nextChange", ], | |
"F": [ "workbench.action.editor.previousChange", ], | |
"g": [ "editor.action.revealDefinition", ], | |
"G": [ "editor.action.revealDefinitionAside", ], | |
"n": [ | |
{ | |
"command": "modaledit.defineBookmark", | |
"args": "{ bookmark: 'default' }" | |
}, | |
], | |
"m": [ | |
{ | |
"command": "modaledit.goToBookmark", | |
"args": "{ bookmark: 'default' }" | |
}, | |
] | |
}, | |
// second leader | |
"s": { | |
// actions | |
"(": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "(" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"<": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "<" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"`": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "`" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"\"": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "\"" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"'": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "'" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"*": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "*" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"2": { | |
"*": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "**" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
}, | |
"{": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "{" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"[": [ | |
"modaledit.enterInsert", | |
{ | |
"command": "type", | |
"args": { "text": "[" }, | |
}, | |
"modaledit.enterNormal" | |
], | |
"=": "selection-utilities.align-selections-left", | |
"+": "selection-utilities.align-selections-right", | |
// histoory | |
".": "modaledit.repeatLastSelection", | |
// selection modifiers | |
"h": "selection-utilities.active-at-start", | |
"l": "selection-utilities.active-at-end", | |
"j": "selection-utilities.move-primary-right", | |
"k": "selection-utilities.move-primary-left", | |
"c": "selection-utilities.append-to-memory", | |
"v": "selection-utilities.restore-and-clear", | |
"x": "selection-utilities.swap-with-memory", | |
"n": "selection-utilities.delete-last-saved", | |
"d": "selection-utilities.delete-primary", | |
"s": "selection-utilities.split-by-newline", | |
"S": "selection-utilities.split-by", | |
"g": "selection-utilities.create-by", | |
"G": "selection-utilities.create-by-regex", | |
"r": "selection-utilities.split-by-regex", | |
"f": "selection-utilities.include-by", | |
"F": "selection-utilities.exclude-by", | |
"t": "selection-utilities.include-by-regex", | |
"T": "selection-utilities.exclude-by-regex", | |
"-": { | |
"command": "selection-utilities.restore-and-clear", | |
"args": {"register": "cancel"} | |
}, | |
// motions | |
"w": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": 1, "boundary": "start", "select": true } | |
}, | |
"b": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": -1, "boundary": "start", "select": true } | |
}, | |
"W": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": 1, "boundary": "start", "select": true } | |
}, | |
"B": { | |
"command": "move-cursor-by-argument.move-by-argument", | |
"args": { "value": -1, "boundary": "end", "select": true } | |
}, | |
}, | |
"0": { | |
// cut to clipboard | |
"d": [ | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": [ | |
"deleteRight", | |
], | |
"false": [ | |
"editor.action.deleteLines", | |
] | |
} | |
], | |
"D": [ | |
{ | |
"condition": "!editor.selection.isEmpty", | |
"true": { | |
"condition": "!editor.selection.isReversed", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: 0 }" | |
}, | |
"false": { | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: 0 }" | |
} | |
}, | |
"false": [] | |
}, | |
"deleteAllRight", | |
], | |
"]": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": "deleteRight", | |
"false": "editor.action.clipboardCutAction" | |
}, | |
], | |
}, | |
"1-9": { | |
"id": 1, | |
"help": "Enter count followed by movement", | |
"0-9": 1, | |
"p,P,=,+": { | |
"command": "modaledit.typeNormalKeys", | |
"args": "{ keys: __keys[__keys.length - 1] }", | |
"repeat": "Number(__keys.slice(0, -1).join(''))" | |
}, | |
// word-like | |
"w": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'subword', 'boundary': 'start', 'select': true, 'value': Number(__keys.slice(0, -1).join('')) }" | |
}, | |
"W": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'word', 'boundary': 'start', 'select': true, 'value': Number(__keys.slice(0, -1).join('')) }" | |
}, | |
"e": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'word', 'boundary': 'end', 'select': true, 'value': Number(__keys.slice(0, -1).join('')) }" | |
}, | |
"b": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'subword', 'boundary': 'start', 'value': -Number(__keys.slice(0, -1).join('')), select: true }" | |
}, | |
"B": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'word', 'boundary': 'start', 'value': -Number(__keys.slice(0, -1).join('')), select: true }" | |
}, | |
"E": { | |
"command": "vscode-custom-word-motions.moveby", | |
"args": "{ 'unit': 'word', 'boundary': 'end', 'value': -Number(__keys.slice(0, -1).join('')), select: true }" | |
}, | |
// special jump commands | |
"g": { | |
"e,E,f,F": { | |
"command": "modaledit.typeNormalKeys", | |
"args": "{ keys: __keys[__keys.length - 2] }", | |
"repeat": "Number(__keys.slice(0, -2).join(''))" | |
}, | |
"n": [ | |
{ | |
"command": "modaledit.defineBookmark", | |
"args": "{ bookmark: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
], | |
"m": [ | |
{ | |
"command": "modaledit.goToBookmark", | |
"args": "{ bookmark: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
], | |
// jump down given number of full lines (not wrapped) | |
"j": [ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'line', select: false, value: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'line', select: true, value: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
] | |
}, | |
], | |
"k":[ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'line', select: false, value: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'line', select: true, value: Number(__keys.slice(0, -2).join('')) }" | |
}, | |
] | |
}, | |
], | |
}, | |
"q": [ | |
], | |
"Q": [ | |
{ | |
"command": "modaledit.replayRecordedKeys", | |
"args": "{ register: __keys.slice(0, -1).join('') }" | |
}, | |
], | |
"h": [ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: false, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'left', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
] | |
}, | |
], | |
"j": [ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: false, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
] | |
}, | |
], | |
"k":[ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: false, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
] | |
}, | |
], | |
"l":[ | |
{ | |
"condition": "!__selecting", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: false, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
] | |
}, | |
], | |
"K": [ | |
{ | |
"condition": "editor.selection.isSingleLine", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: false }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join(''))+1 }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'up', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
}, | |
], | |
// TODO: handle last line of document specially | |
"J": [ | |
{ | |
"condition": "editor.selection.isSingleLine", | |
"true": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: false }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join(''))+1 }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
"false": [ | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', by: 'wrappedLine', select: true, value: Number(__keys.slice(0, -1).join('')) }" | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'wrappedLineStart', select: true }" | |
}, | |
], | |
}, | |
], | |
// multi-line actions | |
"d": [ | |
"modaledit.cancelMultipleSelections", | |
{ | |
"command": "cursorMove", | |
"args": {"to": "wrappedLineStart", "select": false} | |
}, | |
{ | |
"command": "cursorMove", | |
"args": "{ to: 'down', select: true, value: Number(__keys.slice(0, -1).join(''))+1 }" | |
}, | |
"editor.action.clipboardCutAction", | |
] | |
}, | |
"~": [ | |
{ | |
"condition": "editor.selection.isEmpty", | |
"true": { | |
"command": "cursorMove", | |
"args": "{ to: 'right', select: true }" | |
}, | |
"false": [], | |
}, | |
{ | |
"condition": "__selection == __selection.toUpperCase()", | |
"true": "editor.action.transformToLowercase", | |
"false": "editor.action.transformToUppercase" | |
}, | |
"modaledit.cancelMultipleSelections", | |
], | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment