我想用 vscode api 获取所有打开的文件。
例如,我的编辑器打开了001.cpp和002.cpp,我想要一个这样的数组,[0] =“001.cpp”,[1] =“002.cpp”。
我尝试在 https://code.visualstudio.com/api/references/vscode-api#TextEditor 上找到这样的 api。但我只找到 TextEditor,并且它只返回焦点文件。
vscode.window.activeTextEditor.document.fileName
但是我想要一个包含所有打开的文件名的数组。
自 2022 年 4 月 (1.67) 起,您现在可以使用 Tab API 来实现这一目标。
所以,根据您的情况,您需要这个:
import * as vscode from 'vscode'
// Get labels of opened files in all groups
vscode.window.tabGroups.all.flatMap(({ tabs }) => tabs.map(tab => tab.label))
要获取每个打开的选项卡的 URI 路径:
vscode.window.tabGroups.all.flatMap(({ tabs }) => tabs.map(tab => {
if (tab.input instanceof vscode.TabInputText || tab.input instanceof vscode.TabInputNotebook) {
return tab.input.uri.path
}
if (tab.input instanceof vscode.TabInputTextDiff || tab.input instanceof vscode.TabInputNotebookDiff) {
return tab.input.original.path // also can use modified
}
// others tabs e.g. Settings or webviews don't have URI
return null!
}).filter(Boolean))