【问题标题】:Create custom key binding for VSCode with args pre-defined使用预定义的 args 为 VSCode 创建自定义键绑定
【发布时间】:2021-02-23 21:22:33
【问题描述】:

总结

我正在尝试为 Microsoft Visual Studio Code 创建自定义键绑定。当我调用其中一个 VSCode 命令时,我想指定参数,这样就不会提示我从列表中选择一个项目。

示例用例:我希望 SHIFT+ALT+X 删除名为 alpine 的 Docker 容器映像。

看看 VSCode 的 vscode-docker 扩展,它有一个名为 vscode-docker.images.remove 的注册命令。这是command definition from GitHub。如您所见,它有一个nodenodes 参数。我假设如果我为node 参数传入alpine 的值,它将简单地删除alpine 容器图像。

export async function removeImage(context: IActionContext, node?: ImageTreeItem, nodes?: ImageTreeItem[]): Promise<void> {
  .............
}

命令是registered with VSCode in this file

VSCode 的文档没有描述如何发现 VSCode 命令或这些命令的参数,因此我进入了 vscode-docker 扩展的源代码来查找。

我的尝试

我尝试在keybindings.json 中使用以下配置。

// Place your key bindings in this file to override the defaults
[
    {
        "key": "SHIFT+ALT+X",
        "command":"vscode-docker.images.remove",
        "args": {
            "node": "alpine"
        }
    }
]

预期结果

选定的 Docker 映像已从系统中移除/删除。

实际结果

我在 VSCode 窗口的右下角看到一个弹出窗口:

This action is invalid for some selected items. These items will be ignored.

Google 搜索 "This action is invalid for some selected items" 产生的结果为零。看来我是第一个遇到此错误并在网上发布的人。

问题:如何正确地将 args 传递给 vscode-docker.images.remove 命令?

【问题讨论】:

    标签: visual-studio-code


    【解决方案1】:

    它的参数必须是TreeItems

    命令是connected to a button on a line in a TreeView

    查看vscode-docker.images.remove的来源传入字符串(name)不起作用。

    或者 vscode-azureextensionui 中的函数 registerCommandAzUI 必须对 TreeItem 进行一些名称转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 2014-05-23
      相关资源
      最近更新 更多