powershell PSReadline热键不向上一个命令历史记录输入命令?

2hh7jdfx  于 2023-03-30  发布在  Shell
关注(0)|答案(1)|浏览(210)

这是我不断发现自己需要的东西。
例如,我通过Set-PSReadLineKeyHandler定义了一个“宏”:

Set-PSReadLineKeyHandler -Chord F3 -ScriptBlock {
  [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()            #clear the current buffer first
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert('Clear-Host')    #Insert Clear-Host
  [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()            #Execute buffer
}

它本质上是一种非常快速的清除终端的方法。出现的问题是,如果我按下Up箭头,Clear-Host将被拉起,这就是F3宏输入的内容。
我需要像[Microsoft.PowerShell.PSConsoleReadLine]::DontInsertIntoHistory()这样的东西,这样我就可以排除Clear-host登录到历史记录中。
谢谢!

5f0d552i

5f0d552i1#

你可以直接调用Clear-Host,这样就不会出现在命令历史中:

Set-PSReadLineKeyHandler -Chord F3 -ScriptBlock {
  Clear-Host
  [Microsoft.PowerShell.PSConsoleReadLine]::Insert('')
}

注:

  • 需要[Microsoft.PowerShell.PSConsoleReadLine]::Insert('')来使 prompt string 重新出现。
  • 奇怪的是,如果光标在终端窗口的第一行时按F3键,这将不起作用-但如果您在第一行,无论如何都没有很好的理由清除屏幕。

相关问题