├── .github ├── assignment.yml ├── locker.yml └── needs_more_info.yml ├── .gitignore ├── .vscode └── launch.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── SECURITY.md ├── build └── pipeline.yml ├── icon.png ├── icon.svg ├── package-lock.json ├── package.json └── scripts └── extract-keybindings-to-readme.js /.github/assignment.yml: -------------------------------------------------------------------------------- 1 | { 2 | perform: true, 3 | assignees: [chrisdias] 4 | } 5 | -------------------------------------------------------------------------------- /.github/locker.yml: -------------------------------------------------------------------------------- 1 | { 2 | daysAfterClose: 45, 3 | daysSinceLastUpdate: 3, 4 | perform: true 5 | } 6 | -------------------------------------------------------------------------------- /.github/needs_more_info.yml: -------------------------------------------------------------------------------- 1 | { 2 | daysUntilClose: 7, 3 | needsMoreInfoLabel: 'needs more info', 4 | perform: true, 5 | closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!" 6 | } -------------------------------------------------------------------------------- /.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 | "sourceMaps": true, 13 | "stopOnEntry": false 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.0.5 2 | - Update `extensionKind` to be both `ui` and `workspace` (will favor UI), see [vscode#85819](https://github.com/microsoft/vscode/issues/85819) 3 | 4 | ## 1.0.4 5 | - Fix #12, `CTRL+D` is now [duplicate selection](https://code.visualstudio.com/updates/v1_40#_duplicate-selection) 6 | 7 | ## 1.0 8 | - Initial migration of keyboard shortcuts 9 | -------------------------------------------------------------------------------- /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 | # Notepad++ Keymap for VS Code 2 | 3 | logo 4 | 5 | This extension ports popular Notepad++ keyboard shortcuts to Visual Studio Code. 6 | 7 | ## What keyboard shortcuts are included? 8 | 9 | | Command | Key | 10 | | :---------: | :---------: | 11 | | workbench.action.toggleFullScreen | f11 12 | | editor.foldAll | alt+0 13 | | editor.foldLevel1 | alt+1 14 | | editor.foldLevel2 | alt+2 15 | | editor.foldLevel3 | alt+3 16 | | editor.foldLevel4 | alt+4 17 | | editor.foldLevel5 | alt+5 18 | | editor.foldLevel6 | alt+6 19 | | editor.foldLevel7 | alt+7 20 | | editor.foldLevel8 | alt+8 21 | | editor.unfoldAll | shift+alt+0 22 | | editor.action.startFindReplaceAction | ctrl+h 23 | | editor.action.nextMatchFindAction | f4 24 | | editor.action.previousMatchFindAction | shift+f4 25 | | editor.action.jumpToBracket | ctrl+b 26 | | editor.action.clipboardCutAction | shift+delete 27 | | undo | alt+backspace 28 | | redo | ctrl+y 29 | | editor.action.duplicateSelection | ctrl+d 30 | | editor.action.joinLines | ctrl+j 31 | | editor.action.addCommentLine | ctrl+q 32 | | editor.action.removeCommentLine | ctrl+shift+q 33 | | workbench.action.files.saveAll | ctrl+shift+s 34 | | editor.action.addCommentLine | ctrl+k 35 | | editor.action.blockComment | ctrl+shift+k 36 | | deleteAllLeft | ctrl+shift+backspace 37 | | workbench.action.files.saveAs | ctrl+alt+s 38 | | workbench.action.quit | alt+f4 39 | | workbench.action.closeActiveEditor | ctrl+w 40 | | deleteAllRight | shift+cmd+delete 41 | | editor.action.transformToLowercase | ctrl+u 42 | | editor.action.transformToUppercase | ctrl+shift+u 43 | | editor.action.jumpToBracket | ctrl+b 44 | | cursorColumnSelectDown | shift+alt+down 45 | | cursorColumnSelectLeft | shift+alt+left 46 | | cursorColumnSelectPageDown | shift+alt+pagedown 47 | | cursorColumnSelectPageUp | shift+alt+pageup 48 | | cursorColumnSelectRight | shift+alt+right 49 | | cursorColumnSelectUp | shift+alt+up 50 | | workbench.action.nextEditor | ctrl+pageup 51 | | workbench.action.previousEditor | ctrl+pagedown 52 | | editor.action.clipboardCopyAction | ctrl+insert 53 | | editor.action.clipboardPasteAction | shift+insert 54 | | editor.action.moveLinesDownAction | ctrl+shift+down 55 | | editor.action.moveLinesUpAction | ctrl+shift+up 56 | | editor.action.deleteLines | ctrl+l 57 | | columnSelect | alt+c 58 | 59 | ## Recommended extensions. 60 | 61 | ### Bookmarks 62 | Looking for Bookmarks via the F2 keys? Hi! Install the Bookmark extension and map the commands to F2 keys to get similar bookmarks functionality: https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks 63 | 64 | 65 | ## How do I contribute a keyboard shortcut? 66 | 67 | We may have missed a keyboard shortcut. If we did please help us out! It is very easy to make a PR. 68 | 69 | 1. Open [`package.json`](https://github.com/Microsoft/vscode-notepadplusplus-keybindings/blob/master/package.json). 70 | 2. Add a JSON object to [`contributes.keybindings`](https://github.com/Microsoft/vscode-notepadplusplus-keybindings/blob/master/package.json#L16) as seen below. 71 | 3. Open a pull request. 72 | 73 | ```json 74 | { 75 | "mac": "", 76 | "linux": "", 77 | "win": "", 78 | "key": "", 79 | "command": "" 80 | } 81 | ``` 82 | 83 | You can read more about how to contribute keybindings in extensions in the [official documentation](http://code.visualstudio.com/docs/extensionAPI/extension-points#_contributeskeybindings). 84 | 85 | ## Mapping between VS Code and Notepad++ 86 | 87 | See https://docs.google.com/spreadsheets/d/1CUV0ZZHcI8NM7a5YiPbsPrKQRR59MY5n24qRza6UvNs/edit?usp=sharing 88 | 89 | ## Contributing 90 | 91 | This project welcomes contributions and suggestions. Most contributions require you to agree to a 92 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us 93 | the rights to use your contribution. For details, visit https://cla.microsoft.com. 94 | 95 | When you submit a pull request, a CLA-bot will automatically determine whether you need to provide 96 | a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions 97 | provided by the bot. You will only need to do this once across all repos using our CLA. 98 | 99 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 100 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or 101 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 102 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 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 | 42 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/vscode-notepadplusplus-keybindings/69e5a5103317155133ee3fda579b0650a2cdc850/icon.png -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Group 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "notepadplusplus-keybindings", 3 | "version": "1.0.7", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "notepadplusplus-keybindings", 3 | "displayName": "Notepad++ keymap", 4 | "description": "Popular Notepad++ keybindings for Visual Studio Code", 5 | "version": "1.0.7", 6 | "publisher": "ms-vscode", 7 | "engines": { 8 | "vscode": "^1.55.0" 9 | }, 10 | "license": "MIT", 11 | "categories": [ 12 | "Keymaps" 13 | ], 14 | "keywords": [ 15 | "keybindings", 16 | "keymap" 17 | ], 18 | "preview": true, 19 | "extensionKind": [ 20 | "ui", 21 | "workspace" 22 | ], 23 | "icon": "icon.png", 24 | "contributes": { 25 | "keybindings": [ 26 | { 27 | "key": "f11", 28 | "command": "workbench.action.toggleFullScreen", 29 | "when": "!inDebugMode" 30 | }, 31 | { 32 | "key": "alt+0", 33 | "command": "editor.foldAll", 34 | "when": "editorTextFocus" 35 | }, 36 | { 37 | "key": "alt+1", 38 | "command": "editor.foldLevel1", 39 | "when": "editorTextFocus" 40 | }, 41 | { 42 | "key": "alt+2", 43 | "command": "editor.foldLevel2", 44 | "when": "editorTextFocus" 45 | }, 46 | { 47 | "key": "alt+3", 48 | "command": "editor.foldLevel3", 49 | "when": "editorTextFocus" 50 | }, 51 | { 52 | "key": "alt+4", 53 | "command": "editor.foldLevel4", 54 | "when": "editorTextFocus" 55 | }, 56 | { 57 | "key": "alt+5", 58 | "command": "editor.foldLevel5", 59 | "when": "editorTextFocus" 60 | }, 61 | { 62 | "key": "alt+6", 63 | "command": "editor.foldLevel6", 64 | "when": "editorTextFocus" 65 | }, 66 | { 67 | "key": "alt+7", 68 | "command": "editor.foldLevel7", 69 | "when": "editorTextFocus" 70 | }, 71 | { 72 | "key": "alt+8", 73 | "command": "editor.foldLevel8", 74 | "when": "editorTextFocus" 75 | }, 76 | { 77 | "key": "shift+alt+0", 78 | "command": "editor.unfoldAll", 79 | "when": "editorTextFocus" 80 | }, 81 | { 82 | "key": "ctrl+h", 83 | "command": "editor.action.startFindReplaceAction" 84 | }, 85 | { 86 | "key": "f4", 87 | "command": "editor.action.nextMatchFindAction", 88 | "when": "editorFocus" 89 | }, 90 | { 91 | "key": "shift+f4", 92 | "command": "editor.action.previousMatchFindAction", 93 | "when": "editorFocus" 94 | }, 95 | { 96 | "key": "ctrl+b", 97 | "command": "editor.action.jumpToBracket", 98 | "when": "editorTextFocus" 99 | }, 100 | { 101 | "key": "shift+delete", 102 | "command": "editor.action.clipboardCutAction", 103 | "when": "editorTextFocus && !editorReadonly" 104 | }, 105 | { 106 | "key": "alt+backspace", 107 | "command": "undo", 108 | "when": "editorTextFocus && !editorReadonly" 109 | }, 110 | { 111 | "key": "ctrl+y", 112 | "command": "redo", 113 | "when": "editorTextFocus && !editorReadonly" 114 | }, 115 | { 116 | "key": "ctrl+d", 117 | "command": "editor.action.duplicateSelection", 118 | "when": "editorFocus" 119 | }, 120 | { 121 | "key": "ctrl+j", 122 | "command": "editor.action.joinLines", 123 | "when": "editorTextFocus && !editorReadonly" 124 | }, 125 | { 126 | "key": "ctrl+q", 127 | "command": "editor.action.commentLine", 128 | "when": "editorTextFocus && !editorReadonly" 129 | }, 130 | { 131 | "key": "ctrl+shift+q", 132 | "command": "editor.action.blockComment", 133 | "when": "editorTextFocus && !editorReadonly" 134 | }, 135 | { 136 | "key": "ctrl+shift+s", 137 | "command": "workbench.action.files.saveAll" 138 | }, 139 | { 140 | "key": "ctrl+k", 141 | "command": "editor.action.addCommentLine", 142 | "when": "editorTextFocus && !editorReadonly" 143 | }, 144 | { 145 | "key": "ctrl+shift+k", 146 | "command": "editor.action.removeCommentLine", 147 | "when": "editorTextFocus && !editorReadonly" 148 | }, 149 | { 150 | "key": "ctrl+shift+backspace", 151 | "command": "deleteAllLeft", 152 | "when": "editorTextFocus && !editorReadonly" 153 | }, 154 | { 155 | "key": "ctrl+alt+s", 156 | "command": "workbench.action.files.saveAs" 157 | }, 158 | { 159 | "key": "alt+f4", 160 | "command": "workbench.action.quit" 161 | }, 162 | { 163 | "key": "ctrl+w", 164 | "command": "workbench.action.closeActiveEditor" 165 | }, 166 | { 167 | "key": "shift+cmd+delete", 168 | "command": "deleteAllRight", 169 | "when": "editorTextFocus && !editorReadonly" 170 | }, 171 | { 172 | "key": "ctrl+u", 173 | "command": "editor.action.transformToLowercase" 174 | }, 175 | { 176 | "key": "ctrl+shift+u", 177 | "command": "editor.action.transformToUppercase" 178 | }, 179 | { 180 | "key": "ctrl+b", 181 | "command": "editor.action.jumpToBracket", 182 | "when": "editorTextFocus" 183 | }, 184 | { 185 | "key": "shift+alt+down", 186 | "command": "cursorColumnSelectDown", 187 | "when": "editorTextFocus" 188 | }, 189 | { 190 | "key": "shift+alt+left", 191 | "command": "cursorColumnSelectLeft", 192 | "when": "editorTextFocus" 193 | }, 194 | { 195 | "key": "shift+alt+pagedown", 196 | "command": "cursorColumnSelectPageDown", 197 | "when": "editorTextFocus" 198 | }, 199 | { 200 | "key": "shift+alt+pageup", 201 | "command": "cursorColumnSelectPageUp", 202 | "when": "editorTextFocus" 203 | }, 204 | { 205 | "key": "shift+alt+right", 206 | "command": "cursorColumnSelectRight", 207 | "when": "editorTextFocus" 208 | }, 209 | { 210 | "key": "shift+alt+up", 211 | "command": "cursorColumnSelectUp", 212 | "when": "editorTextFocus" 213 | }, 214 | { 215 | "key": "ctrl+pageup", 216 | "command": "workbench.action.nextEditor" 217 | }, 218 | { 219 | "key": "ctrl+pagedown", 220 | "command": "workbench.action.previousEditor" 221 | }, 222 | { 223 | "win": "ctrl+insert", 224 | "command": "editor.action.clipboardCopyAction", 225 | "when": "editorTextFocus" 226 | }, 227 | { 228 | "win": "shift+insert", 229 | "command": "editor.action.clipboardPasteAction", 230 | "when": "editorTextFocus && !editorReadonly" 231 | }, 232 | { 233 | "key": "ctrl+shift+down", 234 | "command": "editor.action.moveLinesDownAction", 235 | "when": "editorTextFocus && !editorReadonly" 236 | }, 237 | { 238 | "key": "ctrl+shift+up", 239 | "command": "editor.action.moveLinesUpAction", 240 | "when": "editorTextFocus && !editorReadonly" 241 | }, 242 | { 243 | "key": "ctrl+l", 244 | "command": "editor.action.deleteLines", 245 | "when": "editorTextFocus && !editorReadonly" 246 | }, 247 | { 248 | "key": "alt+c", 249 | "command": "columnSelect" 250 | } 251 | ] 252 | }, 253 | "repository": { 254 | "type": "git", 255 | "url": "https://github.com/Microsoft/vscode-notepadplusplus-keybindings.git" 256 | }, 257 | "bugs": { 258 | "url": "https://github.com/Microsoft/vscode-notepadplusplus-keybindings/issues" 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /scripts/extract-keybindings-to-readme.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | // Get keybindings from package.json 4 | const keybindings = require('../package.json').contributes.keybindings 5 | 6 | // Markdown content structure 7 | const headerContent = `| Command | Key | 8 | | :---------: | :---------: | 9 | ` 10 | const rowContent = (accumulatedContent, row) => `${accumulatedContent}| ${row.command} | ${row.key} 11 | ` 12 | 13 | // Generate markdown 14 | const generateContent = (accumulatedContent, row) => rowContent(accumulatedContent, row) 15 | const markdownOutput = keybindings.reduce(generateContent, headerContent) 16 | 17 | // Save markdown to external file 18 | fs.writeFileSync('keybindings.md', markdownOutput) 19 | --------------------------------------------------------------------------------