VSCode中Ctrl+L默认绑定“滚动到顶部”而非清屏,真正一键清空终端(含滚动缓冲区)的命令是Terminal: Clear,需手动绑定快捷键;clear/cls仅推光标、不删历史,因xterm.js不重置滚动缓冲区。

VSCode 里按 Ctrl+L 没反应,不是你键盘坏了,是它默认根本没绑定清屏功能。 真正能一键彻底清空终端(含滚动缓冲区)的原生命令叫 Terminal: Clear,但 VSCode 默认没给它配快捷键——得你自己加。
为什么 clear 和 cls 只是“假清屏”
你在终端里敲 clear(Linux/macOS)或 cls(Windows),只是把光标推到顶部、用空行盖住旧内容。历史输出还牢牢躺在滚动缓冲区里,鼠标一滚就全回来了。这不是终端卡,是设计如此——Shell 层面的清屏只管显示,不管内存。
-
clear发的是 ANSI 序列\033[2J\033[H,只重绘当前视口 -
reset或printf '\033c'在 VSCode 终端里常失效,尤其在 WSL 下可能卡住或丢颜色 - 这些命令都依赖 shell 解析,而 VSCode 终端底层是 xterm.js,不是原生 TTY,兼容性差
真正清空缓冲区:用 Terminal: Clear 命令
这个命令由 VSCode 主进程直接控制终端实例,会清掉可视区 + 整个滚动缓冲区,不重启进程、不中断运行中的脚本,比任何 shell 命令都干净可靠。
- 手动触发:按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Terminal: Clear回车 - 只对「当前激活的终端 tab」生效,多个终端时得先点进去再执行
- 它不依赖当前 shell 类型(Bash/Zsh/PowerShell/cmd),也不受工作目录或权限影响
把 Terminal: Clear 绑定到 Ctrl+L(安全覆盖)
想用 Ctrl+L 清屏可以,但得手动覆盖。VSCode 默认把 Ctrl+L 绑给了「滚动到顶部」,这个功能日常极少用,且 Bash/Zsh 的行内 Ctrl+L 在 VSCode 终端里本来就不触发(xterm.js 不透传),所以覆盖几乎无副作用。
- 打开快捷键设置:
Ctrl+K Ctrl+S(macOS 是Cmd+K Cmd+S) - 右上角点「+」新增快捷键 → 命令栏搜
workbench.action.terminal.clear→ 选中它 - 按下
Ctrl+L(或Cmd+L)作为新快捷键 → 提示冲突时点「替换」 - 保存后,在任意终端 tab 按
Ctrl+L就秒清——注意:仅对 VSCode 内置终端生效
最易忽略的一点:自定义快捷键只作用于 VSCode 终端,不影响系统原生 Terminal.app 或 iTerm2;如果你开了多个终端 tab,Terminal: Clear 不会批量清理,必须确保目标 tab 处于激活状态。


















