如何在VS Code中创建快捷方式批量打开文件并保持打开状态
解决方案
一、修改宏代码,强制非预览模式打开文件
问题核心在于vscode.window.showTextDocument默认以预览模式打开文件,后续打开的文件会替换前一个预览标签。通过传递preview: false参数可让文件直接以常驻标签打开,同时需处理异步操作避免执行顺序混乱。
修改后的完整代码:
const vscode = require('vscode'); module.exports.macroCommands = { OpenFrequentFiles: { no: 1, func: () => openFrequentFiles() }, }; // 改为异步函数,确保文件逐个完成打开操作 async function openFrequentFiles() { const workspaceDir = "/full/path/to/my/workspace"; const frequentFilepaths = [ "path/to/file1", "path/to/file2", // ... 补充其他文件路径 "path/to/file20", ]; for (const relativePath of frequentFilepaths) { const fullFilepath = `${workspaceDir}/${relativePath}`; await openFile(fullFilepath); } } async function openFile(filename) { try { const document = await vscode.workspace.openTextDocument(filename); // 传递preview: false参数,强制创建常驻编辑器标签 await vscode.window.showTextDocument(document, { preview: false }); } catch (err) { console.error(`打开文件失败:${filename}`, err); vscode.window.showErrorMessage(`无法打开文件:${filename}`); } }
关键修改说明:
- 将
openFrequentFiles和openFile改为异步函数,用await等待每个文件打开完成,避免并发操作导致的预览标签被覆盖 - 调用
showTextDocument时添加{ preview: false }选项,直接生成常驻标签,不会被后续打开的文件替换
二、备选方案:用符号链接集中管理文件(不破坏原结构)
如果不想编写宏,可以在项目内创建一个专门的文件夹(比如frequently-used),给每个目标文件创建符号链接到该文件夹,实现集中访问且不改变原文件位置:
- Windows(需管理员权限):执行
mklink "frequently-used\file1" "..\path\to\file1" - macOS/Linux:执行
ln -s "../path/to/file1" frequently-used/file1
之后只需一次性打开frequently-used文件夹下的所有文件即可,完全不影响原有项目结构。
三、补充技巧:打开后手动保留预览文件
若偶尔需要保留预览状态的文件,可在打开后执行workbench.action.keepEditor命令,同样需配合异步操作:
async function openFile(filename) { const document = await vscode.workspace.openTextDocument(filename); await vscode.window.showTextDocument(document); // 打开后执行保留编辑器命令 await vscode.commands.executeCommand('workbench.action.keepEditor'); }
不过这种方式效率不如直接设置preview: false,需多一步命令执行。
内容的提问来源于stack exchange,提问作者domgunewardena
相关产品推荐
相关产品推荐

