VSCode终端不支持真正会话复用,因其集成终端为进程级隔离,关闭即终止;替代方案是在其中运行tmux实现持久化会话管理。

VSCode 本身没有内置的终端多路复用功能(比如 tmux 或 screen 那样的会话分离/复用能力),它的集成终端是进程级隔离的,关掉窗口或标签页,会话就结束了——这点必须先明确。
为什么 VSCode 的终端不支持真正的会话复用
VSCode 的 Integrated Terminal 本质是启动一个子进程(如 bash、zsh 或 pwsh),它依赖宿主窗口生命周期。关闭终端面板、切换工作区甚至重启 VSCode,都会终止该进程。它不保存 shell 状态、作业控制、后台任务,也不提供会话命名、共享、重连等能力。
- 你看到的「多个终端标签」只是并行运行的独立进程,不是同一个会话的多个视图
-
Ctrl+Shift+`新开终端 = 新启一个bash进程,和前一个完全无关 - 无法在断网后重连、无法在另一台机器上恢复当前调试中的
node进程或docker-compose up日志流
替代方案:用 tmux + VSCode 终端实现会话复用
最务实的做法是在 VSCode 终端里运行 tmux,把复用逻辑交给它,VSCode 只负责渲染。
- 安装
tmux(macOS:brew install tmux;Ubuntu:sudo apt install tmux;Windows WSL 同理) - 在 VSCode 终端中执行
tmux new -s dev创建命名会话 - 用
Ctrl+b c开新窗格,Ctrl+b "分屏,Ctrl+b d脱离会话,tmux attach -t dev重新进入 - 即使关闭整个 VSCode,只要 WSL/Linux/macOS 系统没重启,
tmux会话仍在后台运行
注意:Windows 原生 CMD/PowerShell 不支持 tmux,需搭配 WSL 或使用 wezterm+tmux 组合;VSCode 的 terminal.integrated.defaultProfile.* 设置可将默认终端设为 WSL。
VSCode 自带功能里最接近“多路”的其实是终端组(Terminal Groups)
虽然不能复用会话,但可以批量管理多个终端实例,适合固定协作流:
- 右键终端标签 →
Split Terminal,生成同类型的新终端(共享工作目录,但仍是独立进程) - 终端下拉菜单 →
Create Terminal Group(需 VSCode 1.85+),可为一组终端统一命名、一起重命名、一起关闭 - 快捷键
Ctrl+Shift+5(Windows/Linux)或Cmd+Shift+5(macOS)快速切换终端组 - 配置
"terminal.integrated.enablePersistentSessions": true可在重启 VSCode 后自动恢复终端标签(但不会恢复进程状态,比如vim会退出,npm run dev需手动重跑)
真正需要会话持久化时,别指望 VSCode 终端自己扛;tmux 或 screen 是经过几十年验证的方案,VSCode 只需当个好显示器——这点常被忽略,结果花半天调 settings.json 却解决不了进程消失的问题。










