如何通过 VSCode 扩展名 API 获取源代码管理中选定文件的名称?

How to get the name of selected files in source control via VSCode extension API?

我可以用下面的代码设法得到一个源代码管理的文件名。文件名来自“await vscode.commands.executeCommand('copyFilePath');”行我可以通过读取剪贴板文本来获取文件名。但是当我 select 多个文件时,仍然可以使用第一个文件名。是否可以获取所有文件的名称?

  let copySelectedFileName = vscode.commands.registerCommand('folder-operations.copySelectedFileName', async (folder) => {

    let newUri = folder;  // folder will be undefined when triggered by keybinding
    console.log('folder'+folder);
     if (!folder) {                       // so triggered by a keybinding
       await vscode.commands.executeCommand('copyFilePath');
     }
     console.log(newUri);
  });

我尝试另一种方法:向 SCM 添加一个命令,如下所示。

我在命令中使用参数来检索 selected 文件的名称。但是即使我选择了2个以上的文件,数组的大小也是1。

let copySelectedFileNameSCM = vscode.commands.registerCommand('testSource.copySelectedFileNameSCM', async (...file) => {
        console.log('file:'+file);
      });

将命令添加到 package.json:

中的上下文菜单
    "contributes": {

        "menus": {

            "scm/resourceState/context": [
                {
                    "command": "testSource.copySelectedFileNameSCM"
                }
            ]
        }
    }

您似乎将其添加到了错误的菜单中。这可能是唯一可以 return 选择文件的菜单。

然后在你的命令中:

let copySelectedFileNameSCM = vscode.commands.registerCommand('testSource.copySelectedFileNameSCM', async (...file) => {
   console.log('file:'+file);
});

file 将是 scm 视图中所有选定项目的数组,当您在一个或多个选定文件上触发上下文菜单时