vscode:如何使用vscode api获取所有打开的文件? [重复]

问题描述 投票:0回答:1

我想用 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

但是我想要一个包含所有打开的文件名的数组。

visual-studio-code vscode-extensions
1个回答
2
投票

自 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))
© www.soinside.com 2019 - 2024. All rights reserved.