相当于Ctrl + R的Powershell吗?


13

在bash中,我可以执行Ctrl+ R并开始键入命令以使其搜索我的历史记录。

如何在Powershell中做到这一点?

有没有办法将键绑定到类似的东西?

function GH($str) {get-history | select-string $str}

但是我需要为每个字符输入重新读取字符串,或者将其删除以输出匹配的命令,例如Ctrl+ R

这可能吗?

Answers:


11

您可以通过采用PSReadLine模块来解决此问题。

看到有关“嗨,脚本专家”文章!关于此bash的博客启发了PowerShell的readline实现。

特别是Ctrl+ Alt+(Shift)+?的用法。显示所有键绑定。

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10240.16384
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10240.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

Ctrl+R

PS C:\> Get-Module -ListAvailable
bck-i-search: mo_

Ctrl+ Alt+(Shift)+S

Key                  Function                 Description
---                  --------                 -----------
Ctrl+r               ReverseSearchHistory     Search history backwards interactively
Ctrl+s               ForwardSearchHistory     Search history forward interactively

简而言之:手动安装此模块或升级到Windows PowerShell v5。


5

输入您的搜索词,然后按F8,这将搜索您的命令历史记录。

有PowerShell的快捷方式的一个非常有用的列表在这里


你自己尝试过吗?它从来没有真正为我工作,或者只有一半时间。例如,我键入了一堆get- <whatever>命令。然后键入get- <F8>,它只能循环浏览历史记录中的一两个随机命令吗?我不知道它在做什么。例如,我只是键入get-childitem并运行它,然后在键入get-c <f8>之后立即运行,但我什么也没得到。也许我的会议搞砸了?
red888

对我来说100%的时间有效,这是安装了WMF 5的结果
Sam Cogan

5

我不知道何时添加它,但是在我的非自定义,更新的Windows 10中,它是内置的。按ctrl + r进行反向历史搜索,效果很好。

在此处输入图片说明


我也致力于win10。Ctrl + R在Powershell中有效,但在cmd窗口中无效。
dudu

可以,但是为什么需要使用cmd.exe?
劳尔·萨利纳斯-蒙塔古多

0

在F7键下还有图形搜索。按下时将显示弹出窗口,您可以滚动该弹出窗口来搜索先前执行的命令。在光标悬停时按Enter键将再次执行该行。


0

您还可以通过在要查找的命令的部分搜索文本之前放置#字符来启动命令,然后再点按(如有必要,请多次单击)以搜索会话历史记录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.