├── .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 |
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------