├── .gitignore ├── .vscode └── launch.json ├── LICENSE ├── README.md ├── SECURITY.md ├── build └── pipeline.yml ├── package.json └── visualstudio-keyboard.png /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | *.vsix 7 | 8 | # User-specific files 9 | *.suo 10 | *.user 11 | *.userosscache 12 | *.sln.docstates 13 | 14 | # User-specific files (MonoDevelop/Xamarin Studio) 15 | *.userprefs 16 | 17 | # Build results 18 | [Dd]ebug/ 19 | [Dd]ebugPublic/ 20 | [Rr]elease/ 21 | [Rr]eleases/ 22 | x64/ 23 | x86/ 24 | bld/ 25 | [Bb]in/ 26 | [Oo]bj/ 27 | [Ll]og/ 28 | 29 | # Visual Studio 2015 cache/options directory 30 | .vs/ 31 | # Uncomment if you have tasks that create the project's static files in wwwroot 32 | #wwwroot/ 33 | 34 | # MSTest test Results 35 | [Tt]est[Rr]esult*/ 36 | [Bb]uild[Ll]og.* 37 | 38 | # NUNIT 39 | *.VisualState.xml 40 | TestResult.xml 41 | 42 | # Build Results of an ATL Project 43 | [Dd]ebugPS/ 44 | [Rr]eleasePS/ 45 | dlldata.c 46 | 47 | # .NET Core 48 | project.lock.json 49 | project.fragment.lock.json 50 | artifacts/ 51 | **/Properties/launchSettings.json 52 | 53 | *_i.c 54 | *_p.c 55 | *_i.h 56 | *.ilk 57 | *.meta 58 | *.obj 59 | *.pch 60 | *.pdb 61 | *.pgc 62 | *.pgd 63 | *.rsp 64 | *.sbr 65 | *.tlb 66 | *.tli 67 | *.tlh 68 | *.tmp 69 | *.tmp_proj 70 | *.log 71 | *.vspscc 72 | *.vssscc 73 | .builds 74 | *.pidb 75 | *.svclog 76 | *.scc 77 | 78 | # Chutzpah Test files 79 | _Chutzpah* 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opendb 86 | *.opensdf 87 | *.sdf 88 | *.cachefile 89 | *.VC.db 90 | *.VC.VC.opendb 91 | 92 | # Visual Studio profiler 93 | *.psess 94 | *.vsp 95 | *.vspx 96 | *.sap 97 | 98 | # TFS 2012 Local Workspace 99 | $tf/ 100 | 101 | # Guidance Automation Toolkit 102 | *.gpState 103 | 104 | # ReSharper is a .NET coding add-in 105 | _ReSharper*/ 106 | *.[Rr]e[Ss]harper 107 | *.DotSettings.user 108 | 109 | # JustCode is a .NET coding add-in 110 | .JustCode 111 | 112 | # TeamCity is a build add-in 113 | _TeamCity* 114 | 115 | # DotCover is a Code Coverage Tool 116 | *.dotCover 117 | 118 | # Visual Studio code coverage results 119 | *.coverage 120 | *.coveragexml 121 | 122 | # NCrunch 123 | _NCrunch_* 124 | .*crunch*.local.xml 125 | nCrunchTemp_* 126 | 127 | # MightyMoose 128 | *.mm.* 129 | AutoTest.Net/ 130 | 131 | # Web workbench (sass) 132 | .sass-cache/ 133 | 134 | # Installshield output folder 135 | [Ee]xpress/ 136 | 137 | # DocProject is a documentation generator add-in 138 | DocProject/buildhelp/ 139 | DocProject/Help/*.HxT 140 | DocProject/Help/*.HxC 141 | DocProject/Help/*.hhc 142 | DocProject/Help/*.hhk 143 | DocProject/Help/*.hhp 144 | DocProject/Help/Html2 145 | DocProject/Help/html 146 | 147 | # Click-Once directory 148 | publish/ 149 | 150 | # Publish Web Output 151 | *.[Pp]ublish.xml 152 | *.azurePubxml 153 | # TODO: Comment the next line if you want to checkin your web deploy settings 154 | # but database connection strings (with potential passwords) will be unencrypted 155 | *.pubxml 156 | *.publishproj 157 | 158 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 159 | # checkin your Azure Web App publish settings, but sensitive information contained 160 | # in these scripts will be unencrypted 161 | PublishScripts/ 162 | 163 | # NuGet Packages 164 | *.nupkg 165 | # The packages folder can be ignored because of Package Restore 166 | **/packages/* 167 | # except build/, which is used as an MSBuild target. 168 | !**/packages/build/ 169 | # Uncomment if necessary however generally it will be regenerated when needed 170 | #!**/packages/repositories.config 171 | # NuGet v3's project.json files produces more ignorable files 172 | *.nuget.props 173 | *.nuget.targets 174 | 175 | # Microsoft Azure Build Output 176 | csx/ 177 | *.build.csdef 178 | 179 | # Microsoft Azure Emulator 180 | ecf/ 181 | rcf/ 182 | 183 | # Windows Store app package directories and files 184 | AppPackages/ 185 | BundleArtifacts/ 186 | Package.StoreAssociation.xml 187 | _pkginfo.txt 188 | 189 | # Visual Studio cache files 190 | # files ending in .cache can be ignored 191 | *.[Cc]ache 192 | # but keep track of directories ending in .cache 193 | !*.[Cc]ache/ 194 | 195 | # Others 196 | ClientBin/ 197 | ~$* 198 | *~ 199 | *.dbmdl 200 | *.dbproj.schemaview 201 | *.jfm 202 | *.pfx 203 | *.publishsettings 204 | orleans.codegen.cs 205 | 206 | # Since there are multiple workflows, uncomment next line to ignore bower_components 207 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 208 | #bower_components/ 209 | 210 | # RIA/Silverlight projects 211 | Generated_Code/ 212 | 213 | # Backup & report files from converting an old project file 214 | # to a newer Visual Studio version. Backup files are not needed, 215 | # because we have git ;-) 216 | _UpgradeReport_Files/ 217 | Backup*/ 218 | UpgradeLog*.XML 219 | UpgradeLog*.htm 220 | 221 | # SQL Server files 222 | *.mdf 223 | *.ldf 224 | *.ndf 225 | 226 | # Business Intelligence projects 227 | *.rdl.data 228 | *.bim.layout 229 | *.bim_*.settings 230 | 231 | # Microsoft Fakes 232 | FakesAssemblies/ 233 | 234 | # GhostDoc plugin setting file 235 | *.GhostDoc.xml 236 | 237 | # Node.js Tools for Visual Studio 238 | .ntvs_analysis.dat 239 | node_modules/ 240 | 241 | # Typescript v1 declaration files 242 | typings/ 243 | 244 | # Visual Studio 6 build log 245 | *.plg 246 | 247 | # Visual Studio 6 workspace options file 248 | *.opt 249 | 250 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 251 | *.vbw 252 | 253 | # Visual Studio LightSwitch build output 254 | **/*.HTMLClient/GeneratedArtifacts 255 | **/*.DesktopClient/GeneratedArtifacts 256 | **/*.DesktopClient/ModelManifest.xml 257 | **/*.Server/GeneratedArtifacts 258 | **/*.Server/ModelManifest.xml 259 | _Pvt_Extensions 260 | 261 | # Paket dependency manager 262 | .paket/paket.exe 263 | paket-files/ 264 | 265 | # FAKE - F# Make 266 | .fake/ 267 | 268 | # JetBrains Rider 269 | .idea/ 270 | *.sln.iml 271 | 272 | # CodeRush 273 | .cr/ 274 | 275 | # Python Tools for Visual Studio (PTVS) 276 | __pycache__/ 277 | *.pyc 278 | 279 | # Cake - Uncomment if you are using it 280 | # tools/** 281 | # !tools/packages.config 282 | 283 | # Telerik's JustMock configuration file 284 | *.jmconfig 285 | 286 | # BizTalk build output 287 | *.btp.cs 288 | *.btm.cs 289 | *.odx.cs 290 | *.xsd.cs 291 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Launch Extension", 6 | "type": "extensionHost", 7 | "request": "launch", 8 | "runtimeExecutable": "${execPath}", 9 | "args": [ 10 | "--extensionDevelopmentPath=${workspaceRoot}" 11 | ], 12 | "stopOnEntry": false, 13 | "sourceMaps": true 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. All rights reserved. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Visual Studio Keymap for Visual Studio Code 2 | 3 | This extension ports popular Visual Studio keyboard shortcuts to Visual Studio Code. After installing the extension and restarting VS Code your favorite keyboard shortcuts from Visual Studio are now available. 4 | 5 | ## What keyboard shortcuts are included? 6 | 7 | | Command | macOS | Windows | Linux | 8 | | :------ | :---- | :------ | :---- | 9 | | `workbench.action.tasks.build` | `ctrl+shift+b` | `ctrl+shift+b` | `ctrl+shift+b` || 10 | | `workbench.debug.viewlet.action.addFunctionBreakpointAction` | `ctrl+b` | `ctrl+b` | `ctrl+b` || 11 | | `workbench.debug.viewlet.action.removeAllBreakpoints` | `ctrl+shift+f9` | `ctrl+shift+f9` | `ctrl+shift+f9` | 12 | | `workbench.action.debug.restart` | `ctrl+shift+f5` | `ctrl+shift+f5` | `ctrl+shift+f5` | 13 | | `editor.debug.action.runToCursor` | `ctrl+f10` | `ctrl+f10` | `ctrl+f10` | 14 | | `editor.action.formatDocument` | `ctrl+k ctrl+d` | `ctrl+k ctrl+d` | `ctrl+k ctrl+d` | 15 | | `insertSnippet` | `ctrl+k ctrl+x` | `ctrl+k ctrl+x` | `ctrl+k ctrl+x` | 16 | | `editor.action.deleteLines` | `ctrl+shift+l` | `ctrl+shift+l` | `ctrl+shift+l` | 17 | | `editor.action.clipboardCutAction` | `ctrl+l` | `ctrl+l` | `ctrl+l` | 18 | | `workbench.action.files.openFileFolder` | `ctrl+shift+g` | `ctrl+shift+g` | `ctrl+shift+g` | 19 | | `editor.action.referenceSearch.trigger` | `alt+f12` | `alt+f12` | `alt+f12` | 20 | | `redo` | `ctrl+y` | `ctrl+y` | `ctrl+y` | 21 | | `editor.action.smartSelect.expand` | `ctrl+w` | `ctrl+w` | `ctrl+w` | 22 | | `editor.action.addSelectionToNextFindMatch` | `shift+alt+.` | `shift+alt+.` | `shift+alt+.` | 23 | | `editor.action.triggerSuggest` | `ctrl+alt+space` | `ctrl+alt+space` | `ctrl+alt+space` | 24 | | `undo` | `alt+space` | `alt+space` | `alt+space` | 25 | | `deleteWordEndRight` | `ctrl+delete` | `ctrl+delete` | `ctrl+delete` | 26 | | `deleteWordStartLeft` | `ctrl+backspace` | `ctrl+backspace` | `ctrl+backspace` | 27 | | `workbench.action.files.saveAll` | `ctrl+shift+s` | `ctrl+shift+s` | `ctrl+shift+s` | 28 | | `workbench.action.output.toggleOutput` | `ctrl+alt+o` | `ctrl+alt+o` | `ctrl+alt+o` | 29 | | `workbench.view.explorer` | `ctrl+alt+l` | `ctrl+alt+l` | `ctrl+alt+l` | 30 | | `editor.action.rename` | `ctrl+r ctrl+r` | `ctrl+r ctrl+r` | `ctrl+r ctrl+r` | 31 | | `editor.action.toggleRenderWhitespace` | `ctrl+r ctrl+w` | `ctrl+r ctrl+w` | `ctrl+r ctrl+w` | 32 | | `editor.foldAll` | `ctrl+k ctrl+m` | `ctrl+k ctrl+m` | `ctrl+k ctrl+m` | 33 | | `workbench.action.navigateBack` | `ctrl+-` | `ctrl+-` | `ctrl+-` | 34 | | `workbench.action.navigateForward` | `ctrl+shift+-` | `ctrl+shift+-` | `ctrl+shift+-` | 35 | | `workbench.action.quickOpen` | `ctrl+,` | `ctrl+,` | `ctrl+,` | 36 | | `cursorColumnSelectDown` | `shift+alt+down` | `shift+alt+down` | `shift+alt+down` | 37 | | `cursorColumnSelectLeft` | `shift+alt+left` | `shift+alt+left` | `shift+alt+left` | 38 | | `cursorColumnSelectPageDown` | `shift+alt+pagedown` | `shift+alt+pagedown` | `shift+alt+pagedown` | 39 | | `cursorColumnSelectPageUp` | `shift+alt+pageup` | `shift+alt+pageup` | `shift+alt+pageup` | 40 | | `cursorColumnSelectRight` | `shift+alt+right` | `shift+alt+right` | `shift+alt+right` | 41 | | `cursorColumnSelectUp` | `shift+alt+up` | `shift+alt+up` | `shift+alt+up` | 42 | | `workbench.action.toggleZenMode` | `shift+alt+enter` | `shift+alt+enter` | `shift+alt+enter` | 43 | | `workbench.action.closeActiveEditor` | `ctrl+f4` | `ctrl+f4` | `ctrl+f4` | 44 | | `editor.action.copyLinesDownAction` | `ctrl+d` | `ctrl+d` | `ctrl+d` | 45 | | `cursorWordStartRight` | `ctrl+right` | `ctrl+right` | `ctrl+right` | 46 | | `cursorWordStartRightSelect` | `ctrl+shift+right` | `ctrl+shift+right` | `ctrl+shift+right` | 47 | | `editor.action.insertLineBefore` | `ctrl+enter` | `ctrl+enter` | `ctrl+enter` | 48 | | `editor.action.insertLineAfter` | `shift+enter` | `shift+enter` | `shift+enter` | 49 | | `editor.action.wordHighlight.next` | `ctrl+shift+down` | `ctrl+shift+down` | `ctrl+shift+down` | 50 | | `editor.action.wordHighlight.prev` | `ctrl+shift+up` | `ctrl+shift+up` | `ctrl+shift+up` | 51 | | `editor.action.replaceAll` | `alt+a` | `alt+a` | `alt+a` | 52 | | `search.action.replaceAll` | `alt+a` | `alt+a` | `alt+a` | 53 | | `search.action.replaceAllInFile` | `alt+a` | `alt+a` | `alt+a` | 54 | | `search.action.replaceAllInFolder` | `alt+a` | `alt+a` | `alt+a` | 55 | | `editor.action.replaceOne` | `alt+r` | `alt+r` | `alt+r` | 56 | | `search.action.replace` | `alt+r` | `alt+r` | `alt+r` | 57 | | `toggleSearchRegex` | `alt+e` | `alt+e` | `alt+e` | 58 | | `toggleFindRegex` | `alt+e` | `alt+e` | `alt+e` | 59 | | `deleteWordStartRight` | `ctrl+delete` | `ctrl+delete` | `ctrl+delete` | 60 | 61 | The full list of keyboard shortcuts including the `when` clause (e.g. while debugging) can be found in the extension's [contribution list](https://github.com/microsoft/vscode-vs-keybindings/blob/bf87aaa88a7e50e4c316ce3f4fe703c4443366ce/package.json#L26). 62 | 63 | ## Why don't all the keyboard shortcuts work? 64 | 65 | VS Code does not implement all of the commands available in Visual Studio. If you would like to see a feature in VS Code that is in Visual Studio, please open an [issue on GitHub](https://github.com/Microsoft/vscode/issues/new). 66 | 67 | ## How do I contribute a keyboard shortcut? 68 | 69 | We may have missed a keyboard shortcut. If we did please help us out! It is very easy to make a PR. 70 | 71 | 1. Head over to our [GitHub repository](https://github.com/Microsoft/vscode-vs-keybindings). 72 | 2. Open [`package.json`](https://github.com/Microsoft/vscode-vs-keybindings/blob/main/package.json). 73 | 3. Add a JSON object to [`contributes.keybindings`](https://github.com/Microsoft/vscode-vs-keybindings/blob/main/package.json#L26) as seen below. 74 | 4. Open a pull request. 75 | 76 | ```json 77 | { 78 | "mac": "", 79 | "linux": "", 82 | "command": " 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd). 40 | 41 | -------------------------------------------------------------------------------- /build/pipeline.yml: -------------------------------------------------------------------------------- 1 | name: $(Date:yyyyMMdd)$(Rev:.r) 2 | 3 | trigger: 4 | branches: 5 | include: 6 | - main 7 | pr: none 8 | 9 | resources: 10 | repositories: 11 | - repository: templates 12 | type: github 13 | name: microsoft/vscode-engineering 14 | ref: main 15 | endpoint: Monaco 16 | 17 | parameters: 18 | - name: publishExtension 19 | displayName: 🚀 Publish Extension 20 | type: boolean 21 | default: false 22 | 23 | extends: 24 | template: azure-pipelines/extension/stable.yml@templates 25 | parameters: 26 | tsa: 27 | config: 28 | areaPath: 'Visual Studio Code Keybinding Extensions' 29 | serviceTreeID: 'b43346cb-06b1-4256-97a5-9aaa18eaff90' 30 | enabled: true 31 | 32 | publishExtension: ${{ parameters.publishExtension }} 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vs-keybindings", 3 | "displayName": "Visual Studio Keymap", 4 | "description": "Popular Visual Studio keybindings for VS Code.", 5 | "version": "0.2.1", 6 | "publisher": "ms-vscode", 7 | "engines": { 8 | "vscode": "^1.22.0" 9 | }, 10 | "categories": [ 11 | "Keymaps" 12 | ], 13 | "keywords": [ 14 | "keymap" 15 | ], 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/Microsoft/vscode-vs-keybindings.git" 19 | }, 20 | "bugs": { 21 | "url": "https://github.com/Microsoft/vscode-vs-keybindings/issues" 22 | }, 23 | "icon": "visualstudio-keyboard.png", 24 | "contributes": { 25 | "keybindings": [ 26 | { 27 | "key": "ctrl+shift+b", 28 | "command": "workbench.action.tasks.build" 29 | }, 30 | { 31 | "key": "ctrl+b", 32 | "command": "workbench.debug.viewlet.action.addFunctionBreakpointAction" 33 | }, 34 | { 35 | "key": "ctrl+shift+f9", 36 | "command": "workbench.debug.viewlet.action.removeAllBreakpoints" 37 | }, 38 | { 39 | "key": "ctrl+shift+f5", 40 | "command": "workbench.action.debug.restart", 41 | "when": "inDebugMode" 42 | }, 43 | { 44 | "key": "ctrl+f10", 45 | "command": "editor.debug.action.runToCursor", 46 | "when": "inDebugMode" 47 | }, 48 | { 49 | "key": "ctrl+k ctrl+d", 50 | "command": "editor.action.formatDocument" 51 | }, 52 | { 53 | "key": "ctrl+k ctrl+x", 54 | "command": "insertSnippet" 55 | }, 56 | { 57 | "key": "ctrl+shift+l", 58 | "command": "editor.action.deleteLines", 59 | "when": "editorTextFocus && !editorReadonly" 60 | }, 61 | { 62 | "key": "ctrl+l", 63 | "command": "editor.action.clipboardCutAction", 64 | "when": "editorTextFocus && !editorReadonly" 65 | }, 66 | { 67 | "key": "ctrl+shift+g", 68 | "command": "workbench.action.files.openFileFolder" 69 | }, 70 | { 71 | "key": "alt+f12", 72 | "command": "editor.action.referenceSearch.trigger" 73 | }, 74 | { 75 | "key": "ctrl+y", 76 | "command": "redo" 77 | }, 78 | { 79 | "key": "ctrl+w", 80 | "command": "editor.action.smartSelect.expand", 81 | "when": "editorTextFocus" 82 | }, 83 | { 84 | "key": "shift+alt+.", 85 | "command": "editor.action.addSelectionToNextFindMatch", 86 | "when": "editorFocus" 87 | }, 88 | { 89 | "key": "ctrl+alt+space", 90 | "command": "editor.action.triggerSuggest", 91 | "when": "editorHasCompletionItemProvider && editorTextFocus && !editorReadonly" 92 | }, 93 | { 94 | "key": "alt+space", 95 | "command": "undo" 96 | }, 97 | { 98 | "key": "ctrl+delete", 99 | "command": "deleteWordEndRight", 100 | "when": "editorTextFocus && !editorReadonly" 101 | }, 102 | { 103 | "key": "ctrl+backspace", 104 | "command": "deleteWordStartLeft", 105 | "when": "editorTextFocus && !editorReadonly" 106 | }, 107 | { 108 | "key": "ctrl+shift+s", 109 | "command": "workbench.action.files.saveAll" 110 | }, 111 | { 112 | "key": "ctrl+alt+o", 113 | "command": "workbench.action.output.toggleOutput" 114 | }, 115 | { 116 | "key": "ctrl+alt+l", 117 | "command": "workbench.view.explorer" 118 | }, 119 | { 120 | "key": "ctrl+r ctrl+r", 121 | "command": "editor.action.rename", 122 | "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly" 123 | }, 124 | { 125 | "key": "ctrl+r ctrl+w", 126 | "command": "editor.action.toggleRenderWhitespace" 127 | }, 128 | { 129 | "key": "ctrl+k ctrl+m", 130 | "command": "editor.foldAll", 131 | "when": "editorTextFocus" 132 | }, 133 | { 134 | "key": "ctrl+-", 135 | "command": "workbench.action.navigateBack" 136 | }, 137 | { 138 | "key": "ctrl+shift+-", 139 | "command": "workbench.action.navigateForward" 140 | }, 141 | { 142 | "key": "ctrl+,", 143 | "command": "workbench.action.quickOpen" 144 | }, 145 | { 146 | "key": "shift+alt+down", 147 | "command": "cursorColumnSelectDown", 148 | "when": "editorTextFocus" 149 | }, 150 | { 151 | "key": "shift+alt+left", 152 | "command": "cursorColumnSelectLeft", 153 | "when": "editorTextFocus" 154 | }, 155 | { 156 | "key": "shift+alt+pagedown", 157 | "command": "cursorColumnSelectPageDown", 158 | "when": "editorTextFocus" 159 | }, 160 | { 161 | "key": "shift+alt+pageup", 162 | "command": "cursorColumnSelectPageUp", 163 | "when": "editorTextFocus" 164 | }, 165 | { 166 | "key": "shift+alt+right", 167 | "command": "cursorColumnSelectRight", 168 | "when": "editorTextFocus" 169 | }, 170 | { 171 | "key": "shift+alt+up", 172 | "command": "cursorColumnSelectUp", 173 | "when": "editorTextFocus" 174 | }, 175 | { 176 | "key": "shift+alt+enter", 177 | "command": "workbench.action.toggleZenMode" 178 | }, 179 | { 180 | "key": "ctrl+f4", 181 | "command": "workbench.action.closeActiveEditor" 182 | }, 183 | { 184 | "key": "ctrl+d", 185 | "command": "editor.action.copyLinesDownAction" 186 | }, 187 | { 188 | "key": "ctrl+right", 189 | "command": "cursorWordStartRight", 190 | "when": "editorTextFocus" 191 | }, 192 | { 193 | "key": "ctrl+shift+right", 194 | "command": "cursorWordStartRightSelect", 195 | "when": "editorTextFocus" 196 | }, 197 | { 198 | "key": "ctrl+enter", 199 | "command": "editor.action.insertLineBefore", 200 | "when": "editorTextFocus && !editorReadonly" 201 | }, 202 | { 203 | "key": "shift+enter", 204 | "command": "editor.action.insertLineAfter", 205 | "when": "editorTextFocus && !editorReadonly" 206 | }, 207 | { 208 | "key": "ctrl+shift+down", 209 | "command": "editor.action.wordHighlight.next", 210 | "when": "editorTextFocus && hasWordHighlights" 211 | }, 212 | { 213 | "key": "ctrl+shift+up", 214 | "command": "editor.action.wordHighlight.prev", 215 | "when": "editorTextFocus && hasWordHighlights" 216 | }, 217 | { 218 | "key": "alt+a", 219 | "command": "editor.action.replaceAll", 220 | "when": "editorFocus && findWidgetVisible" 221 | }, 222 | { 223 | "key": "alt+a", 224 | "command": "search.action.replaceAll", 225 | "when": "replaceActive && searchViewletVisible && !findWidgetVisible" 226 | }, 227 | { 228 | "key": "alt+a", 229 | "command": "search.action.replaceAllInFile", 230 | "when": "fileMatchFocus && replaceActive && searchViewletVisible" 231 | }, 232 | { 233 | "key": "alt+a", 234 | "command": "search.action.replaceAllInFolder", 235 | "when": "folderMatchFocus && replaceActive && searchViewletVisible" 236 | }, 237 | { 238 | "key": "alt+r", 239 | "command": "editor.action.replaceOne", 240 | "when": "editorFocus && findWidgetVisible" 241 | }, 242 | { 243 | "key": "alt+r", 244 | "command": "search.action.replace", 245 | "when": "matchFocus && replaceActive && searchViewletVisible" 246 | }, 247 | { 248 | "key": "alt+e", 249 | "command": "toggleSearchRegex", 250 | "when": "searchInputBoxFocus && searchViewletVisible" 251 | }, 252 | { 253 | "key": "alt+e", 254 | "command": "toggleFindRegex", 255 | "when": "editorFocus" 256 | }, 257 | { 258 | "key": "ctrl+delete", 259 | "command": "deleteWordStartRight", 260 | "when": "editorTextFocus && !editorReadonly" 261 | } 262 | ] 263 | 264 | } 265 | } -------------------------------------------------------------------------------- /visualstudio-keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/vscode-vs-keybindings/725f558889474246568360eb1682420cc6fe01b8/visualstudio-keyboard.png --------------------------------------------------------------------------------