Visual Studio 代码中每个工作区一个 keybindings.json

A keybindings.json per workspace in Visual Studio Code

是否可以将 keybindings.json 作为工作区设置的一部分而不是用户设置?

由于我有与我的工作区关联的特定任务,我还希望能够分配特定于工作区的快捷方式。因为我会在我单独的 Windows 和 Linux 环境中使用这些快捷方式,所以我不希望看到这些键绑定定义最终出现在我的环境特定用户设置中。

这是不可能的。 Here Alexandru Dima (alexandrudima) 解释了为什么他们不想添加此功能,并进一步建议创建您的自定义扩展,该扩展仅提供键绑定以共享它们。

这不是一个完美的解决方案,但我找到了一种解决方法来创建可以在工作区级别激活的键绑定。

在工作区 .vscode/settings.json 文件中,将新设置设为 true。 (因为设置没有被 vscode 或任何扩展注册,它会在编辑器中淡出显示 - 这没关系):

  "workspaceKeybindings.myAwesomeTask.enabled": true // setting can be anything you want

然后在用户 keybindings.json 中创建键盘快捷方式,并为您创建的设置添加“when”条件:

{ 
  "key": "ctrl+; ctrl+n",
  "command": "workbench.action.tasks.runTask",
  "args": "My Awesome Task",
  "when": "config.workspaceKeybindings.myAwesomeTask.enabled" // Must be "config.{settingName}"
},

此键绑定可以在您想要的任何工作区中设置为活动。