如何清除整个终端(PowerShell)

g52tjvyc  于 2023-03-02  发布在  Shell
关注(0)|答案(2)|浏览(390)

我遇到了一个问题。在powershell中使用clear或cls命令只清除终端的可见部分,我想知道如何清除整个终端?
顺便说一下,我使用VSCode。

w1jd8yoj

w1jd8yoj1#

    • 若要同时清除 * 回滚缓冲区 *,而不仅仅是Visual Studio Code的集成终端中的终端**的 * 可见部分 *,请使用以下方法之一:
  • 使用***命令调色板***:
  • 按Ctrl + Shift + P并输入tclear以匹配Terminal: Clear命令,然后按Enter
  • 使用集成终端的 * 上下文菜单*:
  • 在端子中单击鼠标右键,然后从关联菜单中选择"Clear"。
  • Windows上,您可能必须首先启用集成终端的上下文菜单,因为默认情况下右键单击 * 粘贴 * 剪贴板中的文本:

打开设置(Ctrl+,)并将设置terminal.integrated.rightClickBehavior更改为defaultselectWord(后者在显示上下文菜单之前选择光标下的单词)。

  • 从集成终端内部使用***键盘快捷键***(VSCode v1.71的当前版本):
  • 在 * macOS * 上,* 默认情况下 * 存在一个快捷方式:命令+K
  • 在 * Linux * 和 * Windows * 上,您可以定义类似的自定义键绑定,Ctrl + K,如下所示,方法是直接编辑文件keybindings.json(命令调色板中的命令Preferences: Open Keyboard Shortcuts (JSON)),并将以下对象放入现有数组([ ... ])中:
{
    "key": "ctrl+k",
    "command": "workbench.action.terminal.clear",
    "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
}
    • 使用 * 命令 ,您可以从集成终端中的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-Hostcls)还是. NET的[Console]::Clear()都没有清除滚动缓冲区--它们都只清除了 * 一个屏幕 *。
  • 打印以下ANSI控制序列:'\e[2J\e[3J\e[H'\e代表电子稳定控制字符(0x1b27);例如,从bashprintf '\e[2J\e[3J\e[H';从PowerShell:"e[2Je[3Je[H"`
  • 您可以轻松地将此调用 Package 在shell脚本中,以便从任何shell中使用:在系统的PATH变量中列出的目录中创建一个名为cclear的文件,然后使用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'
      • 窗口**:
  • 据我所知没有解决方案:cmd.exe的内部cls命令和PowerShell的内部Clear-Host命令仅清除集成终端中的 * 一个screenfull *(不包括滚动缓冲区-即使它们也 * 在常规控制台窗口 * 和 * Windows终端 * 中执行后者)。
  • 不幸的是,在macOS("e[2Je[3Je[H"或Windows PowerShell,"$([char]27)[2J$([char]27)[3J$([char]27)[H"`)上工作的转义序列是 * 不 * 有效的:在Windows上,它只清除 * 一个屏幕 *。
  • (相比之下,所有这些方法 * 确实 * 也会清除 * 常规控制台窗口 * 和 * Windows终端 * 中的回滚缓冲区。)
8ehkhllq

8ehkhllq2#

右键单击powershell按钮,然后选择清除,当你在命令窗口,键入“清除”命令,清除终端窗口.

相关问题