Terminal: Clear Scrollback 是 VSCode 中唯一真正清空终端滚动缓冲区(含所有日志、堆栈、流输出)的原生命令,不终止进程、不影响 shell 历史,需聚焦目标终端后通过 Ctrl+Shift+P 调用。

Terminal: Clear Scrollback 是唯一真正清历史输出的命令
VSCode 终端里按 clear、cls 或 Ctrl+L 都不重置历史输出——它们只是把旧内容“推到视图外”,鼠标一滚全回来。Terminal: Clear Scrollback 才是 VSCode 原生命令中唯一能彻底抹掉滚动缓冲区(含所有 console.log、报错堆栈、tail -f 流)的方案。
执行方式:Ctrl+Shift+P(macOS 用 Cmd+Shift+P)→ 输入 Terminal: Clear Scrollback → 回车。它不终止进程、不重置工作目录、不影响 shell 的 history,只动渲染层的输出缓存。
- 必须先聚焦目标终端 tab,否则对其他 tab 无效
- 和
Terminal: Clear不同:后者在旧版 VSCode 中等价于Ctrl+K,但新版本已明确区分——Clear只清当前可视区 + 滚动历史,Clear Scrollback才是全量清空 - 如果终端卡在阻塞状态(如
git pull未完成),需先Ctrl+C中断再执行
shell 命令历史(↑/↓ 键回溯)和终端输出历史是两回事
很多人混淆“终端里滚上去能看到的旧日志”和“按 ↑ 键能调出的上一条命令”。前者归 VSCode 渲染缓冲区管,后者完全由底层 shell(bash/zsh/PowerShell)控制,VSCode 不参与存储或同步。
所以:Terminal: Clear Scrollback 对 ↑/↓ 历史毫无影响;反过来,history -c 或删 ~/.bash_history 也清不掉终端里已经刷出来的 console.log。
- PowerShell 用户:确保
PSReadLine已加载(检查$PROFILE是否含Import-Module PSReadLine),否则 ↑ 只回溯极短几条 - zsh 用户:确认
~/.zshrc含export HISTSIZE=5000和INC_APPEND_HISTORY,否则历史不落盘 - VSCode 启动终端时若带
-NoProfile参数(常见于自定义 profile 配置),shell 历史模块根本不会初始化
大量日志后内存没释放?关终端 + 删 Cache 目录 + 重启 VSCode
滚动缓冲区数据存在前端内存里,跑过 tail -f 或连续 console.log 后,可能吃掉几百 MB。此时仅执行 Terminal: Clear Scrollback 是视觉清零,内存仍被占着。
真释放得三步走:
- 关闭所有终端 tab(点垃圾桶图标)
- 执行
Terminal: Clear Scrollback(清残留) - 手动删 Cache 目录:
Windows:Remove-Item $env:APPDATA\Code\Cache\* -Recurse -Force
macOS:rm -rf ~/Library/Application\ Support/Code/Cache/*
Linux:rm -rf ~/.config/Code/Cache/* - 最后必须重启 VSCode —— Cache 是启动时加载的,不清完不生效
别信 reset / printf '\033c' / clear -x 这类“高级清屏”
这些命令依赖 shell 解析 ANSI 序列,在 VSCode 的 xterm.js 渲染器下行为不稳定:可能只闪一下、颜色错乱、光标失灵,甚至让终端假死,尤其在 WSL 或远程 SSH 场景下更明显。
reset 会尝试重置终端类型和状态,而 VSCode 终端不是原生 TTY;printf '\033c' 发送的是全屏重置序列,xterm.js 实现不一致;clear -x(某些发行版扩展)在 VSCode 里根本不识别。
- 唯一可靠路径是走 VSCode 主进程控制:用
Terminal: Clear Scrollback或绑定快捷键到workbench.action.terminal.clearScrollback - 自定义快捷键时,别用
Ctrl+L绑定这个命令——它在 bash/zsh 里默认是行内编辑快捷键,容易冲突;推荐用Ctrl+Alt+K这类冷门组合 - 如果用了终端 multiplexer(如 tmux),
Terminal: Clear Scrollback只清最外层,内部 pane 历史还得靠 tmux 自己的clear-history
真正清掉终端历史输出,关键不在 shell,而在 VSCode 对 xterm.js 缓冲区的直接控制权。多数人卡在第一步:以为 clear 是清历史,其实它连“遮盖”都算不上彻底——滚动缓冲区还在那儿,等着你一滚就复活。


















