惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
月光博客
月光博客
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
罗磊的独立博客
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
量子位
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
博客园 - 聂微东
V
V2EX

阿尔的代码屋 | 全栈技术笔记

VoxCPM2 多语言语音合成与声音克隆本地部署 | 阿尔的代码屋 MiniMax-H3 NF4 视音频联合生成模型本地部署与调试 | 阿尔的代码屋 ShareX 联动 Antigravity 自动化记录与跨环境管道构建 | 阿尔的代码屋 国内搜索引擎收录实战:百度与头条搜索接入、无备案验证绕行与自动化推送 - 独立博客 SEO 与 GEO 03 | 阿尔的代码屋 技术博客工程化治理与 WebP 自动化质量门禁 - Hexo 博客建站与优化实战 05 | 阿尔的代码屋 Hexo NexT 静态资源本地自托管、KaTeX 公式渲染与移动端适配 - Hexo 博客建站与优化实战 04 | 排坑笔记 | 阿尔的代码屋 把 VS Code 打造成 Git 终极编辑器、Diff 与 Merge 利器 - Git 避坑与工作流 04 | 排坑笔记 | 阿尔的代码屋 告别架构图看不清:Hexo NexT 8.x 本地化集成 Fancybox 5 高清灯箱实战 | 开发日志 | 阿尔的代码屋 Hexo new 日期无法自动生成且出现 object Object 报错根治 | 排坑笔记 | 阿尔的代码屋 IndexNow 毫秒级主动推送与全站语义拓扑网格 - 独立博客 SEO 与 GEO 02 | 架构实战 | 阿尔的代码屋 从拦截 AI 爬虫到成为大模型答案源 - 独立博客 SEO 与 GEO 01 | 架构实战 | 阿尔的代码屋 Chrome 扩展开发与上架全流程实战避坑 - 开发技巧 | 阿尔的代码屋 在 WSL2 环境下部署 Pixal3D 的从零实战与全流程排雷日志 | 阿尔的代码屋 在 Android Termux 环境下安装 Hermes Agent 的踩坑与完美解决实践 开发日志| 阿尔的代码屋 VS Code 连接 WSL 精确每 10 分钟掉线 排坑笔记 | 阿尔的代码屋 Android 模拟器代理联网与 No Internet WiFi 锁死排坑笔记 | 阿尔的代码屋 [object Object] Flutter 本地通知实现排坑实录 - Android inexactAllowWhileIdle 调度策略与测试方案全解析 | 阿尔的代码屋 typing_extensions 有用(四):使用 TypeIs 替代危险的 cast,做最严谨的类型收窄 | 阿尔的代码屋 GoRouter 结合 Isar 运行 Widget 测试并发/粘性线程死锁卡死排坑笔记 | 阿尔的代码屋 typing_extensions 有用(三):使用 Unpack 结合 TypedDict 给 **kwargs 装上透视眼 | 阿尔的代码屋 typing_extensions 有用(二):使用 @override 打造重构代码时的“防呆神器” | 阿尔的代码屋 Flutter 并发测试踩坑实录 - IsarCore 动态库下载冲突与 Widget 测试 HTTP 拦截全链路解决 | 阿尔的代码屋 typing_extensions 有用(一):使用 Self 终结继承时的类型推断灾难 | 阿尔的代码屋 基于 Cloudflare Pages 的纯前端 WebAssembly 应用自动化部署实践 | 开发日志 | 阿尔的代码屋 基于 VS Code 远程开发的 GPU Docker 容器自动清理方案实践 开发日志| 阿尔的代码屋 Patrol iOS 集成测试排坑实录 - xcodebuild exit code 70 全链路解决 | 阿尔的代码屋 Flutter E2E 测试从 integration_test 迁移到 Patrol - 实践笔记 | 阿尔的代码屋 Linux/macOS 下 micromamba 报错 Shard Index not available 与极度卡顿 排坑笔记 | 阿尔的代码屋 critical libmamba Shell not initialized micromamba报错 subprocess 无法修改父 Shell - 排坑笔记 | 阿尔的代码屋
VS Code 终端日志被截断?两项配置彻底解锁完整输出与会话持...
Algieba · 2026-09-02 · via 阿尔的代码屋 | 全栈技术笔记

1. 现象与复现

在 VS Code 集成终端中执行长构建(如 Docker build、前端打包)或海量单元测试时,输出容易超出默认行数限制。主要在两个场景下表现为日志丢失:

  1. 运行时截断:终端产生超过 1000 行输出时,超出部分自动从顶部丢弃,滑到最顶部也无法查看最初的环境输出或报错根因。
  2. 重载窗口丢失:执行 Developer: Reload Window 或重启 VS Code 后,终端虽然支持会话恢复,但默认仅保留最近 100 行输出,更早的历史记录被直接丢弃。

2. 核心参数与机制解析

VS Code 的终端缓冲区分为活跃运行态和窗口持久化两个独立阶段:

配置项默认值作用阶段说明
terminal.integrated.scrollback1000运行时终端活跃时在内存中维护的最大滚动行数,超出部分丢弃
terminal.integrated.persistentSessionScrollback100会话恢复窗口重启或重载时,从持久化会话写回终端的最大行数

默认限制较为保守主要是为了控制 Electron 渲染进程的内存开销,并避免窗口启动时回填海量文本导致卡顿。现代开发机内存普遍充足,适度调大即可解决问题。

3. 配置方法

方式一:修改 settings.json(推荐)

打开命令面板(Ctrl + Shift + P / Cmd + Shift + P),选择 Preferences: Open User Settings (JSON),追加配置:

1
2
3
4
{
"terminal.integrated.scrollback": 10000,
"terminal.integrated.persistentSessionScrollback": 3000
}

保存后对新建终端立即生效。

方式二:通过界面修改

  1. Ctrl + , 打开设置;
  2. 搜索 terminal.integrated.scrollback,修改为 10000
  3. 搜索 terminal.integrated.persistentSessionScrollback,修改为 3000

4. 注意事项

  1. 数值不宜过大:将 scrollback 设为数十万甚至百万行,在多终端并发输出时会明显拉高渲染进程内存,甚至导致终端滚动掉帧。建议常规设置为 10000 ~ 30000 行。
  2. 超大日志重定向到文件:数万行以上的压测或构建日志,建议通过 Shell 重定向结合 tee 输出到文件,避免完全依赖终端缓冲区:
    1
    npm run build 2>&1 | tee build.log
  3. 工作区级隔离:仅希望特定项目生效时,将配置写在项目根目录的 .vscode/settings.json 中即可。