code runner插件启用clear previous output可自动清屏;tasks.json中用"clear": true实现可靠清屏;shell配置中的clear无效。

Code Runner插件启用Clear Previous Output
如果你用 Ctrl+Alt+N 或右键“Run Code”执行脚本,最省事的清屏方式就是靠 Code Runner 插件本身支持的开关。它不依赖 shell、不拼接命令、也不触发缓冲区残留——直接调用 VSCode 原生的 Terminal: Clear 行为。
打开设置(Ctrl+, ),搜 Code-runner: Clear Previous Output,勾选即可。注意三点:
- 只对 Code Runner 启动的终端生效,不影响你手动打开的其他 terminal tab
- 它清的是整个滚动缓冲区,不是视觉欺骗(区别于
clear命令) - 若同时用了 Python Debugger 或 tasks.json 自定义任务,这个设置不对其起作用
tasks.json 中配置 "clear": true
自定义构建或运行流程时,想在真正执行命令前清屏,唯一可靠写法是用 tasks.json 的 presentation.clear 字段。这不是 shell 层面的 clear,而是 VSCode 主进程识别后主动调用 UI 清屏逻辑。
示例片段:
{
"label": "run-python",
"type": "shell",
"command": "python",
"args": ["main.py"],
"presentation": {
"echo": false,
"reveal": "always",
"clear": true
}
}
关键点:
-
"clear": true必须写在presentation对象里,且不能和problemMatcher同级混放 - 不能写成
"command": "clear && python main.py"——这只会让 shell 执行clear,历史仍可滚 - 若多个 task 都需要,建议单独定义一个
clear-terminaltask,再用dependsOn引入
为什么 .bashrc 里加 clear 没用
很多用户习惯在 ~/.bashrc 末尾写 clear,指望新终端一开就干净。但在 VSCode 里,这基本无效。
原因很实在:
- VSCode 默认启动的是 non-login shell,根本不会读取
~/.bashrc(除非你额外配了"terminal.integrated.shellArgs.linux": ["--login"]) - 即使读取了,
clear发送的只是 ANSI 序列(如\033[2J),xterm.js 渲染层只滚动画面,缓冲区内容毫发无损 - 某些 alias(比如
alias cls='printf "\033c"')在 WSL 或远程 SSH 下解析不稳定,有时闪一下、有时完全没反应
Ctrl+K 是唯一真清屏快捷键
所有所谓“自动”方案,本质都是妥协或视觉欺骗。唯一跨平台、跨 shell、不重启进程、能真正丢弃滚动缓冲区的操作,就是手动按 Ctrl+K(Windows/Linux)或 Cmd+K(macOS)。
这不是“清屏幕”,而是 Terminal: Clear Scrollback——VSCode 前端直接清掉 xterm.js 实例里的全部历史行。
高频调试时建议:
- 把
Ctrl+K练成肌肉记忆,比等插件加载快得多 - 配合
"terminal.integrated.scrollback": 1000设置,防止单个终端缓存爆炸拖慢响应 - 如果嫌切换 tab 麻烦,直接关掉当前 terminal(
Ctrl+Shift+T),再点 + 新建——彻底干净,还不用担心信号传递被干扰
真正的难点不在怎么清,而在于接受:VSCode 终端的历史管理由前端渲染层负责,shell 进程无权决定缓冲区是否保留。任何绕过主进程、指望终端自己“擦干净”的尝试,最终都会卡在那看不见但始终存在的滚动缓冲区上。











