Visual Studio Code中每个工作区的keybindings.json

Ari*_*ing 7 visual-studio-code vscode-settings vscode-tasks

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

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

Chr*_*ain 35

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

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

  "workspaceKeybindings.myAwesomeTask.enabled": true // setting can be anything you want
Run Code Online (Sandbox Code Playgroud)

然后在 user 中创建键盘快捷键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}"
},
Run Code Online (Sandbox Code Playgroud)

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


Akh*_*rou 16

截至 2022 年 7 月 10 日,似乎不可能为.vscode/keybindings.json每个工作区设置一个,但是可以获取仅当您位于某个文件夹时才处于活动状态的键绑定:

在您的键绑定文件中,您可以放置​​:

[
  { 
    "key": "...",
    "command": "..." ,
    "when": "resourceDirname == '/Users/johndoe/path/to/folder'",
    ...
  },
]
Run Code Online (Sandbox Code Playgroud)

您还拥有所有这些其他上下文:

resource: "vscode-userdata:/Users/johndoe/path/to/file.json"
resourceDirname: "/Users/johndoe/path/to/"
resourceExtname: ".json"
resourceFilename: "file.json"
resourceLangId: "jsonc"
resourcePath: "/Users/johndoe/path/to/file.json"
resourceScheme: "vscode-userdata"
Run Code Online (Sandbox Code Playgroud)

和更多...


要查找所有可能的上下文键:

  1. 运行Developer: Toggle Developer Toolsvscode命令
  2. 然后运行Developer: Inspect Context Keysvscode命令然后点击任意地方
  3. 在控制台中展开上下文对象,您应该看到上下文键值对的完整列表


Haa*_*Leo 6

这是不可能的。在这里, Alexandru Dima(alexandrudima)解释了为什么他们不想添加此功能,并建议创建您的自定义扩展名,该扩展名仅贡献键绑定来共享它们。

  • 在积压中还有另一个问题提出了这个问题:https://github.com/Microsoft/vscode/issues/23757 (2认同)