terminal: clear 是唯一真正清空滚动缓冲区的操作,它由 vscode 主进程直接重置终端实例,彻底清除可视区及所有可滚动历史行,不重启进程、不丢环境变量,仅对当前聚焦的集成终端 tab 生效。

Terminal: Clear 是唯一真正清空滚动缓冲区的操作
VSCode 里敲 clear 或按 Ctrl+L 只是把光标推到顶部、用空行“盖住”旧输出,历史内容全在滚动缓冲区里——你往上滚鼠标就能看到。真想彻底抹掉所有输出(包括可滚动历史),必须绕过 shell,用 VSCode 自己的终端控制逻辑。
Terminal: Clear 命令由 VSCode 主进程直接重置当前终端实例,不依赖 shell 解析,也不发 ANSI 序列,能彻底清除可视区 + 所有可滚动历史行。它不重启进程、不丢环境变量、后台任务(比如 npm run dev)照常运行。
- 只对当前聚焦的集成终端 tab 生效,多个 tab 时得先点进去再执行
- 调试控制台(Debug Console)完全不响应这个命令,它有自己的右键清除或
⇧⌘K/Ctrl+K - 比
reset安全:后者在 WSL 下容易假死或颜色错乱 - 比
printf '\033c'可靠:xterm.js 对全屏重置序列支持不稳定,尤其远程 SSH 或 Windows Terminal 里常没反应
如何把 Terminal: Clear 绑定到 Ctrl+L(安全覆盖方案)
VSCode 默认没给 Terminal: Clear 配快捷键,但你可以自己加,避免每次打开命令面板。注意:Ctrl+L 在 VSCode 里默认绑定的是「滚动到顶部」,不是清屏;Bash/Zsh 中的 Ctrl+L 是 shell 层的行内刷新命令,两者语义冲突——VSCode 主动避开了这个键位,防止用户按了没反应或反应错位。
想用 Ctrl+L 清屏可以,但得手动覆盖:
- 打开快捷键设置:
Ctrl+K Ctrl+S(Windows/Linux)或Cmd+K Cmd+S(macOS) - 右上角点「+」新增快捷键,命令栏输入
workbench.action.terminal.clear,选中它 - 按下
Ctrl+L(Windows/Linux)或Cmd+L(macOS)作为新快捷键 - 如果提示“已有命令绑定”,点击「替换」即可(VSCode 默认只把它绑给「滚动到顶部」,无副作用)
保存后,在任意终端 tab 按 Ctrl+L 就能秒清——但该快捷键仅对 VSCode 内置终端生效,不影响系统原生 Terminal.app 或 iTerm2。
Code Runner 插件开启 Clear Previous Output 最省事
如果你习惯用 Ctrl+Alt+N 或右键 “Run Code” 执行脚本,这个设置能自动在每次运行前调用 Terminal: Clear,清掉整个缓冲区,不是视觉遮盖。
- 打开设置(
Ctrl+,),搜Code-runner: Clear Previous Output,勾选即可 - 仅影响 Code Runner 启动的终端会话,不影响你手动打开的其他 tab
- 对 Python/JavaScript/C++ 等所有语言都生效,无需改配置文件
- 若没生效,检查是否启用了
code-runner.runInTerminal(设为true),否则它走的是只读输出面板,不走终端
tasks.json 里加 "clear": true 才算真正可靠
别在 command 里拼 "clear && python main.py"——这只会让 shell 执行一个 ANSI 序列,历史还在缓冲区里,而且可能干扰 Ctrl+C 信号。
在 .vscode/tasks.json 的某个 task 中,加一行:"presentation": { "clear": true }
-
"clear": true必须和command、problemMatcher同级,不能嵌套进options或args - 想统一清屏?单独定义一个
type: "shell"的清屏 task,再让其它 task 的dependsOn引用它 - 别信 shell 配置里的
clear或alias cls=clear:VSCode 默认启动的是 non-login shell,根本不会读~/.bashrc或~/.zshrc;即使强行配了terminal.integrated.shellArgs: ["--login"],也只对新打开的 tab 生效,不影响已复用的终端
终端历史太多导致卡顿或输入延迟时,Terminal: Clear Scrollback 比 Terminal: Clear 更激进——它强制丢弃所有已缓冲的历史行(包括尚未滚动到的、可能已达数千行的旧输出),清完内存占用会立刻下降。但日常调试,Terminal: Clear 已足够,别一上来就用 Scrollback,容易误删刚跑完的关键日志。











