VSCode终端历史输出被截断是因默认terminal.integrated.scrollback值仅1000行,超出后旧内容环形覆盖;建议设为5000–10000(日常)或20000(调试),修改后需新开终端生效。

terminal.integrated.scrollback 设置值太小,历史输出被截断
VSCode 终端默认只保留 1000 行滚动历史,一旦命令输出超过这个数(比如跑一个长日志的 python -u app.py 或 npm run build),最上面的内容就会被自动丢弃。这不是 bug,是缓冲区满后环形覆盖的正常行为。
直接改配置项 terminal.integrated.scrollback 就能解决。它控制的是内存中缓存的“可滚动行数”,不是显示区域高度。
- 推荐值范围:日常开发设为
5000–10000;调试长任务可设到20000 - 上限是
2147483647(2³¹−1),但不建议设太高——每行平均占几百字节,设成百万行可能吃掉几 GB 内存 - 修改后新开终端生效,已打开的终端不会动态刷新该设置
通过 Settings UI 修改 terminal.integrated.scrollback 最快
图形界面改法适合所有系统,也最不容易出错:
- 快捷键
Ctrl + ,(Windows/Linux)或Cmd + ,(Mac)打开设置 - 在搜索框输入
terminal scrollback - 找到
Terminal > Integrated: Scrollback选项,点击右侧数字编辑框 - 输入目标值(如
9999),回车确认
这个操作会自动写入你的 settings.json,无需手动找文件。如果想确认是否生效,可以右上角点“打开设置(JSON)”看看有没有新增或覆盖了 "terminal.integrated.scrollback": 9999 这一行。
直接编辑 settings.json 更可控,也方便同步配置
有些用户偏好版本化管理 VSCode 配置,或者需要批量部署,这时直接改 JSON 更合适:
- 打开
settings.json(可通过设置页右上角“打开设置(JSON)”进入) - 添加或修改字段:
"terminal.integrated.scrollback": 10000 - 注意:不要加逗号结尾(如果它是最后一项),避免 JSON 解析失败
- 保存后,新终端立即应用该值;旧终端仍用启动时的旧配置
如果你用多工作区,且希望只对当前项目生效,可以把这一行放进工作区级的 .vscode/settings.json,而不是全局用户设置。
光调大 scrollback 不够?还要防 stdout 缓冲导致“看不见实时输出”
有时你发现即使把 scrollback 设得很大,终端还是“卡住不刷日志”,往上滚也看不到刚输出的内容——这往往不是缓冲区问题,而是程序自身输出被全缓冲(fully buffered)卡住了。
- Python 脚本加
-u参数:python -u script.py,强制行缓冲 - Linux/macOS 下用
stdbuf包裹命令:stdbuf -oL -eL your-command(-oL表示 stdout 行缓冲,-eL同理 stderr) - Node.js 可加
--no-buffered-output(v20.10+)或设置环境变量NODE_OPTIONS=--no-buffered-output - 注意:这些是运行时干预,和
scrollback是两个层面的问题——前者决定“内容何时发出”,后者决定“发出后能留多久”
真正复杂的场景(比如持续数小时输出 GB 级日志的服务),单靠调大 scrollback 并不可靠。这时候应该配合重定向到文件(your-command > output.log 2>&1),再用 VSCode 内置的文件查看器或插件搜索,才能确保不丢关键信息。


















