我有一个问题。在powershell中使用clear或cls命令只会清除终端的可见部分,我想知道如何清除整个终端?
我顺便用了VSCode。
tl;博士
问题是关于在Visual Studio Code的集成终端中清除both屏幕和回滚缓冲区,下一个部分解决了这个问题。
要在常规控制台/终端/Windows终端中清除屏幕和回滚缓冲区:
Clear-Host
(其别名是cls
,仅在Windows上,也是clear
;在Linux和macOS上,clear
指的是外部/usr/bin/clear
实用程序,它具有仅在 Linux 上具有相同的效果)。"`e[2J`e[3J`e[H"
(或printf '\033[2J\033[3J\033[H'
)。要同时清除回滚缓冲区,而不仅仅是 Visual Studio Code 的集成终端 中终端的可见部分,请使用以下方法之一:
使用命令面板:
tclear
以匹配 Terminal: Clear
命令,然后按 Enter使用集成终端的上下文菜单:
Clear
。terminal.integrated.rightClickBehavior
更改为default
或selectWord
(后者在显示上下文菜单之前选择光标下的单词)。从集成终端内部使用键盘快捷键(当前为 VSCode v1.71):
keybindings.json
(来自命令面板的命令Preferences: Open Keyboard Shortcuts (JSON)
),并放置现有数组中的以下对象 ([ ... ]
):{
"key": "ctrl+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
}
使用 command 您可以从 shell 在集成终端中调用:
注意:真正的跨平台解决方案需要从 shell 执行 VSCode-internal
workbench.action.terminal.clear
命令,但我不知道该怎么做/如果可能的话 - 如果您知道请告诉我们.
Linux(至少在 Ubuntu 上观察到):
使用标准的
clear
实用程序(/usr/bin/clear
),它也会清除回滚缓冲区。
在 PowerShell 中,您还可以使用
Clear-Host
或其内置别名 cls
。
[Console]::Clear()
不清除回滚缓冲区,只清除一屏。macOS:
不幸的是,无论是
/usr/bin/clear
还是 PowerShell 的 Clear-Host
(cls
) 和 .NET 的 [Console]::Clear()
都不会清除回滚缓冲区——它们都只清除了 一屏。
打印以下 ANSI 控制序列:
'\e[2J\e[3J\e[H'
(\e
表示 ESC 字符。(0x1b
,27
);例如,来自 bash
:printf '\e[2J\e[3J\e[H'
;来自 PowerShell:"`e[2J`e[3J`e[H"
您可以轻松地将此调用包装在 shell 脚本中以供从任何 shell 使用:在系统的
cclear
变量中列出的目录中创建一个名为 PATH
的文件,然后使用 chmod a+x
使其可执行;然后将以下内容保存到其中:
#!/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:
我知道的没有解决方案:
cmd.exe
的内部cls
命令和PowerShell的内部Clear-Host
命令仅在集成终端中清除一屏(不包括回滚缓冲区-即使它们也这样做后者在常规控制台窗口和Windows终端)。
不幸的是,适用于 macOS 的转义序列(
"`e[2J`e[3J`e[H"
或者,对于 Windows PowerShell,"$([char]27)[2J$([char]27)[3J$([char]27)[H"
)是不有效的:在 Windows 上它只会清除一屏。
(相比之下,所有这些方法 do 还清除了 常规控制台窗口 和 Windows 终端 中的回滚缓冲区。)
右键单击 powershell 按钮, 然后选择清除, 当您在命令窗口中时,键入“clear”命令以清除终端窗口。