首先,我非常确定您实际上并不想要缺省键绑定JSON伪文件的内容.我假设,如果你想要抽认卡,你想帮助别人记住their个键绑定,以及他们对它们所做的任何定制.
我不知道什么是容易的or脚本,但是...下面是(我现在能想到的最好的):
启用并激活提供您希望成为结果一部分的键绑定的所有扩展.扩展有激活事件(因此,除非实际需要,否则不会加载它们).
打开VS代码开发工具(command palette中的Developer: Toggle Developer Tools
)
打开"Sources"选项卡,然后打开"Electron Isolated Context">;".../Resources/app"(或VS代码安装的任何应用程序资源路径)>;out/vs/workbench/workBench.desktop.main.js.
ctrl/cmd+f并搜索getKeybindings() {
并在结果上放置断点.前男友.对我来说,我得到了两个搜索结果,并将断点放在这里(您可能会看到一些略有不同的东西,因为这是缩小的代码):
getKeybindings() {
return this.e // <- put breakpoint here
}
断点将在代码的美化/源代码映射(?)视图中呈现.
返回到实际的VS代码窗口,现在打开键盘快捷键UI(命令面板中的Preferences: Open Keyboard Shortcuts
).这应该会触发断点.
在DevTools的"Sources"选项卡中,按两次"Step out of Current Function"按钮,应该会进入一个名为resolve
in keybindingsEditorModel.ts
的函数.
右键单击声明为const commandsWithDefaultKeybindings
的行,然后单击"继续到此处".请注意,如果您实际上希望获得默认键绑定,而不是用户键绑定+未被覆盖的默认键绑定,那么接下来的for循环就是初始化所需数据的循环.
在右侧边栏的"Scope"部分的"Local"部分下,查找一个值为this
的属性,该属性是一个包含(可能有很多)内容的array.属性名称将被缩小.在原始源代码中,我们要找的东西的名称是_keybindingItemsSortedByPrecedence
.找到它后,右击它并 Select "将对象存储为全局变量".您将在控制台面板中看到一个新变量,其名称可能类似于temp1
.
在控制台中,运行temp1.map(e => ({command:e.commandLabel,keyChord:e.keybindingItem.chords})).filter(e=>e.command!=="")
(或者您想要获得您想要的属性的任何转换,并且以您想要的任何格式),筛选器删除只有""
作为标签的映射.我认为这些映射只是用于没有绑定到命令的键,并且只需要"插入"它们自己/做它们在任何应用程序中会做的正常事情.
在结果上单击鼠标右键并 Select "复制对象".
在调试器中单击"继续"
将剪贴板内容粘贴到您想要的任何位置,并随心所欲地处理结果(这是JSON).
如果有/我可以找到一个扩展API来获取键绑定,这可能会容易得多,但我找了一下,但没有找到.(也许我只是错过了?)
如果您想要按源代码(注册键绑定的内容)进行过滤,那么您也可以这样做.前男友.要筛选用户编写的键绑定:temp1.filter(e=>e.source==="User") ...
.要获取来源列表,请使用new Set(temp1.map(e=>e.source))
.请注意,有些源是对象而不是字符串(例如对象关于扩展源,而不是"System"
或"User"
).