如何以文件名数组形式获取Visual Studio Code窗口所有标签页?
VS Code 获取所有打开标签页文件名的实现方案
你需要在VS Code扩展开发场景下调用官方原生API实现该需求,无需引入第三方依赖,返回结果和编辑器顶部标签栏实际展示的打开列表完全一致。
实现代码
import * as vscode from 'vscode'; /** * 获取所有打开的文本标签文件名 * @returns 文件名数组,示例返回值:['1.txt', '2.txt', '3.txt'] */ function getAllOpenTabFileNames(): string[] { // 遍历所有标签组(适配多编辑分栏场景)拉取全部标签 const allTabs = vscode.window.tabGroups.all.flatMap(group => group.tabs); // 过滤非文本文件标签:排除欢迎页、设置面板、插件Webview面板等非磁盘文件类标签 const fileTabs = allTabs.filter(tab => tab.input instanceof vscode.TabInputText); // 提取文件名组装为数组,需要完整路径的话直接返回 fileInput.uri.fsPath 即可 return fileTabs.map(tab => { const fileInput = tab.input as vscode.TabInputText; return fileInput.uri.path.split(/[\/\\]/).pop() as string; }); }
常见踩坑说明
- 不要用
vscode.workspace.textDocuments实现该需求:该接口仅返回已加载内容的文本文档,从未点击激活过的打开标签不会被计入,返回结果和实际标签栏展示不一致 - 仅需要获取当前聚焦编辑分栏的标签时,把
vscode.window.tabGroups.all替换为vscode.window.tabGroups.activeTabGroup即可 - 上述Tab相关API为正式稳定接口,从VS Code 1.46版本开始支持,兼容所有近年发布的VS Code版本
- 如果需要把设置页、图片预览、Markdown预览这类非纯文本编辑标签也计入结果,删除
vscode.TabInputText过滤逻辑,直接取tab.label作为标签名称即可
内容的提问来源于stack exchange,提问作者i7solar
相关产品推荐
相关产品推荐

