tl;dr
-
The question is about clearing both the screen and the scrollback buffer in the integrated terminal of Visual Studio Code, and the next section addresses that.
- Update: While the commands built into the shells used to not clear the scrollback buffer too, as of Visual Studio Code v1.86 they do – see the last section for details.
-
To clear both the screen and the scrollback buffer in a regular console / terminal / in Windows Terminal:
- On Windows and Linux: Use
Clear-Host
(whose aliases arecls
and on Windows only, alsoclear
; on Linux and macOS,clear
refers to the external/usr/bin/clear
utility, which has the same effect on Linux only). - On macOS: Execute
Write-Host -NoNewLine "`e[2J`e[3J`e[H"
from PowerShell, orprintf '\033[2J\033[3J\033[H'
from POSIX-compatible shells; in PowerShell 7.4+ on macOS 14+ (Sonoma or higher),[Console]::Clear()
works now too.
- On Windows and Linux: Use
To also clear the scrollback buffer, not just the visible portion of the terminal in Visual Studio Code’s integrated terminal, use one of the following methods:
-
Caveat: The following methods do not play nicely with PowerShell (both editions, up to at least v7.4.1; other shells seem to be fine): Even though clearing works fine, PowerShell is then confused about the cursor position when the next command is typed – this problem has been reported in GitHub issue #19479.
-
Use the command palette:
- Press Ctrl+Shift+P and type
tclear
to match theTerminal: Clear
command and press Enter
- Press Ctrl+Shift+P and type
-
Use the integrated terminal’s context menu:
- Right-click in the terminal and select
Clear
from the context menu. - On Windows, you may have to enable the integrated terminal’s context menu first, given that by default right-clicking pastes text from the clipboard:
Open the settings (Ctrl+,) and change settingterminal.integrated.rightClickBehavior
to eitherdefault
orselectWord
(the latter selects the word under the cursor before showing the context menu).
- Right-click in the terminal and select
-
Use a keyboard shortcut from inside the integrated terminal (current as of v1.71 of VSCode):
-
On macOS, a shortcut exists by default: Cmd+K
-
On Linux and Windows, you can define an analogous custom key binding, Ctrl+K, as follows, by directly editing file
keybindings.json
(commandPreferences: Open Keyboard Shortcuts (JSON)
from the command palette), and placing the following object inside the existing array ([ ... ]
):
-
{
"key": "ctrl+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
}
Using a command you can invoke from a shell in the integrated terminal:
Note: A truly cross-platform solution would require executing the VSCode-internal workbench.action.terminal.clear
command directly from a shell, but I don’t know how to do that / if it is possible at all – do tell us if you know.
-
Linux (at least as observed on Ubuntu):
-
Use the standard
clear
utility (/usr/bin/clear
), which also clears the scrollback buffer. -
From PowerShell, you may also use
Clear-Host
(which calls/usr/bin/clear
) or its built-in alias,cls
. -
[Console]::Clear()
clears the scrollback buffer too, but only in PowerShell 7.4+ (.NET 8+).
-
-
macOS:
-
As of at least macOS Sonoma (14+)
/usr/bin/clear
now does appear to clear the scrollback buffer too in VS Code (though, curiously, still not in regular terminals), and therefore also PowerShell’sClear-Host
, which calls it behind the scenes. -
On macOS Sonoma (14+) and PowerShell 7.4+ / .NET 8
[Console]::Clear()
now works too. -
Alternatively, on older versions, print the following ANSI control sequence:
'\e[2J\e[3J\e[H'
(\e
represents the ESC char. (0x1b
,27
); e.g., frombash
:printf '\e[2J\e[3J\e[H'
; from PowerShell:Write-Host -NoNewLine "`e[2J`e[3J`e[H"
-
You can easily wrap this call in a shell script for use from any shell: create a file named, say,
cclear
, in a directory listed in your system’sPATH
variable, then make it executable withchmod a+x
; then save the following content to it:#!/bin/bash # Clears the terminal screen *and the scrollback buffer*. # (Needed only on macOS, where /usr/bin/clear doesn't do the latter.) printf '\e[2J\e[3J\e[H'
-
-
Windows:
-
As of Visual Studio Code v1.86.1, the standard commands –
cls
incmd.exe
andClear-Host
/cls
in PowerShell – do also clear the scrollback buffer (they didn’t use to), but doing so comes with bugs in the integrated terminal:-
In
cmd.exe
, and in PowerShell (Core) (observed in v7.4.1) when run inside the PIC (the PowerShell Integrated Console, a special-purpose shell for developing PowerShell code via the PowerShell extension), one line is unexpectedly retained in the scrollback buffer. -
Additionally, in PowerShell (Core) (observed in v7.4.1), also when running as a regular shell, the shell-integration decorations aren’t reliably cleared (the marks to the left and right (scrollbar) of the terminal).
-
By contrast, Windows PowerShell (at least when running as a stand-alone shell) does not seem to have these problems.
-
-
As a workaround for the current bugs, you can override
Clear-Host
as follows (using the same ANSI/VT escape sequences that work on macOS and Linux too; place it in your$PROFILE
file):function Clear-Host { Write-Host -NoNewLine "$([char]27)[2J$([char]27)[3J$([char]27)[H" }
-