如何清除整个终端(PowerShell)

问题描述 投票:0回答:2

我有一个问题。在powershell中使用clear或cls命令只会清除终端的可见部分,我想知道如何清除整个终端?

我顺便用了VSCode。

powershell terminal visual-studio-code
2个回答
59
投票

tl;博士

  • 问题是关于在Visual Studio Code集成终端中清除both屏幕和回滚缓冲区下一个部分解决了这个问题。

  • 要在常规控制台/终端/Windows终端中清除屏幕和回滚缓冲区:

    • WindowsLinux上:使用
      Clear-Host
      (其别名是
      cls
      ,仅在Windows上,也是
      clear
      ;在Linux和macOS上,
      clear
      指的是外部
      /usr/bin/clear
      实用程序,它具有仅在 Linux 上具有相同的效果)。
    • macOS上:执行
      "`e[2J`e[3J`e[H"
      (或
      printf '\033[2J\033[3J\033[H'
      )。

要同时清除回滚缓冲区,而不仅仅是 Visual Studio Code 的集成终端 中终端可见部分,请使用以下方法之一:

  • 使用命令面板

    • Ctrl+Shift+P 并键入
      tclear
      以匹配
      Terminal: Clear
      命令,然后按 Enter
  • 使用集成终端的上下文菜单

    • 右键单击终端并从上下文菜单中选择
      Clear
    • Windows上,您可能必须先启用集成终端的上下文菜单,因为默认情况下右键单击pastes剪贴板中的文本:
      打开设置(Ctrl+,)并将设置
      terminal.integrated.rightClickBehavior
      更改为
      default
      selectWord
      (后者在显示上下文菜单之前选择光标下的单词)。
  • 从集成终端内部使用键盘快捷键(当前为 VSCode v1.71):

    • macOS上,默认存在快捷方式Cmd+K
    • LinuxWindows上,您可以定义一个类似的自定义键绑定Ctrl+K,如下所示,通过直接编辑文件
      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 终端 中的回滚缓冲区。)


0
投票

右键单击 powershell 按钮, 然后选择清除, 当您在命令窗口中时,键入“clear”命令以清除终端窗口。

© www.soinside.com 2019 - 2024. All rights reserved.