CodeTabs:给多个 VS Code 窗口加一条标签栏

Chaoran 发布约 8 分钟阅读
CodeTabs 总览中的 hello-web、notes 和 tiny-api 虚构示例项目

同时开着几个 VS Code 项目时,最容易打断思路的,往往是找窗口:刚才的代码在哪一个?另一个项目的任务跑完没有?我做了一个 Windows 小工具 CodeTabs,把这些窗口放到一条标签栏里,点一下就能切换,也顺手加上了本地 Codex 会话总览。

如果你也经常在几个项目之间来回切换,可以下载试试。它是独立的桌面程序,解压就能运行,不需要先安装 VS Code 扩展。

下载 CodeTabs(GitHub Releases) · 查看源码 · 反馈问题

先下载,几步就能用

目前支持 Windows 10 / 11,x64,需要 .NET Framework 4.8。运行软件不需要 Node.js 或 Python。发布时核对到的版本是 0.16.8-preview,仍是预览版;后续版本以 Releases 页面为准。

  1. 打开 Releases 页面,展开版本下方的 Assets。
  2. 下载名称以 windows-x64-portable.zip 结尾的便携包,例如 CodeTabs-0.16.8-preview-windows-x64-portable.zip。旁边的 .sha256 文件用于校验下载文件。不要把 Source code ZIP 当成软件安装包,那是源码。
  3. 把 ZIP 完整解压到一个固定、可写的文件夹,再双击里面的 CodeTabs.exe。
  4. 照常打开几个 VS Code 项目,然后点击 CodeTabs 右上角的“全部接入 VS Code”。各个窗口就会出现在标签栏中。

程序目前还没有数字签名,Windows 可能会显示发布者未知提示。请认准上面的项目 Release 页面。以后更新时,先正常退出旧版,再替换程序,保留程序旁边的 config/ 文件夹即可保留设置。

把项目窗口当成标签页切换

CodeTabs 管理的是整个应用窗口。比如你分别打开了一个网页项目和一个笔记项目,就可以在 CodeTabs 的两个标签之间切换;每个 VS Code 窗口里面原有的文件标签、终端和编辑布局照常使用。

刚开始只需要记住这几个操作:

  • 切换:直接点击标签。习惯鼠标快捷操作的话,也可以按住 Win + Alt,配合鼠标左、右键或滚轮切换。
  • 排序:左右拖动标签,把常用项目放到顺手的位置。标签太多时,可以用滚轮滚动标签栏。
  • 单独接入:从“菜单 → 选择应用窗口接入”挑选窗口;也可以把普通窗口的标题栏拖到标签栏上,最大化窗口先还原。反过来,按住“拖拽接入”拖到目标窗口后松开也可以,按 Esc 取消。
  • 移出:点击标签右侧的向外箭头,让它恢复成独立窗口,并恢复接入前的位置、尺寸和最大化状态。
  • 关闭:标签上的 × 会关闭对应应用窗口;如果有未保存内容,仍由应用自己弹出确认。只是想把窗口拿出来时,请用“移出”。
  • 新建:点击 +,或双击标签栏空白处,可以新开 VS Code 窗口。右键标签还能看到更多操作。

VS Code 默认使用“输入法兼容模式”,会保留独立窗口、原来的边框和任务栏项,由 CodeTabs 统一切换和同步位置,减少跨进程嵌入带来的输入法冲突。所以看到任务栏里还有 VS Code,是正常的。

工具也支持窗口置顶,以及多屏、不同缩放比例下的窗口还原。其他应用可以从菜单中选择接入,不过不同程序的兼容性会有差异。

用 Codex 时,再多一个任务总览

如果你同时用 Codex 处理几个项目,可以打开 “Codex 总览”,集中看看哪些任务还在执行、哪些已经完成,省去挨个切窗口查看的麻烦。

CodeTabs 的 Codex 总览界面,使用 hello-web、notes 和 tiny-api 三个虚构示例展示执行中、已完成及空闲状态
CodeTabs 实际界面。项目、目录和任务状态均为专门准备的演示数据,不包含个人项目或真实对话。

卡片可以按项目或独立对话浏览,也能搜索、重命名、置顶和隐藏。任务完成后可以提醒;双击卡片或点击“打开”,会优先切换到已接入或已打开的项目窗口,否则再启动 VS Code。

这里的状态来自本机可读取的 Codex 会话和索引。“已完成”表示日志里出现了完成事件,具体结果仍需要自己检查;打开卡片也不会自动执行任务,或保证定位到某条对话。没有本地日志的云端、远程会话可能只有索引信息。远程项目还需要你已有的 SSH 配置和 VS Code Remote-SSH 扩展。

不用 Codex 也没关系,窗口标签功能可以单独使用。CodeTabs 不改写 Codex 会话,也不把提示词正文保存到自己的配置中;不过 config/ 会保存项目路径、自定义标题等本地资料,分享软件或提交代码时不要把它一起带上。

试用时留意两件事

一是 CodeTabs 和被接入的应用尽量使用相同权限启动。二是退出时使用程序的正常退出方式,让它完成窗口还原;当前还没有崩溃恢复守护。预览版仍可能遇到特定输入法、多屏布局或第三方窗口的兼容问题,欢迎把能复现的情况告诉我。

想一起改进?欢迎提 Issue 和 PR

项目已经在 GitHub 开源,采用 Apache-2.0 许可证。修复一个小问题、改善交互、补充文档或测试,都欢迎。

如果遇到问题,可以先去 Issues 看看有没有类似反馈。新建 Issue 时,写上 CodeTabs 版本、Windows 版本、相关应用或输入法、复现步骤;多屏问题再加上各屏的缩放比例。截图前请检查项目名、路径和对话内容,必要时换成演示项目。

想直接贡献代码,可以 Fork 仓库,在自己的分支修改,再向原仓库提交 Pull Request。项目用 C# 编写,在 Windows 上克隆源码后,进入仓库目录运行:

powershell -NoProfile -ExecutionPolicy Bypass -File .\Compile.ps1

编译会使用 Windows 自带的 .NET Framework x64 C# 编译器,生成 CodeTabs.exe。需要打包并运行项目验证时,再执行:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\Package.ps1

提交前建议运行公开文件检查:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\Check-Public.ps1

PR 里简单说清楚改了什么、怎样验证即可;涉及窗口操作时,最好也实际检查一下切换、移出、输入法和退出还原。个人配置、会话日志、密钥和项目路径不要提交,更多细节见仓库里的 隐私说明和 发布指南。

如果你也觉得窗口一多就不好找,希望 CodeTabs 能帮你少切几次任务栏。用着哪里不顺手,欢迎来 GitHub 留个 Issue,我们慢慢把它打磨好。