如何通过 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 视图中所有选定项目的数组,当您在一个或多个选定文件上触发上下文菜单时。
我可以用下面的代码设法得到一个源代码管理的文件名。文件名来自“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 视图中所有选定项目的数组,当您在一个或多个选定文件上触发上下文菜单时。