【发布时间】: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。如您所见,它有一个node 和nodes 参数。我假设如果我为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 命令?
【问题讨论】: