Extensions
code --install-extension adpyke.vscode-sql-formatter
code --install-extension clinyong.vscode-css-modules
code --install-extension drcika.apc-extension
code --install-extension esbenp.prettier-vscode
code --install-extension graphql.vscode-graphql-syntax
code --install-extension ionic.ionic
code --install-extension jrebocho.vscode-random
code --install-extension lokalise.i18n-ally
code --install-extension markthomasmiller.sorcerer
code --install-extension moshfeu.compare-folders
code --install-extension ms-python.debugpy
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension patbenatar.advanced-new-file
code --install-extension pkief.material-icon-theme
code --install-extension prisma.prisma
code --install-extension ritwickdey.liveserver
code --install-extension ryuta46.multi-command
code --install-extension steoates.autoimport
code --install-extension styled-components.vscode-styled-components
code --install-extension wallabyjs.console-ninja
code --install-extension zxh404.vscode-proto3
Settings
/*
* Ctrl+Shift+P > settings
* Preferences: Open Settings (JSON)
*/
{
// Appearance
"workbench.colorTheme": "Sorcerer",
"workbench.iconTheme": "material-icon-theme",
// Editor
"editor.fontFamily": "Rec Mono Casual, Codelia Ligatures", // https://drive.google.com/file/d/1wgKy3QuYQOGDZZj5S12Ryt84yeJee2JC https://drive.google.com/file/d/1iwEhhk3l8VEa3H3zLtYaMF526NSTn_wR
"editor.fontSize": 14,
"editor.lineHeight": 19,
"editor.fontWeight": "400",
"editor.fontLigatures": true,
"editor.cursorBlinking": "smooth",
"editor.renderWhitespace": "all",
"editor.rulers": [80, 120],
"editor.mouseWheelZoom": true,
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.minimap.enabled": false,
// General
"explorer.compactFolders": false,
"explorer.confirmDragAndDrop": false,
"explorer.confirmDelete": true,
"workbench.startupEditor": "none",
"workbench.editor.enablePreview": false,
"security.workspace.trust.untrustedFiles": "open",
"windsurf.autocompleteSpeed": "fast",
// Languages Behavior
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.updateImportsOnFileMove.enabled": "always",
"typescript.suggest.autoImports": true,
"javascript.preferences.importModuleSpecifier": "non-relative",
"javascript.updateImportsOnFileMove.enabled": "always",
"javascript.suggest.autoImports": true,
// Formatting
"prettier.printWidth": 80,
"scss.lint.unknownAtRules": "ignore",
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
// UI
"workbench.activityBar.location": "hidden",
"explorer.fileNesting.patterns": {
"*.ts": "${capture}.js",
"*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts",
"*.jsx": "${capture}.js",
"*.tsx": "${capture}.ts",
"tsconfig.json": "tsconfig.*.json",
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb",
"*.sqlite": "${capture}.${extname}-*",
"*.db": "${capture}.${extname}-*",
"*.sqlite3": "${capture}.${extname}-*",
"*.db3": "${capture}.${extname}-*",
"*.sdb": "${capture}.${extname}-*",
"*.s3db": "${capture}.${extname}-*"
}
}
Keybinds
/*
* Ctrl+Shift+P > shortcuts
* Preferences: Open Keyboard Shortcuts (JSON)
*/
[
// AI commands
{
"key": "ctrl+shift+alt+enter",
"command": "editor.action.inlineDiffs.acceptAll",
"when": "editorTextFocus && (arbitrary function)"
},
{
"key": "ctrl+enter",
"command": "-editor.action.inlineDiffs.acceptAll",
"when": "editorTextFocus && (arbitrary function)"
},
// Cursor: open current chat
{
"key": "ctrl+l",
"command": "-workbench.action.chat.newChat",
"when": "chatIsEnabled && inChat"
},
{
"key": "ctrl+l",
"command": "-aichat.newchataction"
},
{
"key": "ctrl+l",
"command": "-workbench.action.files.newUntitledFile"
},
{
"key": "ctrl+l",
"command": "composer.openChatAsEditor"
},
// Cursor: open new chat
{
"key": "ctrl+shift+l",
"command": "composer.createNewChat"
},
// Cursor: add code to current chat
{
"key": "ctrl+shift+c",
"command": "aichat.insertselectionintochat",
"when": "editorTextFocus"
},
// Cursor: open current composer
{
"key": "ctrl+n",
"command": "composer.openAsEditor"
},
// Cursor: open new composer
{
"key": "ctrl+shift+n",
"command": "composer.createNew"
},
// Move the cursor and select between CamelCase words
{
"key": "alt+right",
"command": "cursorWordPartRight",
"when": "editorTextFocus"
},
{
"key": "alt+left",
"command": "cursorWordPartLeft",
"when": "editorTextFocus"
},
{
"key": "alt+shift+right",
"command": "cursorWordPartRightSelect",
"when": "editorTextFocus"
},
{
"key": "alt+shift+left",
"command": "cursorWordPartLeftSelect",
"when": "editorTextFocus"
},
// Delete the rest of the word forward or backward
{
"key": "alt+delete",
"command": "deleteWordRight",
"when": "textInputFocus && !editorReadonly"
},
{
"key": "alt+backspace",
"command": "deleteWordLeft",
"when": "textInputFocus && !editorReadonly"
},
// Reverse the order of the lines
{
"key": "ctrl+shift+up",
"command": "editor.action.moveLinesUpAction",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+down",
"command": "editor.action.moveLinesDownAction",
"when": "editorTextFocus"
},
// Search for sentences equal to the current selection
{
"key": "ctrl+shift+d",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
// Duplicate current line with just one shortcut
{
"key": "ctrl+d",
"command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+d",
"command": "-editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"key": "shift+alt+up",
"command": "-editor.action.copyLinesUpAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "shift+alt+down",
"command": "-editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
// Change the programming language of the current file
{
"key": "ctrl+j",
"command": "workbench.action.editor.changeLanguageMode",
"when": "textInputFocus && !editorReadonly"
},
{
"key": "ctrl+j",
"command": "-workbench.action.togglePanel"
},
// Select up and down, vertically
{
"key": "ctrl+alt+down",
"command": "cursorColumnSelectDown",
"when": "textInputFocus"
},
{
"key": "ctrl+alt+up",
"command": "cursorColumnSelectUp",
"when": "textInputFocus"
},
// Create a block comment in the selected part like /* some selected part */
// {
// "key": "ctrl+shift+/",
// "command": "editor.action.blockComment",
// "when": "editorTextFocus && !editorReadonly"
// },
// {
// "key": "ctrl+shift+;",
// "command": "editor.action.blockComment",
// "when": "editorTextFocus && !editorReadonly"
// },
{ // uncomment on linux
"key": "ctrl+shift+;",
"command": "editor.action.blockComment",
"when": "editorTextFocus && !editorReadonly"
},
{ // uncomment on linux
"key": "ctrl+;",
"command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
{ // uncomment on linux
"key": "ctrl+/",
"command": "-editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
// Comment on selected lines
{
"key": "ctrl+/",
"command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+;",
"command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
// Delete the line without copying to the clipboard
{
"key": "ctrl+shift+x",
"command": "editor.action.deleteLines",
"when": "textInputFocus && !editorReadonly"
},
{
"key": "ctrl+shift+k",
"command": "-editor.action.deleteLines",
"when": "textInputFocus && !editorReadonly"
},
// Move the current tab to the right or to the left
{
"key": "ctrl+alt+right",
"command": "workbench.action.moveEditorRightInGroup",
"when": "editorTextFocus"
},
{
"key": "alt+right",
"command": "-workbench.action.terminal.focusNextPane",
"when": "terminalFocus"
},
{
"key": "ctrl+alt+left",
"command": "workbench.action.moveEditorLeftInGroup",
"when": "editorTextFocus"
},
{
"key": "alt+left",
"command": "-workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus"
},
// Move the tab to a different screen split, whether left, right, up, or down
{
"key": "ctrl+shift+alt+up",
"command": "workbench.action.moveEditorToAboveGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+down",
"command": "workbench.action.moveEditorToBelowGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+left",
"command": "workbench.action.moveEditorToLeftGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+right",
"command": "workbench.action.moveEditorToRightGroup",
"when": "editorTextFocus"
},
// Create a new empty tab
{
"key": "ctrl+t",
"command": "workbench.action.files.newUntitledFile"
},
{
"key": "ctrl+t",
"command": "-workbench.action.showAllSymbols"
},
// Go to the previous or next tab (similar to browsers)
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditor"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditor"
},
// Switch between tabs (similar to using Alt+Tab in Windows)
{
"key": "alt+q",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditor"
},
{
"key": "alt+q",
"command": "workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "alt+shift+q",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditor"
},
{
"key": "alt+shift+q",
"command": "workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
// Toggle to hide and show the left and bottom sidebar
{
"key": "shift+alt+b",
"command": "workbench.action.toggleStatusbarVisibility"
},
{
"key": "ctrl+shift+b",
"command": "workbench.action.toggleActivityBarVisibility"
},
{
"key": "ctrl+shift+b",
"command": "-workbench.action.tasks.build"
},
{
"key": "ctrl+alt+b",
"command": "workbench.action.tasks.build"
},
// Open, hide, minimize and maximize the terminal
{
"key": "ctrl+shift+enter",
"command": "workbench.action.toggleMaximizedPanel"
},
{
"key": "shift+enter",
"command": "workbench.action.terminal.toggleTerminal"
},
{
"key": "shift+enter",
"command": "workbench.action.focusActiveEditorGroup",
"when": "terminalFocus"
},
{
"key": "ctrl+enter",
"command": "workbench.action.togglePanel"
},
{
"key": "ctrl+enter",
"command": "-github.copilot.generate",
"when": "editorTextFocus"
},
// Close terminal if selected
{
"key": "ctrl+shift+d",
"command": "workbench.action.terminal.split",
"when": "terminalFocus"
},
{
"key": "ctrl+shift+d",
"command": "-workbench.view.debug"
},
// Move the terminal left, down and right
{
"key": "ctrl+alt+d",
"command": "workbench.action.positionPanelRight"
},
{
"key": "ctrl+alt+s",
"command": "workbench.action.positionPanelBottom"
},
{
"key": "ctrl+alt+a",
"command": "workbench.action.positionPanelLeft"
},
// Open a recent Workspace
{
"key": "ctrl+shift+o",
"command": "workbench.action.openRecent"
},
{
"key": "ctrl+shift+o",
"command": "-workbench.action.gotoSymbol"
},
{
"key": "ctrl+r",
"command": "-workbench.action.openRecent"
},
// Enable or disable GitHub Copilot
{
"key": "alt+shift+c",
"command": "github.copilot.toggleCopilot"
},
// Enable or disable Codeium
{
"key": "alt+shift+v",
"command": "codeium.toggleAutocompleteGlobally"
},
// Enable or disable GitHub Copilot and Codeium
// {
// "key": "alt+shift+c",
// "command": "extension.multiCommand.execute",
// "interval": 100,
// "args": {
// "sequence": ["github.copilot.toggleCopilot", "codeium.toggleAutocompleteGlobally"]
// },
// "when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
// },
// Generate a commit message with GitHub Copilot
{
"key": "ctrl+alt+shift+c",
"command": "github.copilot.git.generateCommitMessage"
},
// Write documentation for the selected function or class
{
"key": "ctrl+alt+oem_period",
"command": "docs.write",
"when": "editorTextFocus && config.docwriter.hotkey.windows == 'Ctrl + .' && editorLangId =~ /typescript|javascript|python|php|java|c|cpp|csharp|dart|ruby|go|rust/"
},
{
"key": "ctrl+oem_period",
"command": "-docs.write",
"when": "editorTextFocus && config.docwriter.hotkey.windows == 'Ctrl + .' && editorLangId =~ /typescript|javascript|python|php|java|c|cpp|csharp|dart|ruby|go|rust/"
},
// Toggle the match case when performing a search
{
"key": "alt+c",
"command": "toggleFindCaseSensitive",
"when": "editorTextFocus"
},
{
"key": "alt+c c",
"command": "-extension.colorHelper.convert",
"when": "editorTextFocus"
},
{
"key": "alt+c p",
"command": "-extension.colorHelper.pick",
"when": "editorTextFocus"
},
//Compresses folder expansion
{
"key": "alt+shift+e",
"command": "workbench.files.action.collapseExplorerFolders"
},
// Reveal file explorer
{
"key": "ctrl+shift+e",
"command": "remote-wsl.revealInExplorer",
"when": "editorTextFocus && remoteName == 'wsl'"
},
// Switch between the file explorer and the file picker
{
"key": "alt+e",
"command": "workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "alt+e",
"command": "workbench.action.quickOpenNavigatePreviousInFilePicker",
"when": "inFilesPicker && inQuickOpen"
},
{
"key": "ctrl+shift+e",
"command": "-workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled"
},
{
"key": "ctrl+shift+e",
"command": "-workbench.action.quickOpenNavigatePreviousInFilePicker",
"when": "inFilesPicker && inQuickOpen"
},
// Restart TypeScript and ESLint server (install ryuta46.multi-command extension)
{
"key": "ctrl+shift+r",
"command": "extension.multiCommand.execute",
"interval": 100,
"args": {
"sequence": ["typescript.restartTsServer", "eslint.restart"]
}
},
// Format the file with the standard formatter (Prettier, for example) and then with ESLint
{
"key": "shift+alt+f",
"command": "extension.multiCommand.execute",
"interval": 100,
"args": {
"sequence": ["editor.action.formatDocument", "eslint.executeAutofix"]
},
"when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
},
// Format file with ESLint
// {
// "key": "shift+alt+f",
// "command": "eslint.executeAutofix",
// "when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
// },
// Format file with standard formatter
// {
// "key": "shift+alt+f",
// "command": "editor.action.formatDocument",
// "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"
// },
// Add required imports
{
"key": "shift+alt+a",
"command": "editor.action.sourceAction",
"args": {
"kind": "source.addMissingImports",
"apply": "first"
}
},
// Remove unnecessary imports and organize them
{
"key": "shift+alt+s",
"command": "extension.multiCommand.execute",
"interval": 10,
"args": {
"sequence": [
"typescript.removeUnusedImports",
"editor.action.organizeImports",
"typescript.organizeImports",
"typescript.sortImports"
]
},
"when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
},
// Toggle to display function parameter names (install DominicVonk.parameter-hints extension)
{
"key": "alt+shift+p",
"command": "parameterHints.toggle"
},
// Break HTML tag into multiple lines (install dannyconnell.split-html-attributes extension)
{
"key": "shift+alt+x",
"command": "extension.splitHTMLAttributes",
"when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
},
// Add or remove selected lines to the Git staging area
{
"key": "shift+alt+a",
"command": "git.stageSelectedRanges",
"when": "isInDiffEditor"
},
{
"key": "shift+alt+s",
"command": "git.unstageSelectedRanges",
"when": "isInDiffEditor"
},
// Toggle between continuous lines or line breaks at the limit of horizontal scrolling
{
"key": "shift+alt+z",
"command": "editor.action.toggleWordWrap",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "alt+z",
"command": "-editor.action.toggleWordWrap",
"when": "editorTextFocus && !editorReadonly"
},
// Attach a new remote container to VSCode
{
"key": "alt+a",
"command": "remote-containers.attachToRunningContainer"
},
// Expand or collapse block of code where the cursor is located
{
"key": "ctrl+shift+]",
"command": "editor.fold",
"when": "editorTextFocus && foldingEnabled"
},
{
"key": "ctrl+shift+\\",
"command": "editor.unfold",
"when": "editorTextFocus && foldingEnabled"
},
// Save file without formatting
{
"key": "ctrl+shift+s",
"command": "workbench.action.files.saveWithoutFormatting"
},
{
"key": "ctrl+shift+s",
"command": "-workbench.action.files.saveAs"
},
// Remove Markdown extension incompatibility with GitHub Copilot if installed
{
"key": "tab",
"command": "-markdown.extension.onTabKey",
"when": "editorTextFocus && !editorReadonly && !editorTabMovesFocus && !hasOtherSuggestions && !hasSnippetCompletions && !inSnippetMode && !suggestWidgetVisible && editorLangId == 'markdown'"
},
// Disable default Alt+Number commands
{
"key": "alt+1",
"command": "-workbench.action.openEditorAtIndex1"
},
{
"key": "alt+2",
"command": "-workbench.action.openEditorAtIndex2"
},
{
"key": "alt+3",
"command": "-workbench.action.openEditorAtIndex3"
},
{
"key": "alt+4",
"command": "-workbench.action.openEditorAtIndex4"
},
{
"key": "alt+5",
"command": "-workbench.action.openEditorAtIndex5"
},
{
"key": "alt+6",
"command": "-workbench.action.openEditorAtIndex6"
},
{
"key": "alt+7",
"command": "-workbench.action.openEditorAtIndex7"
},
{
"key": "alt+8",
"command": "-workbench.action.openEditorAtIndex8"
},
{
"key": "alt+9",
"command": "-workbench.action.openEditorAtIndex9"
},
// Customize Alt+Number commands and apply toggle for them
{
"key": "alt+1",
"command": "workbench.view.explorer"
},
{
"key": "alt+1",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.explorer'"
},
{
"key": "alt+2",
"command": "workbench.view.scm"
},
{
"key": "alt+2",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.scm'"
},
{
"key": "alt+3",
"command": "workbench.view.debug"
},
{
"key": "alt+3",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.debug'"
},
{
"key": "alt+4",
"command": "workbench.view.search"
},
{
"key": "alt+4",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.search'"
},
{
"key": "alt+5",
"command": "workbench.view.extensions"
},
{
"key": "alt+5",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.extensions'"
},
{
"key": "alt+6",
"command": "workbench.action.toggleSidebarVisibility"
},
{
"key": "alt+6",
"command": "workbench.view.extension.rubberduck",
"when": "activeViewlet == 'workbench.view.extension.rubberduck'"
},
{
"key": "alt+7",
"command": "workbench.view.extension.dockerView"
},
{
"key": "alt+7",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.extension.dockerView'"
},
{
"key": "alt+8",
"command": "workbench.view.remote"
},
{
"key": "alt+8",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.remote'"
},
{
"key": "alt+9",
"command": "workbench.view.extension.gitlens"
},
{
"key": "alt+9",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.extension.gitlens'"
}
]
Keybinds MacOS
/*
* Ctrl+Shift+P > settings
* Preferences: Open Settings (JSON)
*/
[
// Move the cursor and select between CamelCase words
{
"key": "cmd+alt+right",
"command": "cursorWordPartRight",
"when": "editorTextFocus"
},
{
"key": "cmd+alt+left",
"command": "cursorWordPartLeft",
"when": "editorTextFocus"
},
{
"key": "cmd+alt+shift+right",
"command": "cursorWordPartRightSelect",
"when": "editorTextFocus"
},
{
"key": "cmd+alt+shift+left",
"command": "cursorWordPartLeftSelect",
"when": "editorTextFocus"
},
// Comment line
{
"key": "cmd+;",
"command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "cmd+shift+;",
"command": "editor.action.blockComment",
"when": "editorTextFocus && !editorReadonly"
},
// Search for sentences equal to the current selection
{
"key": "cmd+shift+d",
"command": "editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
// Reverse the order of the lines
{
"key": "ctrl+shift+up",
"command": "editor.action.moveLinesUpAction",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+down",
"command": "editor.action.moveLinesDownAction",
"when": "editorTextFocus"
},
// Duplicate current line with just one shortcut
{
"key": "cmd+d",
"command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+d",
"command": "-editor.action.addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"key": "shift+alt+up",
"command": "-editor.action.copyLinesUpAction",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "shift+alt+down",
"command": "-editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly"
},
// Change the programming language of the current file
{
"key": "ctrl+j",
"command": "workbench.action.editor.changeLanguageMode",
"when": "textInputFocus && !editorReadonly"
},
{
"key": "ctrl+j",
"command": "-workbench.action.togglePanel"
},
// Select up and down, vertically
{
"key": "ctrl+alt+down",
"command": "cursorColumnSelectDown",
"when": "textInputFocus"
},
{
"key": "ctrl+alt+up",
"command": "cursorColumnSelectUp",
"when": "textInputFocus"
},
// Delete the line without copying to the clipboard
{
"key": "cmd+shift+x",
"command": "editor.action.deleteLines",
"when": "textInputFocus && !editorReadonly"
},
// Move the current tab to the right or to the left
{
"key": "ctrl+alt+right",
"command": "workbench.action.moveEditorRightInGroup",
"when": "editorTextFocus"
},
{
"key": "alt+right",
"command": "-workbench.action.terminal.focusNextPane",
"when": "terminalFocus"
},
{
"key": "ctrl+alt+left",
"command": "workbench.action.moveEditorLeftInGroup",
"when": "editorTextFocus"
},
{
"key": "alt+left",
"command": "-workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus"
},
// Move the tab to a different screen split, whether left, right, up, or down
{
"key": "ctrl+shift+alt+up",
"command": "workbench.action.moveEditorToAboveGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+down",
"command": "workbench.action.moveEditorToBelowGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+left",
"command": "workbench.action.moveEditorToLeftGroup",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+alt+right",
"command": "workbench.action.moveEditorToRightGroup",
"when": "editorTextFocus"
},
// Create a new empty tab
{
"key": "ctrl+t",
"command": "workbench.action.files.newUntitledFile"
},
{
"key": "ctrl+t",
"command": "-workbench.action.showAllSymbols"
},
// Go to the previous or next tab (similar to browsers)
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditor"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditor"
},
// Switch between tabs (similar to using Alt+Tab in Windows)
{
"key": "ctrl+q",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditor"
},
{
"key": "ctrl+q",
"command": "workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+shift+q",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditor"
},
{
"key": "ctrl+shift+q",
"command": "workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
// Open, hide and close tghe terminal
{
"key": "shift+enter",
"command": "workbench.action.togglePanel"
},
{
"key": "cmd+d",
"command": "workbench.action.terminal.split",
"when": "terminalFocus"
},
// Toggle the match case when performing a search
{
"key": "alt+c",
"command": "toggleFindCaseSensitive",
"when": "editorTextFocus"
},
//Compresses folder expansion
{
"key": "alt+shift+e",
"command": "workbench.files.action.collapseExplorerFolders"
},
// Restart TypeScript and ESLint server (install ryuta46.multi-command extension)
{
"key": "ctrl+shift+r",
"command": "extension.multiCommand.execute",
"interval": 100,
"args": {
"sequence": ["typescript.restartTsServer", "eslint.restart"]
}
},
// Add required imports
{
"key": "shift+alt+a",
"command": "editor.action.sourceAction",
"args": {
"kind": "source.addMissingImports",
"apply": "first"
}
},
// Remove unnecessary imports and organize them
{
"key": "shift+alt+s",
"command": "extension.multiCommand.execute",
"interval": 10,
"args": {
"sequence": [
"typescript.removeUnusedImports",
"editor.action.organizeImports",
"typescript.organizeImports",
"typescript.sortImports"
]
},
"when": "editorTextFocus && !editorReadonly && !inCompositeEditor"
},
// Add or remove selected lines to the Git staging area
{
"key": "shift+alt+a",
"command": "git.stageSelectedRanges",
"when": "isInDiffEditor"
},
{
"key": "shift+alt+s",
"command": "git.unstageSelectedRanges",
"when": "isInDiffEditor"
},
// Disable default Alt+Number commands
{
"key": "alt+1",
"command": "-workbench.action.openEditorAtIndex1"
},
{
"key": "alt+2",
"command": "-workbench.action.openEditorAtIndex2"
},
{
"key": "alt+3",
"command": "-workbench.action.openEditorAtIndex3"
},
{
"key": "alt+4",
"command": "-workbench.action.openEditorAtIndex4"
},
{
"key": "alt+5",
"command": "-workbench.action.openEditorAtIndex5"
},
{
"key": "alt+6",
"command": "-workbench.action.openEditorAtIndex6"
},
{
"key": "alt+7",
"command": "-workbench.action.openEditorAtIndex7"
},
{
"key": "alt+8",
"command": "-workbench.action.openEditorAtIndex8"
},
{
"key": "alt+9",
"command": "-workbench.action.openEditorAtIndex9"
},
// Customize Alt+Number commands and apply toggle for them
{
"key": "alt+1",
"command": "workbench.view.explorer"
},
{
"key": "alt+1",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.explorer'"
},
{
"key": "alt+2",
"command": "workbench.view.scm"
},
{
"key": "alt+2",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.scm'"
},
{
"key": "alt+3",
"command": "workbench.view.debug"
},
{
"key": "alt+3",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.debug'"
},
{
"key": "alt+4",
"command": "workbench.view.search"
},
{
"key": "alt+4",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.search'"
},
{
"key": "alt+5",
"command": "workbench.view.extensions"
},
{
"key": "alt+5",
"command": "workbench.action.toggleSidebarVisibility",
"when": "activeViewlet == 'workbench.view.extensions'"
}
// {
// "key": "alt+6",
// "command": "workbench.view.?"
// },
// {
// "key": "alt+6",
// "command": "workbench.view.extension.rubberduck",
// "when": "activeViewlet == 'workbench.view.?'"
// },
// {
// "key": "alt+7",
// "command": "workbench.view.?"
// },
// {
// "key": "alt+7",
// "command": "workbench.action.toggleSidebarVisibility",
// "when": "activeViewlet == 'workbench.view.?'"
// },
// {
// "key": "alt+8",
// "command": "workbench.view.?"
// },
// {
// "key": "alt+8",
// "command": "workbench.action.toggleSidebarVisibility",
// "when": "activeViewlet == 'workbench.view.?'"
// },
// {
// "key": "alt+9",
// "command": "workbench.view.?"
// },
// {
// "key": "alt+9",
// "command": "workbench.action.toggleSidebarVisibility",
// "when": "activeViewlet == 'workbench.view.?'"
// }
]