PAYATHON 2026

如何让 VS Code 终端的 cls 清除滚动历史?

技术问小赵

结论

可以在当前 shell 中把 cls 定义为一个发送终端控制序列的函数,让它尝试清除屏幕和滚动历史。VS Code 集成终端会由终端模拟器处理这些序列,其中 CSI 3 J 用来清除滚动区域。实际效果取决于终端是否支持该序列。

普通的 cls 或 clear 通常只清除当前显示区域,之前的命令仍可能出现在滚动历史中。VS Code 将终端滚动历史和当前屏幕内容分别处理。

Bash 或 Zsh

在 shell 配置文件中加入以下内容,例如写入 ~/.bashrc 或 ~/.zshrc:

cls() {
  printf '\033[3J\033[2J\033[H'
}

保存后,重新加载对应的配置文件,或新开一个终端,然后运行 cls。函数会依次发送清除滚动区域、清除屏幕,以及将光标移到左上角的控制序列。

PowerShell

在 PowerShell 配置文件中加入:

function Clear-Host {
    [Console]::Write("$([char]27)[3J$([char]27)[2J$([char]27)[H")
}

PowerShell 中,cls 是 Clear-Host 的别名。定义同名函数后,运行 cls 就会调用这个函数。若只在当前会话中定义,关闭终端后设置就会失效。要长期使用,请将函数写入 PowerShell 配置文件 $PROFILE,再重新打开终端。

注意事项

如果运行后仍能看到旧内容,当前 shell 或终端模拟器可能没有按预期处理 CSI 3 J。VS Code 的 terminal.integrated.scrollback 设置可以限制保留的历史行数,但它只控制历史容量,不能让 cls 清除已有的滚动历史。由于没有说明操作系统和 shell,请选择相应的配置示例,并在当前终端中确认效果。

备注:内容仅供参考。