如何从VS Code资源管理器面板获取选中文件列表?
获取VS Code资源管理器多选的文件Uri数组
问题描述
在VS Code资源管理器的上下文菜单中添加了自定义Print选项,但触发命令时,仅能获取右键点击位置的单个vscode.Uri,无法拿到所有选中文件的Uri列表。
解决方案
1. 修改package.json的菜单配置
在菜单定义中添加args参数,利用VS Code内置变量${selectedItems}传递所有选中项:
"menus": { "explorer/context": [ { "command": "vsc-print.print", "group": "navigation", "when": "explorerResourceIsFolder || explorerResourceIsFile", "args": "${selectedItems}" } ] }
when条件限制菜单仅在文件或文件夹节点上显示${selectedItems}会自动将资源管理器中所有选中的项作为参数传入命令
2. 更新命令处理函数
修改printCommand函数,接收选中项数组并提取其中的resourceUri:
function printCommand(selectedItems: any[]): PrintSession { logger.debug("Print command was invoked"); // 从选中项中提取所有文件/文件夹的Uri const selectedUris = selectedItems.map(item => item.resourceUri); const printSession = new PrintSession(selectedUris, false); printSessions.set(printSession.sessionId, printSession); return printSession; }
完成上述修改后,触发Print命令时就能获取所有选中文件的Uri数组,而非仅右键点击的单个项。
内容的提问来源于stack exchange,提问作者Peter Wone
相关产品推荐
相关产品推荐

